Quellcode durchsuchen

菜单增加是否有权限,并增加部门id和部门名称

dzx vor 1 Jahr
Ursprung
Commit
350dd82091

+ 0 - 2
src/main/java/com/xjrsoft/module/system/controller/MenuController.java

@@ -2,7 +2,6 @@ package com.xjrsoft.module.system.controller;
 
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -45,7 +44,6 @@ import org.springframework.web.bind.annotation.RestController;
 import javax.validation.Valid;
 import javax.validation.constraints.NotNull;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 
 /**

+ 3 - 0
src/main/java/com/xjrsoft/module/system/mapper/XjrMenuDeptRelationMapper.java

@@ -7,6 +7,7 @@ import com.xjrsoft.module.evaluate.dto.EvaluateTemplatePageDto;
 import com.xjrsoft.module.evaluate.vo.EvaluateTemplatePageVo;
 import com.xjrsoft.module.system.dto.XjrMenuDeptRelationPageDto;
 import com.xjrsoft.module.system.entity.XjrMenuDeptRelation;
+import com.xjrsoft.module.system.vo.XjrMentDeptGroupVo;
 import com.xjrsoft.module.system.vo.XjrMenuDeptRelationPageVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -22,4 +23,6 @@ import java.util.List;
 @Mapper
 public interface XjrMenuDeptRelationMapper extends MPJBaseMapper<XjrMenuDeptRelation> {
     Page<XjrMenuDeptRelationPageVo> getPage(Page<XjrMenuDeptRelationPageDto> page,  @Param("list")List<String> list);
+
+    List<XjrMentDeptGroupVo> getMenuDept();
 }

+ 31 - 14
src/main/java/com/xjrsoft/module/system/service/impl/MenuServiceImpl.java

@@ -21,6 +21,7 @@ import com.xjrsoft.module.system.entity.Subsystem;
 import com.xjrsoft.module.system.entity.XjrMenuQuick;
 import com.xjrsoft.module.system.mapper.AuthorizeMapper;
 import com.xjrsoft.module.system.mapper.MenuMapper;
+import com.xjrsoft.module.system.mapper.XjrMenuDeptRelationMapper;
 import com.xjrsoft.module.system.mapper.XjrMenuQuickMapper;
 import com.xjrsoft.module.system.service.IMenuService;
 import com.xjrsoft.module.system.vo.*;
@@ -49,6 +50,8 @@ public class MenuServiceImpl extends MPJBaseServiceImpl<MenuMapper, Menu> implem
 
     private final XjrMenuQuickMapper menuQuickMapper;
 
+    private final XjrMenuDeptRelationMapper menuDeptRelationMapper;
+
     @Override
     public List<MenuVo> getAuthMenuList(MenuTreeDto dto) {
         List<Long> roleIds = getUserRoleIds();
@@ -189,21 +192,35 @@ public class MenuServiceImpl extends MPJBaseServiceImpl<MenuMapper, Menu> implem
             }
             authMenuIdList = authorizeList.stream().map(Authorize::getObjectId).collect(Collectors.toList());
         }
+        List<MenuVo> menuVos = this.selectJoinList(MenuVo.class,
+            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())
+            .eq(ObjectUtil.isNotEmpty(dto.getSystemType()), Menu::getSystemType, dto.getSystemType())
+            .eq(ObjectUtil.isNotEmpty(dto.getDisplay()), Menu::getDisplay, dto.getDisplay())
+            .in(CollectionUtils.isNotEmpty(authMenuIdList), Menu::getId, authMenuIdList)
+            .select(Menu::getId)
+            .select("1 as authorized")
+            .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)
+        );
+        List<XjrMentDeptGroupVo> menuDept = menuDeptRelationMapper.getMenuDept();
+        Map<Long, String> deptNameMap = new HashMap<>();
+        Map<Long, String> deptIdMap = new HashMap<>();
+        for (XjrMentDeptGroupVo deptGroupVo : menuDept) {
+            deptNameMap.put(deptGroupVo.getMenuId(), deptGroupVo.getDeptNames());
+            deptIdMap.put(deptGroupVo.getMenuId(), deptGroupVo.getDeptIds());
+        }
+        for (MenuVo menuVo : menuVos) {
+            menuVo.setDeptId(deptIdMap.get(menuVo.getId()));
+            menuVo.setDeptName(deptNameMap.get(menuVo.getId()));
+        }
 
-        return this.selectJoinList(MenuVo.class,
-                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())
-                        .eq(ObjectUtil.isNotEmpty(dto.getSystemType()), Menu::getSystemType, dto.getSystemType())
-                        .eq(ObjectUtil.isNotEmpty(dto.getDisplay()),Menu::getDisplay, dto.getDisplay())
-                        .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));
+        return menuVos;
     }
 
     /**

+ 4 - 0
src/main/java/com/xjrsoft/module/system/vo/MenuTreeVo.java

@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.fasterxml.jackson.annotation.JsonAutoDetect;
 import com.xjrsoft.common.enums.YesOrNoEnum;
 import com.xjrsoft.common.model.tree.ITreeNode;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -184,4 +185,7 @@ public class MenuTreeVo implements ITreeNode<MenuTreeVo,Long>, Serializable {
         }
         return parentId;
     }
+
+    @ApiModelProperty("是否有权限(1:是 0:否)")
+    private Integer authorized;
 }

+ 9 - 0
src/main/java/com/xjrsoft/module/system/vo/MenuVo.java

@@ -87,4 +87,13 @@ public class MenuVo implements Serializable {
     @ApiModelProperty("是否被选中")
     private Boolean isSelect;
 
+    @ApiModelProperty("是否有权限(1:是 0:否)")
+    private Integer authorized;
+
+    @ApiModelProperty("部门id")
+    private String deptId;
+
+    @ApiModelProperty("部门名称")
+    private String deptName;
+
 }

+ 24 - 0
src/main/java/com/xjrsoft/module/system/vo/XjrMentDeptGroupVo.java

@@ -0,0 +1,24 @@
+package com.xjrsoft.module.system.vo;
+
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 获取菜单树vo
+ * </p>
+ *
+ * @author tzx
+ * @since 2021-09-20
+ */
+@Data
+public class XjrMentDeptGroupVo implements  Serializable {
+
+    private Long menuId;
+
+    private String deptNames;
+
+    private String deptIds;
+}

+ 11 - 0
src/main/resources/mapper/system/XjrMenuDeptRelationMapper.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xjrsoft.module.system.mapper.XjrMenuDeptRelationMapper">
+    <select id="getMenuDept" resultType="com.xjrsoft.module.system.vo.XjrMentDeptGroupVo">
+        SELECT t2.menu_id,GROUP_CONCAT(DISTINCT(t1.name)) as dept_names,GROUP_CONCAT(DISTINCT(t1.id)) as dept_ids  FROM xjr_department t1
+        INNER JOIN xjr_menu_dept_relation t2 ON t1.id = t2.dept_id
+        WHERE t1.delete_mark = 0 GROUP BY t2.menu_id
+    </select>
+</mapper>