瀏覽代碼

菜单的调整

785834757 7 月之前
父節點
當前提交
6dee5dd24e

+ 26 - 0
commons/src/main/java/com/jzg/commons/entity/po/SysSystemMenu.java

@@ -0,0 +1,26 @@
+package com.jzg.commons.entity.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class SysSystemMenu {
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private String id;
+
+    @TableField(value = "system_code")
+    @Schema(description = "系统code")
+    private String systemCode;
+
+    @TableField(value = "menu_id")
+    @Schema(description = "菜单名称")
+    private String menuId;
+
+}

+ 17 - 0
commons/src/main/java/com/jzg/commons/entity/vo/SystemMenuVo.java

@@ -0,0 +1,17 @@
+package com.jzg.commons.entity.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+@Schema(description = "审核数量VO")
+@Data
+public class SystemMenuVo {
+
+    @Schema(description = "系统code")
+    private String systemCode;
+
+    @Schema(description = "一级菜单id数组")
+    private List<String> menus;
+}

+ 11 - 2
platform/src/main/java/com/jzg/controller/SysMenuController.java

@@ -3,6 +3,7 @@ package com.jzg.controller;
 import com.jzg.commons.core.base.BaseController;
 import com.jzg.commons.core.base.BaseController;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.po.SysMenu;
 import com.jzg.commons.entity.po.SysMenu;
+import com.jzg.commons.entity.vo.SystemMenuVo;
 import com.jzg.commons.util.StringUtils;
 import com.jzg.commons.util.StringUtils;
 import com.jzg.service.SysMenuService;
 import com.jzg.service.SysMenuService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -51,8 +52,8 @@ public class SysMenuController extends BaseController {
 
 
     @GetMapping(value = "/findMenuTree")
     @GetMapping(value = "/findMenuTree")
     public HttpResult findMenuTree() {
     public HttpResult findMenuTree() {
-
-        return HttpResult.ok(sysMenuService.findTree(getUserName(), 0));
+        String systemCode = getSystemCode();
+        return HttpResult.ok(sysMenuService.findTree(systemCode, 0));
     }
     }
 
 
     @GetMapping(value = "/getAllButtons")
     @GetMapping(value = "/getAllButtons")
@@ -60,5 +61,13 @@ public class SysMenuController extends BaseController {
         return HttpResult.ok(sysMenuService.getAllButtons());
         return HttpResult.ok(sysMenuService.getAllButtons());
     }
     }
 
 
+    @GetMapping(value = "/getSystemMenu")
+    public HttpResult getSystemMenu(String systemCode){
+        return HttpResult.ok(sysMenuService.getSystemMenu(systemCode));
+    }
 
 
+    @PostMapping(value = "/saveSystemMenu")
+    public HttpResult saveSystemMenu(@RequestBody SystemMenuVo systemMenuVo){
+        return HttpResult.ok(sysMenuService.saveSystemMenu(systemMenuVo));
+    }
 }
 }

+ 8 - 0
platform/src/main/java/com/jzg/mapper/SysMenuMapper.java

@@ -2,8 +2,16 @@ package com.jzg.mapper;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.jzg.commons.entity.po.SysMenu;
 import com.jzg.commons.entity.po.SysMenu;
+import com.jzg.commons.entity.po.SysSystemMenu;
+import com.jzg.commons.entity.vo.SystemMenuVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Mapper;
 
 
+import java.util.List;
+
 @Mapper
 @Mapper
 public interface SysMenuMapper extends BaseMapper<SysMenu> {
 public interface SysMenuMapper extends BaseMapper<SysMenu> {
+
+    public List<SysMenu> getSystemMenus(String systemCode);
+
+    public List<SysMenu> getSystemMenusRecursion(String systemCode);
 }
 }

+ 9 - 0
platform/src/main/java/com/jzg/mapper/SysSystemMenuMapper.java

@@ -0,0 +1,9 @@
+package com.jzg.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jzg.commons.entity.po.SysSystemMenu;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SysSystemMenuMapper extends BaseMapper<SysSystemMenu> {
+}

+ 6 - 1
platform/src/main/java/com/jzg/service/SysMenuService.java

@@ -3,18 +3,23 @@ package com.jzg.service;
 
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.jzg.commons.entity.po.SysMenu;
 import com.jzg.commons.entity.po.SysMenu;
+import com.jzg.commons.entity.vo.SystemMenuVo;
 
 
 
 
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
 
 
 public interface SysMenuService extends IService<SysMenu> {
 public interface SysMenuService extends IService<SysMenu> {
-    public List<SysMenu> findTree(String userName, int menuType);
+    public List<SysMenu> findTree(String systemCode, int menuType);
 
 
     public List<SysMenu> findByUser(String userName);
     public List<SysMenu> findByUser(String userName);
 
 
     public List<String> getAllButtons();
     public List<String> getAllButtons();
 
 
+    public List<SysMenu> getSystemMenu(String systemCode);
+
+    public Boolean saveSystemMenu(SystemMenuVo systemMenuVo);
+
 
 
 }
 }
 
 

+ 60 - 4
platform/src/main/java/com/jzg/service/impl/SysMenuServiceImpl.java

@@ -5,12 +5,18 @@ import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jzg.commons.entity.po.SysMenu;
 import com.jzg.commons.entity.po.SysMenu;
+import com.jzg.commons.entity.po.SysSystemMenu;
+import com.jzg.commons.entity.vo.SystemMenuVo;
+import com.jzg.commons.util.idgen.IdGenerate;
 import com.jzg.mapper.SysMenuMapper;
 import com.jzg.mapper.SysMenuMapper;
+import com.jzg.mapper.SysSystemMenuMapper;
 import com.jzg.service.SysMenuService;
 import com.jzg.service.SysMenuService;
 import com.jzg.service.SysUserService;
 import com.jzg.service.SysUserService;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.ObjectUtils;
+import org.apache.ibatis.executor.BatchResult;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
@@ -26,12 +32,18 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu>
 
 
     private final SysMenuMapper sysMenuMapper;
     private final SysMenuMapper sysMenuMapper;
 
 
+    private final SysSystemMenuMapper sysSystemMenuMapper;
+
 
 
     @Override
     @Override
-    public List<SysMenu> findTree(String userName, int menuType) {
+    public List<SysMenu> findTree(String systemCode, int menuType) {
         List<SysMenu> sysMenus = new ArrayList<>();
         List<SysMenu> sysMenus = new ArrayList<>();
-
-        List<SysMenu> menus = findByUser(userName);
+        List<SysMenu> menus = new ArrayList<>();
+        if(systemCode.equals("PLATFORM")) {
+            menus = findByUser(systemCode);
+        }else{
+            menus = sysMenuMapper.getSystemMenusRecursion(systemCode);
+        }
         for (SysMenu menu : menus) {
         for (SysMenu menu : menus) {
             if (menu.getParentId() == null || menu.getParentId().equalsIgnoreCase("0")) {
             if (menu.getParentId() == null || menu.getParentId().equalsIgnoreCase("0")) {
                 menu.setLevel(0);
                 menu.setLevel(0);
@@ -46,7 +58,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu>
     }
     }
 
 
     @Override
     @Override
-    public List<SysMenu> findByUser(String userName) {
+    public List<SysMenu> findByUser(String systemCode) {
          LambdaQueryWrapper<SysMenu> lqw = new LambdaQueryWrapper<>();
          LambdaQueryWrapper<SysMenu> lqw = new LambdaQueryWrapper<>();
         lqw.eq(SysMenu::getDelFlag, 0);
         lqw.eq(SysMenu::getDelFlag, 0);
         lqw.eq(SysMenu::getSysType, 1);
         lqw.eq(SysMenu::getSysType, 1);
@@ -65,6 +77,50 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu>
         return perms;
         return perms;
     }
     }
 
 
+
+
+    @Override
+    public List<SysMenu> getSystemMenu(String systemCode) {
+        List<SysMenu> sysMenus = new ArrayList<>();
+        List<SysMenu> menus = sysMenuMapper.getSystemMenus(systemCode);
+//        List<SysMenu> menus = findByUser(userName);
+        for (SysMenu menu : menus) {
+            if (menu.getParentId() == null || menu.getParentId().equalsIgnoreCase("0")) {
+                menu.setLevel(0);
+                if (!exists(sysMenus, menu)) {
+                    sysMenus.add(menu);
+                }
+            }
+        }
+        sysMenus.sort((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum()));
+        findChildren(sysMenus, menus, 1);
+        return sysMenus;
+    }
+
+    @Override
+    @Transactional
+    public Boolean saveSystemMenu(SystemMenuVo systemMenuVo) {
+        // 先删除原先的
+        Long count = sysSystemMenuMapper.selectCount(new LambdaQueryWrapper<SysSystemMenu>()
+                .eq(SysSystemMenu::getSystemCode, systemMenuVo.getSystemCode()));
+        if(count > 0){
+            int delete = sysSystemMenuMapper.delete(new LambdaQueryWrapper<SysSystemMenu>()
+                    .eq(SysSystemMenu::getSystemCode, systemMenuVo.getSystemCode()));
+        }
+
+        List<SysSystemMenu> sysSystemMenus = new ArrayList<>();
+        // 添加
+        systemMenuVo.getMenus().forEach(item->{
+            SysSystemMenu sysSystemMenu = new SysSystemMenu();
+            sysSystemMenu.setId(IdGenerate.nextId());
+            sysSystemMenu.setSystemCode(systemMenuVo.getSystemCode());
+            sysSystemMenu.setMenuId(item);
+            sysSystemMenus.add(sysSystemMenu);
+        });
+        sysSystemMenuMapper.insert(sysSystemMenus);
+        return true;
+    }
+
     private void findChildren(List<SysMenu> SysMenus, List<SysMenu> menus, int menuType) {
     private void findChildren(List<SysMenu> SysMenus, List<SysMenu> menus, int menuType) {
 
 
         for (SysMenu SysMenu : SysMenus) {
         for (SysMenu SysMenu : SysMenus) {

+ 37 - 0
platform/src/main/resources/mapper/SysMenuMapper.xml

@@ -0,0 +1,37 @@
+<?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.jzg.mapper.SysMenuMapper">
+    <select id="getSystemMenus" resultType="com.jzg.commons.entity.po.SysMenu">
+        SELECT
+            sm.*
+        FROM
+            sys_system_menu ssm
+                LEFT JOIN sys_menu sm ON ssm.menu_id = sm.id
+        WHERE
+            ssm.system_code = #{systemCode}
+    </select>
+
+    <select id="getSystemMenusRecursion" resultType="com.jzg.commons.entity.po.SysMenu">
+        WITH RECURSIVE company_tree AS (
+            SELECT
+                sm.*
+            FROM
+                sys_system_menu ssm
+                    LEFT JOIN sys_menu sm ON ssm.menu_id = sm.id
+            WHERE
+                ssm.system_code = #{systemCode}
+
+            UNION ALL
+
+            SELECT
+                sm.*
+            FROM
+                sys_menu sm
+                    INNER JOIN company_tree mt ON sm.parent_id = mt.id
+        )
+        SELECT *
+        FROM company_tree
+        ORDER BY parent_id, id;
+
+    </select>
+</mapper>