|
|
@@ -1,6 +1,9 @@
|
|
|
package com.ctsi.SysMenu.service.impl;
|
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
+import com.ctsi.SysMenu.entity.SysMenuSearchPO;
|
|
|
+import com.ctsi.SysOrg.entity.SysOrgSearchPO;
|
|
|
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
@@ -10,7 +13,10 @@ import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWra
|
|
|
import com.ctsi.SysMenu.entity.SysMenu;
|
|
|
import com.ctsi.SysMenu.mapper.SysMenuMapper;
|
|
|
import com.ctsi.SysMenu.service.SysMenuService;
|
|
|
- /**
|
|
|
+
|
|
|
+import java.util.*;
|
|
|
+
|
|
|
+/**
|
|
|
* 菜单;(sys_menu)表服务实现类
|
|
|
* @author : machaoyi
|
|
|
* @date : 2024-1-10
|
|
|
@@ -19,9 +25,9 @@ import com.ctsi.SysMenu.service.SysMenuService;
|
|
|
public class SysMenuServiceImpl implements SysMenuService{
|
|
|
@Autowired
|
|
|
private SysMenuMapper sysMenuMapper;
|
|
|
-
|
|
|
- /**
|
|
|
- * 通过ID查询单条数据
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 通过ID查询单条数据
|
|
|
*
|
|
|
* @param id 主键
|
|
|
* @return 实例对象
|
|
|
@@ -29,7 +35,7 @@ public class SysMenuServiceImpl implements SysMenuService{
|
|
|
public SysMenu queryById(Long id){
|
|
|
return sysMenuMapper.selectById(id);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* 分页查询
|
|
|
*
|
|
|
@@ -38,9 +44,9 @@ public class SysMenuServiceImpl implements SysMenuService{
|
|
|
* @param size 每页大小
|
|
|
* @return
|
|
|
*/
|
|
|
- public Page<SysMenu> paginQuery(SysMenu sysMenu, long current, long size){
|
|
|
+ public Page<SysMenuSearchPO> paginQuery(SysMenu sysMenu, long current, long size){
|
|
|
//1. 构建动态查询条件
|
|
|
- LambdaQueryWrapper<SysMenu> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ MPJLambdaWrapper<SysMenu> queryWrapper = new MPJLambdaWrapper<>();
|
|
|
if(StrUtil.isNotBlank(sysMenu.getMenuTitle())){
|
|
|
queryWrapper.eq(SysMenu::getMenuTitle, sysMenu.getMenuTitle());
|
|
|
}
|
|
|
@@ -53,17 +59,19 @@ public class SysMenuServiceImpl implements SysMenuService{
|
|
|
if(StrUtil.isNotBlank(sysMenu.getMenuIcon())){
|
|
|
queryWrapper.eq(SysMenu::getMenuIcon, sysMenu.getMenuIcon());
|
|
|
}
|
|
|
+ queryWrapper.orderByAsc("ORDER_BY");
|
|
|
//2. 执行分页查询
|
|
|
- Page<SysMenu> pagin = new Page<>(current , size , true);
|
|
|
- IPage<SysMenu> selectResult = sysMenuMapper.selectPage(pagin , queryWrapper);
|
|
|
+ Page<SysMenuSearchPO> pagin = new Page<>(current , size , true);
|
|
|
+ IPage<SysMenuSearchPO> selectResult = sysMenuMapper.selectJoinPage(pagin , SysMenuSearchPO.class, queryWrapper);
|
|
|
+ selectResult.setRecords(buildTree(selectResult.getRecords()));
|
|
|
pagin.setPages(selectResult.getPages());
|
|
|
pagin.setTotal(selectResult.getTotal());
|
|
|
pagin.setRecords(selectResult.getRecords());
|
|
|
//3. 返回结果
|
|
|
return pagin;
|
|
|
}
|
|
|
-
|
|
|
- /**
|
|
|
+
|
|
|
+ /**
|
|
|
* 新增数据
|
|
|
*
|
|
|
* @param sysMenu 实例对象
|
|
|
@@ -73,8 +81,8 @@ public class SysMenuServiceImpl implements SysMenuService{
|
|
|
sysMenuMapper.insert(sysMenu);
|
|
|
return sysMenu;
|
|
|
}
|
|
|
-
|
|
|
- /**
|
|
|
+
|
|
|
+ /**
|
|
|
* 更新数据
|
|
|
*
|
|
|
* @param sysMenu 实例对象
|
|
|
@@ -105,8 +113,8 @@ public class SysMenuServiceImpl implements SysMenuService{
|
|
|
return sysMenu;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- /**
|
|
|
+
|
|
|
+ /**
|
|
|
* 通过主键删除数据
|
|
|
*
|
|
|
* @param id 主键
|
|
|
@@ -116,4 +124,39 @@ public class SysMenuServiceImpl implements SysMenuService{
|
|
|
int total = sysMenuMapper.deleteById(id);
|
|
|
return total > 0;
|
|
|
}
|
|
|
+ public static List<SysMenuSearchPO> buildTree(List<SysMenuSearchPO> nodeList) {
|
|
|
+ Map<Long, SysMenuSearchPO> nodeMap = new LinkedHashMap<>();
|
|
|
+
|
|
|
+ // 将节点放入 Map 中,方便通过 id 查找
|
|
|
+ for (SysMenuSearchPO node : nodeList) {
|
|
|
+ nodeMap.put(node.getId(), node);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<SysMenuSearchPO> tree = new ArrayList<>();
|
|
|
+
|
|
|
+ // 逐个节点构建树
|
|
|
+ for (SysMenuSearchPO node : nodeList) {
|
|
|
+ if (node.getParentId() == 0) {
|
|
|
+ // 根节点
|
|
|
+ tree.add(buildTreeRecursively(node, nodeMap, node.getId()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return tree;
|
|
|
+ }
|
|
|
+
|
|
|
+ private static SysMenuSearchPO buildTreeRecursively(SysMenuSearchPO parentNode, Map<Long, SysMenuSearchPO> nodeMap, Long parentId) {
|
|
|
+ List<SysMenuSearchPO> children = new ArrayList<>();
|
|
|
+
|
|
|
+ // 查找当前节点的子节点
|
|
|
+ nodeMap.forEach((id, node) -> {
|
|
|
+ if (Objects.equals(node.getParentId(), parentId)) {
|
|
|
+ children.add(buildTreeRecursively(node, nodeMap, node.getId()));
|
|
|
+ }
|
|
|
+ });
|
|
|
+ // 将子节点设置到父节点
|
|
|
+ parentNode.setChildren(children);
|
|
|
+
|
|
|
+ return parentNode;
|
|
|
+ }
|
|
|
}
|