浏览代码

分配菜单,儿子找父亲新增

lyhzzz 3 年之前
父节点
当前提交
cf0189f4ae

+ 3 - 0
src/main/java/com/fdkankan/manage/service/ISysMenuService.java

@@ -6,6 +6,7 @@ import com.fdkankan.common.response.PageInfo;
 import com.fdkankan.manage.entity.SysMenu;
 import com.fdkankan.manage.vo.response.SysMenuVo;
 
+import java.util.HashMap;
 import java.util.List;
 
 /**
@@ -29,4 +30,6 @@ public interface ISysMenuService extends IService<SysMenu> {
     List<SysMenuVo>  getByRoleId(List<Long> menuIds,Long roleId);
 
     List<SysMenu> getButtonByUserId(Long userId);
+
+    HashMap<Long, SysMenu> getByIds(List<Long> menuIds);
 }

+ 13 - 0
src/main/java/com/fdkankan/manage/service/impl/SysMenuServiceImpl.java

@@ -151,4 +151,17 @@ public class SysMenuServiceImpl extends ServiceImpl<ISysMenuMapper, SysMenu> imp
         wrapper.eq(SysMenu::getType,2);
         return this.list(wrapper);
     }
+
+    @Override
+    public HashMap<Long, SysMenu> getByIds(List<Long> menuIds) {
+        HashMap<Long, SysMenu> map = new HashMap<>();
+        if(menuIds.size() >0){
+            LambdaQueryWrapper<SysMenu> wrapper = new LambdaQueryWrapper<>();
+            wrapper.in(SysMenu::getId,menuIds);
+            List<SysMenu> list = this.list(wrapper);
+            list.forEach(entity-> map.put(entity.getId(),entity) );
+        }
+
+        return map;
+    }
 }

+ 16 - 0
src/main/java/com/fdkankan/manage/service/impl/SysRoleMenuServiceImpl.java

@@ -2,12 +2,16 @@ package com.fdkankan.manage.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.manage.entity.SysMenu;
 import com.fdkankan.manage.entity.SysRoleMenu;
 import com.fdkankan.manage.mapper.ISysRoleMenuMapper;
+import com.fdkankan.manage.service.ISysMenuService;
 import com.fdkankan.manage.service.ISysRoleMenuService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 
 /**
@@ -21,6 +25,9 @@ import java.util.List;
 @Service
 public class SysRoleMenuServiceImpl extends ServiceImpl<ISysRoleMenuMapper, SysRoleMenu> implements ISysRoleMenuService {
 
+    @Autowired
+    ISysMenuService sysMenuService;
+
     @Override
     public void deleteByRoleId(Long roleId) {
         LambdaQueryWrapper<SysRoleMenu> wrapper = new LambdaQueryWrapper<>();
@@ -31,6 +38,13 @@ public class SysRoleMenuServiceImpl extends ServiceImpl<ISysRoleMenuMapper, SysR
     @Override
     public void saveBatchByRoleId(Long roleId, List<Long> menuIds) {
         List<SysRoleMenu> sysMenus = new ArrayList<>();
+        HashMap<Long, SysMenu> menuMap = sysMenuService.getByIds(menuIds);
+        for (Long menuId : menuIds) {
+            Long parentId = menuMap.get(menuId).getParentId();
+            if(!menuIds.contains(parentId)){
+                menuIds.add(parentId);
+            }
+        }
         for (Long menuId : menuIds) {
             SysRoleMenu roleMenu = new SysRoleMenu();
             roleMenu.setRoleId(roleId);
@@ -40,6 +54,8 @@ public class SysRoleMenuServiceImpl extends ServiceImpl<ISysRoleMenuMapper, SysR
         this.saveBatch(sysMenus);
     }
 
+
+
     @Override
     public List<SysRoleMenu> getByRoleId(Long roleId) {
         LambdaQueryWrapper<SysRoleMenu> wrapper = new LambdaQueryWrapper<>();