forked from gzzfw/backEnd/gz-dyh

wangwh
2024-08-28 b47d4a7accabce974e19d2a1ffb3c5c67507d74b
dyh-service/dyh-cust/src/main/java/cn/huge/module/ctrole/service/CtRolefunService.java
@@ -4,9 +4,14 @@
import cn.huge.base.common.utils.DateUtils;
import cn.huge.base.common.utils.IdUtils;
import cn.huge.module.client.api.impl.UtilsClientImpl;
import cn.huge.module.constant.BaseConsts;
import cn.huge.module.ctrole.dao.mapper.CtRolefunMapper;
import cn.huge.module.ctrole.domain.po.CtRolefun;
import cn.huge.module.ctuser.domain.bo.RoleTreeBO;
import cn.huge.module.cust.constant.UserBaseConsts;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Maps;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import lombok.extern.slf4j.Slf4j;
@@ -17,6 +22,7 @@
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -116,7 +122,7 @@
    */
    public void saveCtRolefun(CtRolefun ctRolefun){
        try{
            Date nowDate = DateUtils.getMowDate();
            Date nowDate = DateUtils.getNowDate();
            // 判断是否新增
            if (IdUtils.checkNewId(ctRolefun.getId())){
                ctRolefun.setId(utilsClient.getNewTimeId());
@@ -130,4 +136,69 @@
        }
    }
    /**
     * 查询角色树形结构
     * @param roleId 角色编号
     * @return List<RoleTreeBO> 树形结构
     */
    public List<RoleTreeBO> getRolefunTree(String roleId){
        //查询所有的关系
        Map<String, Object> terms = Maps.newHashMap();
        terms.put("roleId",roleId);
        List<CtRolefun> rolefuns = mapper.listTerms(terms);
        List<CtRolefun> list = new ArrayList<>();
        List<RoleTreeBO> treeBOS = new ArrayList<>();
        if (rolefuns.size() > 0) {
            //第一级菜单集合
            for (int i = 0; i < rolefuns.size(); i++) {
                // 一级菜单没有parentId
                if (BaseConsts.ROOT.equals(rolefuns.get(i).getParentId())) {
                    list.add(rolefuns.get(i));
                }
            }
            // 为一级菜单设置子菜单,getChild是递归调用的
            for (CtRolefun rolefun : list) {
                RoleTreeBO treeBO = new RoleTreeBO();
                treeBO.setLabel(rolefun.getPowerName());
                treeBO.setValue(rolefun.getPowerId());
                treeBO.setLabelType(rolefun.getPowerType());
                treeBO.setAppClient(rolefun.getAppClient());
                treeBO.setPowerTag(rolefun.getPowerTag());
                treeBO.setPowerUrl(rolefun.getPowerUrl());
                treeBO.setPowerIcon(rolefun.getPowerIcon());
                treeBO.setChildren(getChild(rolefun.getPowerId(), rolefuns));
                treeBOS.add(treeBO);
            }
        }
        return treeBOS;
    }
    /**
     * 递归查找子菜单
     * @param id 当前菜单id
     * @param ctRolefuns 要查找的列表
     * @return List<TreeBO> 树形列表集合
     */
    private List<RoleTreeBO> getChild(String id, List<CtRolefun> ctRolefuns) {
        // 子菜单
        List<RoleTreeBO> childList = new ArrayList<>();
        for (CtRolefun rolefun : ctRolefuns) {
            // 遍历所有节点,将父菜单id与传过来的id比较
            if (StringUtils.isNotBlank(rolefun.getParentId())) {
                if (rolefun.getParentId().equals(id)) {
                    RoleTreeBO roleTree = new RoleTreeBO();
                    roleTree.setLabel(rolefun.getPowerName());
                    roleTree.setValue(rolefun.getPowerId());
                    roleTree.setLabelType(rolefun.getPowerType());
                    roleTree.setAppClient(rolefun.getAppClient());
                    roleTree.setPowerTag(rolefun.getPowerTag());
                    roleTree.setPowerUrl(rolefun.getPowerUrl());
                    roleTree.setPowerIcon(rolefun.getPowerIcon());
                    roleTree.setChildren(getChild(rolefun.getPowerId(), ctRolefuns));
                    childList.add(roleTree);
                }
            }
        }
        return childList;
    }
}