Prechádzať zdrojové kódy

权限菜单分类配置、账号解封接口相关修改

liuyc 3 rokov pred
rodič
commit
d57eda2b5c

+ 6 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/WbsTree.java

@@ -169,4 +169,10 @@ public class WbsTree extends BaseEntity {
      */
     @ApiModelProperty(value = "是否存在表单 '0'否 '1'是")
     private Integer isExistForm;
+
+    /**
+     * 状态
+     */
+    @ApiModelProperty(value = "状态")
+    private Integer status;
 }

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ArchiveTreeController.java

@@ -157,4 +157,5 @@ public class ArchiveTreeController extends BladeController {
     }
 
 
+
 }

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeMapper.java

@@ -41,4 +41,5 @@ public interface ArchiveTreeMapper extends BaseMapper<ArchiveTree> {
     int updateBatch2(@Param("diffRent") List<String> diffRent);
 
     int updateBatch3();
+
 }

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeMapper.xml

@@ -29,6 +29,7 @@
         <result column="remark" property="remark"/>
         <result column="is_upload_file_display_configuration_tree" property="isUploadFileDisplayConfigurationTree"/>
     </resultMap>
+
     <resultMap id="treeNodeResultMap" type="org.springblade.manager.vo.TreeNodeVO2">
         <id column="id" property="id"/>
         <result column="parent_id" property="parentId"/>

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IArchiveTreeService.java

@@ -43,4 +43,5 @@ public interface IArchiveTreeService extends BaseService<ArchiveTree> {
 	List<ArchiveTree> selectByParentIdOrId(String id);
 
     boolean submitDisplayConfigTree(String ids);
+
 }

+ 7 - 7
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -62,8 +62,8 @@ public class WbsTreeContractServiceImpl
 
         if (list.size() > 0) {
             //所有节点+表单Id
-            List<Long> collect = list.stream().map(WbsTreeContract::getId).collect(Collectors.toList());
-            collect1 = collect.stream().map(String::valueOf).collect(Collectors.toList());
+            /*List<Long> collect = list.stream().map(WbsTreeContract::getId).collect(Collectors.toList());
+            collect1 = collect.stream().map(String::valueOf).collect(Collectors.toList());*/
 
             //节点下所有表单Id
             List<WbsTreeContract> collect2 = list.stream().filter(f -> f.getType() == 2).collect(Collectors.toList());
@@ -283,7 +283,7 @@ public class WbsTreeContractServiceImpl
 
     @Override
     public List<WbsTreeContract> searchNodeAllTable(String primaryKeyId, String tableOwner) {
-        //获取当前节点
+        //获取当前节点
         WbsTreeContract wbsTreeContract = baseMapper.selectOne(Wrappers.<WbsTreeContract>query().lambda()
                 .eq(WbsTreeContract::getPKeyId, primaryKeyId));
         if (wbsTreeContract == null) {
@@ -293,7 +293,7 @@ public class WbsTreeContractServiceImpl
         //获取当前用户角色与表单所属方关系信息
         List<WbsTableOwnerRole> wbsTableOwnerRoleList = baseMapper.selectWbsTableOwnerRoleList(AuthUtil.getUser().getRoleId());
         if (wbsTableOwnerRoleList.size() == 0) {
-            throw new ServiceException("当前用户未授权,请先分配角色查看元素表相对应的权限");
+            throw new ServiceException("当前用户角色未授权,请先分配角色查看元素表相对应的权限");
         }
 
         //获取tableOwnerNumber
@@ -302,15 +302,15 @@ public class WbsTreeContractServiceImpl
         List<String> tableOwnerList = null;
         if (StringUtils.isNotEmpty(tableOwner)) {
             String tableOwners = "";
-            if (tableOwner.equals("1")) { //此处加载字典owner_type 固定写死 施工质检=1 2 3
+            if (tableOwner.equals("1")) { //此处加载字典owner_type 固定写死 施工质检1=1 2 3
                 tableOwners = "1,2,3";
-            } else if (tableOwner.equals("2")) { //监理抽检=4 5 6
+            } else if (tableOwner.equals("2")) { //监理抽检2=4 5 6
                 tableOwners = "4,5,6";
             }
             tableOwnerList = Func.toStrList(tableOwners);
         }
 
-        //获取当前节点下表单
+        //根据tableOwnerList、tableOwnerNumber 获取当前节点下表单
         List<WbsTreeContract> wbsTreeContractList = baseMapper.selectWbsTreeContractList(tableOwnerNumbers, wbsTreeContract.getProjectId(),
                 wbsTreeContract.getWbsId(), wbsTreeContract.getContractId(), wbsTreeContract.getId()
                 , wbsTreeContract.getContractIdRelation(), tableOwnerList);

+ 46 - 24
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -506,6 +506,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                     wbsTreeZi.setProjectNodeId(wbsTree1.getProjectNodeId());
                     //新增节点返回 未创建成功为wbsTree对象、成功为null
                     WbsTree wbsTree = importTree(wbsTreeZi);
+
                     if (wbsTree == null) {
                         //后置赋值
                         Long id = wbsTreeZi.getId();
@@ -573,7 +574,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
     }
 
 
-    //采用批量新增 TODO
+    //采用批量新增 默认排序 TODO
     private boolean importExcel2(ArrayList<Map<String, String>> result, WbsTree wbsTreeFu, WbsTree wbsTree1) {
         //解析list-map
         List<WbsTree> allNodeData = new ArrayList<>();
@@ -594,24 +595,22 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                     //构建参数
                     WbsTree wbsTree = buildTreeNode(wbsTreeZi, allNodeData, wbsTreeFu);
 
-                    if (wbsTree.getStatus() != null && wbsTree.getStatus() == 1) {
+                    System.out.println("status : " + wbsTree.getStatus());
+
+                    if (wbsTree.getStatus() != null) {
                         //构建成功
                         System.out.println("构建成功: === " + wbsTree);
 
-                        wbsTreeFu.setParentId(wbsTree.getId());
-                        wbsTreeFu.setAncestors(wbsTree.getAncestors());
-
-                        allNodeData.add(wbsTree);
+                        wbsTreeFu = wbsTree;
 
+                        System.out.println("构建成功: === 重新赋值wbsFu " + wbsTreeFu);
 
                     } else {
                         //构建失败 相同节点参数跳过
                         System.out.println("构建失败: === 遇到相同的跳过了");
-                        wbsTreeFu.setParentId(wbsTree.getId());
-                        wbsTreeFu.setAncestors(wbsTree.getAncestors());
-
                     }
 
+
                 }
             }
         }
@@ -625,20 +624,31 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
     }
 
     private WbsTree buildTreeNode(WbsTree wbsTreeZi, List<WbsTree> allNodeData, WbsTree wbsTreeFu) {
-        List<WbsTree> wbsTrees = null;
+        List<WbsTree> wbsTrees = new ArrayList<>();
         //判断节点名称是否重复
         if (allNodeData.size() > 0) {
-            wbsTrees = allNodeData.stream().filter(f -> f.getWbsId().equals(wbsTreeZi.getWbsId()))
+            /*wbsTrees = allNodeData.stream().filter(f -> f.getWbsId().equals(wbsTreeZi.getWbsId()))
                     .filter(f -> f.getDeptName().equals(wbsTreeZi.getDeptName()))
                     .filter(f -> f.getDeptCategory().equals(wbsTreeZi.getDeptCategory()))
                     .filter(f -> f.getProjectNodeId().equals(wbsTreeZi.getProjectNodeId()))
                     .filter(f -> !f.getAncestors().equals(wbsTreeZi.getAncestors())
-                    ).collect(Collectors.toList());
+                    ).collect(Collectors.toList());*/
+
+            for (WbsTree tree : allNodeData) {
+                if (tree.getDeptName().equals(wbsTreeZi.getDeptName())
+                        && tree.getDeptCategory().equals(wbsTreeZi.getDeptCategory())
+                        && tree.getProjectNodeId().equals(wbsTreeZi.getProjectNodeId())
+                        && !tree.getAncestors().equals(wbsTreeZi.getAncestors())) {
+                    wbsTrees.add(tree);
+                }
+            }
+
         }
 
+
         //不重复 直接新增
-        if (wbsTrees == null) {
-            System.out.println("方法执行到111111");
+        if (wbsTrees.size() == 0) {
+            System.out.println("方法执行到111111 不重复节点,直接新增了");
 
             wbsTreeZi.setStatus(1);
             wbsTreeZi.setType(1);
@@ -651,24 +661,30 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             StringBuilder stringBuffer = new StringBuilder();
             StringBuilder appendStr = stringBuffer.append(",").append(wbsTreeZi.getParentId());
             wbsTreeZi.setAncestors(wbsTreeZi.getAncestors() + appendStr);
+
             System.out.println("wbsTreeZi 1 : " + wbsTreeZi);
 
-            return wbsTreeZi;
+            allNodeData.add(wbsTreeZi);
+
+            wbsTreeFu.setParentId(wbsTreeZi.getId());
+            wbsTreeFu.setAncestors(wbsTreeZi.getAncestors());
+
+            return wbsTreeFu;
 
         } else {
 
             //重复 判断是否为同一父节点,相同父节点跳过,不同新增
             for (WbsTree tree : wbsTrees) {
-                //判断2 3 4 5 6级节点类型的名称是否重复,可根据实际情况更改控制的层级
+                //判断2 3 4 5 6级节点类型的名称是否重复,可根据实际情况更改控制的层级
                 /*if (wbsTreeZi.getDeptCategory() == 2 || wbsTreeZi.getDeptCategory() == 3 || wbsTreeZi.getDeptCategory() == 4
-                        || wbsTreeZi.getDeptCategory() == 5 || wbsTreeZi.getDeptCategory() == 6) {*/
-
+                        || wbsTreeZi.getDeptCategory() == 5 || wbsTreeZi.getDeptCategory() == 6) {
+                */
                 System.out.println("存在的节点 " + tree.getDeptName() + " parentID " + tree.getParentId());
                 System.out.println("当前子节点 " + wbsTreeZi.getDeptName() + " parentID " + wbsTreeZi.getParentId());
 
                 if (!wbsTreeZi.getParentId().equals(tree.getParentId()) && wbsTreeZi.getDeptName().equals(tree.getDeptName())) {
 
-                    System.out.println("方法执行到222222");
+                    System.out.println("方法执行到222222遇到重复名称,但不同级的节点");
                     wbsTreeZi.setStatus(1);
                     wbsTreeZi.setType(1);
                     wbsTreeZi.setMajorDataType(0);
@@ -681,16 +697,22 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                     StringBuilder appendStr = stringBuffer.append(",").append(wbsTreeZi.getParentId());
                     wbsTreeZi.setAncestors(wbsTreeZi.getAncestors() + appendStr);
                     System.out.println("wbsTreeZi 2 : " + wbsTreeZi);
-                    return wbsTreeZi;
+
+                    allNodeData.add(wbsTreeZi);
+
+                    wbsTreeFu.setParentId(wbsTreeZi.getId());
+                    wbsTreeFu.setAncestors(wbsTreeZi.getAncestors());
+
+                    return wbsTreeFu;
 
                 }
-                //}
+                //  }
             }
         }
 
-        System.out.println("方法执行到333333");
-        System.out.println("wbsTreeZi 3 : " + wbsTreeZi);
-        return wbsTreeZi;
+        System.out.println("方法执行到333333,遇到重复节点跳过了");
+        System.out.println("wbsTreeZi 3 : " + wbsTreeFu);
+        return wbsTreeFu;
 
     }
 

+ 226 - 205
blade-service/blade-system/src/main/java/org/springblade/system/controller/MenuController.java

@@ -43,8 +43,11 @@ import org.springframework.web.bind.annotation.*;
 import springfox.documentation.annotations.ApiIgnore;
 
 import javax.validation.Valid;
+import java.lang.reflect.Array;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 import static org.springblade.core.cache.constant.CacheConstant.MENU_CACHE;
 
@@ -61,226 +64,244 @@ import static org.springblade.core.cache.constant.CacheConstant.MENU_CACHE;
 @Api(value = "菜单", tags = "菜单")
 public class MenuController extends BladeController {
 
-	private final IMenuService menuService;
-	private final ITopMenuService topMenuService;
+    private final IMenuService menuService;
+    private final ITopMenuService topMenuService;
 
-	/**
-	 * 详情
-	 */
-	@GetMapping("/detail")
-	@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
-	@ApiOperationSupport(order = 1)
-	@ApiOperation(value = "详情", notes = "传入menu")
-	public R<MenuVO> detail(Menu menu) {
-		Menu detail = menuService.getOne(Condition.getQueryWrapper(menu));
-		return R.data(MenuWrapper.build().entityVO(detail));
-	}
+    /**
+     * 详情
+     */
+    @GetMapping("/detail")
+    @PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "详情", notes = "传入menu")
+    public R<MenuVO> detail(Menu menu) {
+        Menu detail = menuService.getOne(Condition.getQueryWrapper(menu));
+        return R.data(MenuWrapper.build().entityVO(detail));
+    }
 
-	/**
-	 * 列表
-	 */
-	@GetMapping("/list")
-	@ApiImplicitParams({
-		@ApiImplicitParam(name = "code", value = "菜单编号", paramType = "query", dataType = "string"),
-		@ApiImplicitParam(name = "name", value = "菜单名称", paramType = "query", dataType = "string")
-	})
-	@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
-	@ApiOperationSupport(order = 2)
-	@ApiOperation(value = "列表", notes = "传入menu")
-	public R<List<MenuVO>> list(@ApiIgnore @RequestParam Map<String, Object> menu) {
-		List<Menu> list = menuService.list(Condition.getQueryWrapper(menu, Menu.class).lambda().orderByAsc(Menu::getSort));
-		return R.data(MenuWrapper.build().listNodeVO(list));
-	}
+    /**
+     * 列表
+     */
+    @GetMapping("/list")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "code", value = "菜单编号", paramType = "query", dataType = "string"),
+            @ApiImplicitParam(name = "name", value = "菜单名称", paramType = "query", dataType = "string")
+    })
+    @PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "列表", notes = "传入menu")
+    public R<List<MenuVO>> list(@ApiIgnore @RequestParam Map<String, Object> menu) {
+        List<Menu> list = menuService.list(Condition.getQueryWrapper(menu, Menu.class).lambda().orderByAsc(Menu::getSort));
+        return R.data(MenuWrapper.build().listNodeVO(list));
+    }
 
-	/**
-	 * 懒加载列表
-	 */
-	@GetMapping("/lazy-list")
-	@ApiImplicitParams({
-		@ApiImplicitParam(name = "code", value = "菜单编号", paramType = "query", dataType = "string"),
-		@ApiImplicitParam(name = "name", value = "菜单名称", paramType = "query", dataType = "string")
-	})
-	@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
-	@ApiOperationSupport(order = 3)
-	@ApiOperation(value = "懒加载列表", notes = "传入menu")
-	public R<List<MenuVO>> lazyList(Long parentId, @ApiIgnore @RequestParam Map<String, Object> menu) {
-		List<MenuVO> list = menuService.lazyList(parentId, menu);
-		return R.data(MenuWrapper.build().listNodeLazyVO(list));
-	}
+    /**
+     * 懒加载列表
+     */
+    @GetMapping("/lazy-list")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "code", value = "菜单编号", paramType = "query", dataType = "string"),
+            @ApiImplicitParam(name = "name", value = "菜单名称", paramType = "query", dataType = "string")
+    })
+    @PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+    @ApiOperationSupport(order = 3)
+    @ApiOperation(value = "懒加载列表", notes = "传入menu")
+    public R<List<MenuVO>> lazyList(Long parentId, @ApiIgnore @RequestParam Map<String, Object> menu) {
+        List<MenuVO> list = menuService.lazyList(parentId, menu);
+        return R.data(MenuWrapper.build().listNodeLazyVO(list));
+    }
 
-	/**
-	 * 菜单列表
-	 */
-	@GetMapping("/menu-list")
-	@ApiImplicitParams({
-		@ApiImplicitParam(name = "code", value = "菜单编号", paramType = "query", dataType = "string"),
-		@ApiImplicitParam(name = "name", value = "菜单名称", paramType = "query", dataType = "string")
-	})
-	@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
-	@ApiOperationSupport(order = 4)
-	@ApiOperation(value = "菜单列表", notes = "传入menu")
-	public R<List<MenuVO>> menuList(@ApiIgnore @RequestParam Map<String, Object> menu) {
-		List<Menu> list = menuService.list(Condition.getQueryWrapper(menu, Menu.class).lambda().eq(Menu::getCategory, 1).orderByAsc(Menu::getSort));
-		return R.data(MenuWrapper.build().listNodeVO(list));
-	}
+    /**
+     * 菜单列表
+     */
+    @GetMapping("/menu-list")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "code", value = "菜单编号", paramType = "query", dataType = "string"),
+            @ApiImplicitParam(name = "name", value = "菜单名称", paramType = "query", dataType = "string")
+    })
+    @PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+    @ApiOperationSupport(order = 4)
+    @ApiOperation(value = "菜单列表", notes = "传入menu")
+    public R<List<MenuVO>> menuList(@ApiIgnore @RequestParam Map<String, Object> menu) {
+        List<Menu> list = menuService.list(Condition.getQueryWrapper(menu, Menu.class).lambda().eq(Menu::getCategory, 1).orderByAsc(Menu::getSort));
+        return R.data(MenuWrapper.build().listNodeVO(list));
+    }
 
-	/**
-	 * 懒加载菜单列表
-	 */
-	@GetMapping("/lazy-menu-list")
-	@ApiImplicitParams({
-		@ApiImplicitParam(name = "code", value = "菜单编号", paramType = "query", dataType = "string"),
-		@ApiImplicitParam(name = "name", value = "菜单名称", paramType = "query", dataType = "string")
-	})
-	@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
-	@ApiOperationSupport(order = 5)
-	@ApiOperation(value = "懒加载菜单列表", notes = "传入menu")
-	public R<List<MenuVO>> lazyMenuList(Long parentId, @ApiIgnore @RequestParam Map<String, Object> menu) {
-		List<MenuVO> list = menuService.lazyMenuList(parentId, menu);
-		return R.data(MenuWrapper.build().listNodeLazyVO(list));
-	}
+    /**
+     * 懒加载菜单列表
+     */
+    @GetMapping("/lazy-menu-list")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "code", value = "菜单编号", paramType = "query", dataType = "string"),
+            @ApiImplicitParam(name = "name", value = "菜单名称", paramType = "query", dataType = "string")
+    })
+    @PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+    @ApiOperationSupport(order = 5)
+    @ApiOperation(value = "懒加载菜单列表", notes = "传入menu")
+    public R<List<MenuVO>> lazyMenuList(Long parentId, @ApiIgnore @RequestParam Map<String, Object> menu) {
+        List<MenuVO> list = menuService.lazyMenuList(parentId, menu);
+        return R.data(MenuWrapper.build().listNodeLazyVO(list));
+    }
 
-	/**
-	 * 新增或修改
-	 */
-	@PostMapping("/submit")
-	@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
-	@ApiOperationSupport(order = 6)
-	@ApiOperation(value = "新增或修改", notes = "传入menu")
-	public R submit(@Valid @RequestBody Menu menu) {
-		if (menuService.submit(menu)) {
-			CacheUtil.clear(MENU_CACHE);
-			CacheUtil.clear(MENU_CACHE, Boolean.FALSE);
-			// 返回懒加载树更新节点所需字段
-			Kv kv = Kv.create().set("id", String.valueOf(menu.getId()));
-			return R.data(kv);
-		}
-		return R.fail("操作失败");
-	}
+    /**
+     * 新增或修改
+     */
+    @PostMapping("/submit")
+    @PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+    @ApiOperationSupport(order = 6)
+    @ApiOperation(value = "新增或修改", notes = "传入menu")
+    public R submit(@Valid @RequestBody Menu menu) {
+        if (menuService.submit(menu)) {
+            CacheUtil.clear(MENU_CACHE);
+            CacheUtil.clear(MENU_CACHE, Boolean.FALSE);
+            // 返回懒加载树更新节点所需字段
+            Kv kv = Kv.create().set("id", String.valueOf(menu.getId()));
+            return R.data(kv);
+        }
+        return R.fail("操作失败");
+    }
 
 
-	/**
-	 * 删除
-	 */
-	@PostMapping("/remove")
-	@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
-	@ApiOperationSupport(order = 7)
-	@ApiOperation(value = "删除", notes = "传入ids")
-	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
-		CacheUtil.clear(MENU_CACHE);
-		CacheUtil.clear(MENU_CACHE, Boolean.FALSE);
-		return R.status(menuService.removeMenu(ids));
-	}
+    /**
+     * 删除
+     */
+    @PostMapping("/remove")
+    @PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+    @ApiOperationSupport(order = 7)
+    @ApiOperation(value = "删除", notes = "传入ids")
+    public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+        CacheUtil.clear(MENU_CACHE);
+        CacheUtil.clear(MENU_CACHE, Boolean.FALSE);
+        return R.status(menuService.removeMenu(ids));
+    }
 
-	/**
-	 * 前端菜单数据
-	 */
-	@GetMapping("/routes")
-	@ApiOperationSupport(order = 8)
-	@ApiOperation(value = "前端菜单数据", notes = "前端菜单数据")
-	public R<List<MenuVO>> routes(BladeUser user, Long topMenuId,String sysType) {
-		List<MenuVO> list = menuService.routes((user == null) ? null : user.getRoleId(), topMenuId,sysType);
-		return R.data(list);
-	}
+    /**
+     * 前端菜单数据
+     */
+    @GetMapping("/routes")
+    @ApiOperationSupport(order = 8)
+    @ApiOperation(value = "前端菜单数据", notes = "前端菜单数据")
+    public R<List<MenuVO>> routes(BladeUser user, Long topMenuId, String sysType) {
+        List<MenuVO> list = menuService.routes((user == null) ? null : user.getRoleId(), topMenuId, sysType);
+        return R.data(list);
+    }
 
-	/**
-	 * 前端按钮数据
-	 */
-	@GetMapping("/buttons")
-	@ApiOperationSupport(order = 10)
-	@ApiOperation(value = "前端按钮数据", notes = "前端按钮数据")
-	public R<List<MenuVO>> buttons(BladeUser user) {
-		List<MenuVO> list = menuService.buttons(user.getRoleId(),user.getClientId());
-		return R.data(list);
-	}
+    /**
+     * 前端按钮数据
+     */
+    @GetMapping("/buttons")
+    @ApiOperationSupport(order = 10)
+    @ApiOperation(value = "前端按钮数据", notes = "前端按钮数据")
+    public R<List<MenuVO>> buttons(BladeUser user) {
+        List<MenuVO> list = menuService.buttons(user.getRoleId(), user.getClientId());
+        return R.data(list);
+    }
 
-	/**
-	 * 获取菜单树形结构
-	 */
-	@GetMapping("/tree")
-	@ApiOperationSupport(order = 11)
-	@ApiOperation(value = "树形结构", notes = "树形结构")
-	public R<List<TreeNode>> tree() {
-		List<TreeNode> tree = menuService.tree();
-		return R.data(tree);
-	}
+    /**
+     * 获取菜单树形结构
+     */
+    @GetMapping("/tree")
+    @ApiOperationSupport(order = 11)
+    @ApiOperation(value = "树形结构", notes = "树形结构")
+    public R<List<TreeNode>> tree() {
+        List<TreeNode> tree = menuService.tree();
+        return R.data(tree);
+    }
 
-	/**
-	 * 获取权限分配树形结构
-	 */
-	@GetMapping("/grant-tree")
-	@ApiOperationSupport(order = 12)
-	@ApiOperation(value = "权限分配树形结构", notes = "权限分配树形结构")
-	public R<GrantTreeVO> grantTree(BladeUser user) {
-		GrantTreeVO vo = new GrantTreeVO();
-		vo.setMenu(menuService.grantTree(user));
-		vo.setDataScope(menuService.grantDataScopeTree(user));
-		vo.setApiScope(menuService.grantApiScopeTree(user));
-		return R.data(vo);
-	}
+    /**
+     * 获取权限分配树形结构
+     */
+    @GetMapping("/grant-tree")
+    @ApiOperationSupport(order = 12)
+    @ApiOperation(value = "权限分配树形结构", notes = "权限分配树形结构")
+    public R<GrantTreeVO> grantTree(BladeUser user) {
+        GrantTreeVO vo = new GrantTreeVO();
+        List<TreeNode> treeUserMenu = new ArrayList<>();
+        List<TreeNode> treeMenu = new ArrayList<>();
+        //获取所有菜单
+        List<TreeNode> treeNodesAll = menuService.grantTree(user);
 
-	/**
-	 * 获取权限分配树形结构
-	 */
-	@GetMapping("/role-tree-keys")
-	@ApiOperationSupport(order = 13)
-	@ApiOperation(value = "角色所分配的树", notes = "角色所分配的树")
-	public R<CheckedTreeVO> roleTreeKeys(String roleIds) {
-		CheckedTreeVO vo = new CheckedTreeVO();
-		vo.setMenu(menuService.roleTreeKeys(roleIds));
-		vo.setDataScope(menuService.dataScopeTreeKeys(roleIds));
-		vo.setApiScope(menuService.apiScopeTreeKeys(roleIds));
-		return R.data(vo);
-	}
+        for (TreeNode treeNode : treeNodesAll) {
+            if (treeNode.getTitle().equals("质量管理") || treeNode.getTitle().equals("任务管理")) {
+                treeUserMenu.add(treeNode);
+            } else {
+                treeMenu.add(treeNode);
+            }
+        }
 
-	/**
-	 * 获取顶部菜单树形结构
-	 */
-	@GetMapping("/grant-top-tree")
-	@ApiOperationSupport(order = 14)
-	@ApiOperation(value = "顶部菜单树形结构", notes = "顶部菜单树形结构")
-	public R<GrantTreeVO> grantTopTree(BladeUser user) {
-		GrantTreeVO vo = new GrantTreeVO();
-		vo.setMenu(menuService.grantTopTree(user));
-		return R.data(vo);
-	}
+        //后台
+        vo.setMenu(treeMenu);
+        //客户端
+        vo.setUsermenu(treeUserMenu);
+        //数据源
+        vo.setDataScope(menuService.grantDataScopeTree(user));
+        //接口
+        vo.setApiScope(menuService.grantApiScopeTree(user));
+        return R.data(vo);
+    }
 
-	/**
-	 * 获取顶部菜单树形结构
-	 */
-	@GetMapping("/top-tree-keys")
-	@ApiOperationSupport(order = 15)
-	@ApiOperation(value = "顶部菜单所分配的树", notes = "顶部菜单所分配的树")
-	public R<CheckedTreeVO> topTreeKeys(String topMenuIds) {
-		CheckedTreeVO vo = new CheckedTreeVO();
-		vo.setMenu(menuService.topTreeKeys(topMenuIds));
-		return R.data(vo);
-	}
+    /**
+     * 获取权限分配树形结构
+     */
+    @GetMapping("/role-tree-keys")
+    @ApiOperationSupport(order = 13)
+    @ApiOperation(value = "角色所分配的树", notes = "角色所分配的树")
+    public R<CheckedTreeVO> roleTreeKeys(String roleIds) {
+        CheckedTreeVO vo = new CheckedTreeVO();
+        vo.setMenu(menuService.roleTreeKeys(roleIds));
+        vo.setDataScope(menuService.dataScopeTreeKeys(roleIds));
+        vo.setApiScope(menuService.apiScopeTreeKeys(roleIds));
+        return R.data(vo);
+    }
 
-	/**
-	 * 顶部菜单数据
-	 */
-	@GetMapping("/top-menu")
-	@ApiOperationSupport(order = 16)
-	@ApiOperation(value = "顶部菜单数据", notes = "顶部菜单数据")
-	public R<List<TopMenu>> topMenu(BladeUser user) {
-		if (Func.isEmpty(user)) {
-			return null;
-		}
-		List<TopMenu> list = topMenuService.list(Wrappers.<TopMenu>query().lambda().orderByAsc(TopMenu::getSort));
-		return R.data(list);
-	}
+    /**
+     * 获取顶部菜单树形结构
+     */
+    @GetMapping("/grant-top-tree")
+    @ApiOperationSupport(order = 14)
+    @ApiOperation(value = "顶部菜单树形结构", notes = "顶部菜单树形结构")
+    public R<GrantTreeVO> grantTopTree(BladeUser user) {
+        GrantTreeVO vo = new GrantTreeVO();
+        vo.setMenu(menuService.grantTopTree(user));
+        return R.data(vo);
+    }
 
-	/**
-	 * 获取配置的角色权限
-	 */
-	@GetMapping("auth-routes")
-	@ApiOperationSupport(order = 17)
-	@ApiOperation(value = "菜单的角色权限")
-	public R<List<Kv>> authRoutes(BladeUser user) {
-		if (Func.isEmpty(user)) {
-			return null;
-		}
-		return R.data(menuService.authRoutes(user));
-	}
+    /**
+     * 获取顶部菜单树形结构
+     */
+    @GetMapping("/top-tree-keys")
+    @ApiOperationSupport(order = 15)
+    @ApiOperation(value = "顶部菜单所分配的树", notes = "顶部菜单所分配的树")
+    public R<CheckedTreeVO> topTreeKeys(String topMenuIds) {
+        CheckedTreeVO vo = new CheckedTreeVO();
+        vo.setMenu(menuService.topTreeKeys(topMenuIds));
+        return R.data(vo);
+    }
+
+    /**
+     * 顶部菜单数据
+     */
+    @GetMapping("/top-menu")
+    @ApiOperationSupport(order = 16)
+    @ApiOperation(value = "顶部菜单数据", notes = "顶部菜单数据")
+    public R<List<TopMenu>> topMenu(BladeUser user) {
+        if (Func.isEmpty(user)) {
+            return null;
+        }
+        List<TopMenu> list = topMenuService.list(Wrappers.<TopMenu>query().lambda().orderByAsc(TopMenu::getSort));
+        return R.data(list);
+    }
+
+    /**
+     * 获取配置的角色权限
+     */
+    @GetMapping("auth-routes")
+    @ApiOperationSupport(order = 17)
+    @ApiOperation(value = "菜单的角色权限")
+    public R<List<Kv>> authRoutes(BladeUser user) {
+        if (Func.isEmpty(user)) {
+            return null;
+        }
+        return R.data(menuService.authRoutes(user));
+    }
 }

+ 7 - 0
blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java

@@ -371,8 +371,15 @@ public class UserController {
         if (StringUtil.isBlank(userIds)) {
             return R.fail("请至少选择一个用户");
         }
+        //获取用户list
         List<User> userList = userService.list(Wrappers.<User>lambdaQuery().in(User::getId, Func.toLongList(userIds)));
+        //删除redis缓存
         userList.forEach(user -> bladeRedis.del(CacheNames.tenantKey(user.getTenantId(), CacheNames.USER_FAIL_KEY, user.getAccount())));
+        //修改status状态
+        for (User user : userList) {
+            user.setStatus(1);
+            userService.updateUser(user);
+        }
         return R.success("操作成功");
     }