package ink.wgink.login.base.util;

import ink.wgink.pojo.dtos.menu.MenuDTO;
import org.apache.commons.lang3.StringUtils;

import java.util.ArrayList;
import java.util.List;

/**
 * @ClassName: MenuUtil
 * @Description: 菜单工具
 * @Author: wanggeng
 * @Date: 2022/5/30 23:29
 * @Version: 1.0
 */
public class MenuUtil {

    public static List<MenuDTO> listSystems(List<MenuDTO> menuDTOS) {
        if (menuDTOS == null || menuDTOS.isEmpty()) {
            return new ArrayList<>();
        }
        List<MenuDTO> menus = new ArrayList<>();
        for (int i = 0; i < menuDTOS.size(); i++) {
            MenuDTO menuDTO = menuDTOS.get(i);
            if (StringUtils.equals(menuDTO.getMenuUrl(), "javascript:void(0);")) {
                continue;
            }
            menus.add(menuDTO);
        }
        removeMenuUrlFirstSlash(menus);
        return menus;
    }

    /**
     * 系统列表（根节点为0的菜单）
     *
     * @param menuDTOS 原菜单
     * @param menuIds  筛选条件
     * @return
     */
    public static List<MenuDTO> listSystems(List<MenuDTO> menuDTOS, List<String> menuIds) {
        if (menuDTOS == null || menuDTOS.isEmpty()) {
            return new ArrayList<>();
        }
        if (menuIds == null || menuIds.isEmpty()) {
            return new ArrayList<>();
        }
        List<MenuDTO> menus = new ArrayList<>();
        for (int i = 0; i < menuDTOS.size(); i++) {
            MenuDTO menuDTO = menuDTOS.get(i);
            if (StringUtils.equals(menuDTO.getMenuUrl(), "javascript:void(0);")) {
                continue;
            }
            boolean isExist = false;
            for (String menuId : menuIds) {
                if (StringUtils.equals(menuDTO.getMenuId(), menuId)) {
                    menus.add(menuDTO);
                    isExist = true;
                    break;
                }
            }
            if (!isExist) {
                menuDTOS.remove(i);
                i--;
            }
        }
        removeMenuUrlFirstSlash(menus);
        return menus;
    }

    /**
     * 删除菜单第一个斜杠
     *
     * @param menuDTOS
     */
    public static void removeMenuUrlFirstSlash(List<MenuDTO> menuDTOS) {
        if (menuDTOS == null) {
            return;
        }
        for (MenuDTO menuDTO : menuDTOS) {
            String menuUrl = menuDTO.getMenuUrl();
            if (menuUrl.startsWith("/")) {
                menuUrl = menuUrl.substring(1);
            }
            menuDTO.setMenuUrl(menuUrl);
        }
    }

}
