|
@@ -1,6 +1,7 @@
|
|
|
package com.xjrsoft.module.system.service.impl;
|
|
package com.xjrsoft.module.system.service.impl;
|
|
|
|
|
|
|
|
import cn.dev33.satoken.stp.StpUtil;
|
|
import cn.dev33.satoken.stp.StpUtil;
|
|
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
@@ -10,6 +11,8 @@ import com.github.yulichang.toolkit.MPJWrappers;
|
|
|
import com.xjrsoft.common.constant.GlobalConstant;
|
|
import com.xjrsoft.common.constant.GlobalConstant;
|
|
|
import com.xjrsoft.common.enums.AuthorizeType;
|
|
import com.xjrsoft.common.enums.AuthorizeType;
|
|
|
import com.xjrsoft.common.enums.EnabledMark;
|
|
import com.xjrsoft.common.enums.EnabledMark;
|
|
|
|
|
+import com.xjrsoft.common.model.tree.ITreeNode;
|
|
|
|
|
+import com.xjrsoft.common.utils.TreeUtil;
|
|
|
import com.xjrsoft.common.utils.VoToColumnUtil;
|
|
import com.xjrsoft.common.utils.VoToColumnUtil;
|
|
|
import com.xjrsoft.module.organization.entity.UserRoleRelation;
|
|
import com.xjrsoft.module.organization.entity.UserRoleRelation;
|
|
|
import com.xjrsoft.module.organization.mapper.UserRoleRelationMapper;
|
|
import com.xjrsoft.module.organization.mapper.UserRoleRelationMapper;
|
|
@@ -20,13 +23,13 @@ import com.xjrsoft.module.system.entity.Subsystem;
|
|
|
import com.xjrsoft.module.system.mapper.AuthorizeMapper;
|
|
import com.xjrsoft.module.system.mapper.AuthorizeMapper;
|
|
|
import com.xjrsoft.module.system.mapper.MenuMapper;
|
|
import com.xjrsoft.module.system.mapper.MenuMapper;
|
|
|
import com.xjrsoft.module.system.service.IMenuService;
|
|
import com.xjrsoft.module.system.service.IMenuService;
|
|
|
|
|
+import com.xjrsoft.module.system.vo.MenuServeVo;
|
|
|
import com.xjrsoft.module.system.vo.MenuTreeVo;
|
|
import com.xjrsoft.module.system.vo.MenuTreeVo;
|
|
|
import com.xjrsoft.module.system.vo.MenuVo;
|
|
import com.xjrsoft.module.system.vo.MenuVo;
|
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.AllArgsConstructor;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
|
|
-import java.util.List;
|
|
|
|
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -68,16 +71,57 @@ public class MenuServiceImpl extends MPJBaseServiceImpl<MenuMapper, Menu> implem
|
|
|
|
|
|
|
|
return this.selectJoinList(MenuVo.class,
|
|
return this.selectJoinList(MenuVo.class,
|
|
|
MPJWrappers.<Menu>lambdaJoin()
|
|
MPJWrappers.<Menu>lambdaJoin()
|
|
|
- .like(StrUtil.isNotBlank(dto.getTitle()), Menu::getTitle, dto.getTitle())
|
|
|
|
|
- .like(StrUtil.isNotBlank(dto.getCode()), Menu::getCode, dto.getCode())
|
|
|
|
|
- .like(StrUtil.isNotBlank(dto.getName()), Menu::getName, dto.getName())
|
|
|
|
|
- // .like(ObjectUtil.isNotEmpty(dto.getEnabledMark()), Menu::getEnabledMark, dto.getEnabledMark())
|
|
|
|
|
- .in(CollectionUtils.isNotEmpty(authMenuIdList), Menu::getId, authMenuIdList)
|
|
|
|
|
- .select(Menu::getId)
|
|
|
|
|
- .selectAs(Subsystem::getName, MenuVo::getSystemName)
|
|
|
|
|
- .select(Menu.class, x -> VoToColumnUtil.fieldsToColumns(MenuTreeVo.class).contains(x.getProperty()))
|
|
|
|
|
- .leftJoin(Subsystem.class, Subsystem::getId, Menu::getSystemId)
|
|
|
|
|
- .eq(Menu::getEnabledMark, EnabledMark.ENABLED.getCode())
|
|
|
|
|
- .orderByAsc(Menu::getSortCode));
|
|
|
|
|
|
|
+ .like(StrUtil.isNotBlank(dto.getTitle()), Menu::getTitle, dto.getTitle())
|
|
|
|
|
+ .like(StrUtil.isNotBlank(dto.getCode()), Menu::getCode, dto.getCode())
|
|
|
|
|
+ .like(StrUtil.isNotBlank(dto.getName()), Menu::getName, dto.getName())
|
|
|
|
|
+ // .like(ObjectUtil.isNotEmpty(dto.getEnabledMark()), Menu::getEnabledMark, dto.getEnabledMark())
|
|
|
|
|
+ .in(CollectionUtils.isNotEmpty(authMenuIdList), Menu::getId, authMenuIdList)
|
|
|
|
|
+ .select(Menu::getId)
|
|
|
|
|
+ .selectAs(Subsystem::getName, MenuVo::getSystemName)
|
|
|
|
|
+ .select(Menu.class, x -> VoToColumnUtil.fieldsToColumns(MenuTreeVo.class).contains(x.getProperty()))
|
|
|
|
|
+ .leftJoin(Subsystem.class, Subsystem::getId, Menu::getSystemId)
|
|
|
|
|
+ .eq(Menu::getEnabledMark, EnabledMark.ENABLED.getCode())
|
|
|
|
|
+ .orderByAsc(Menu::getSortCode));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 查询用户菜单服务
|
|
|
|
|
+ */
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public List<MenuServeVo> getAuthMenuServe() {
|
|
|
|
|
+ List<MenuVo> menuVos = getAuthMenuList(new MenuTreeDto());
|
|
|
|
|
+
|
|
|
|
|
+ Map<Long, MenuServeVo> menuVoMap = new HashMap<>();
|
|
|
|
|
+ List<MenuVo> notParents = new ArrayList<>();
|
|
|
|
|
+
|
|
|
|
|
+ menuVos.forEach((node) -> {
|
|
|
|
|
+ Long parentId = node.getParentId();
|
|
|
|
|
+
|
|
|
|
|
+ //如果在List里面 找不到当前节点的父节点,则当前节点为顶级节点
|
|
|
|
|
+ if (menuVos.stream().noneMatch(x -> StrUtil.equals(x.getId().toString(), String.valueOf(parentId)))) {
|
|
|
|
|
+ if (!menuVoMap.containsKey(node.getSystemId())) {
|
|
|
|
|
+ MenuServeVo ms = new MenuServeVo();
|
|
|
|
|
+ ms.setId(node.getSystemId());
|
|
|
|
|
+ ms.setName(node.getSystemName());
|
|
|
|
|
+ ms.setMenuVoList(new ArrayList<>());
|
|
|
|
|
+ ms.getMenuVoList().add(node);
|
|
|
|
|
+ menuVoMap.put(node.getSystemId(),ms);
|
|
|
|
|
+ }
|
|
|
|
|
+ notParents.add(node);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (!StrUtil.isEmptyIfStr(parentId) || !StrUtil.equals(String.valueOf(parentId), String.valueOf(GlobalConstant.FIRST_NODE_VALUE))) {
|
|
|
|
|
+ menuVos.stream().filter(x -> StrUtil.equals(x.getId().toString(), String.valueOf(parentId)))
|
|
|
|
|
+ .findAny()
|
|
|
|
|
+ .ifPresent(parentNode -> {
|
|
|
|
|
+ System.out.println();
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+// Map<Long, MenuVo> menuVoMap = new HashMap<>();
|
|
|
|
|
+// notParents.forEach((node) -> {
|
|
|
|
|
+//
|
|
|
|
|
+// });
|
|
|
|
|
+ return new ArrayList<>(menuVoMap.values());
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|