xiejun
2023-12-29 f02a461cd0e0c6ad326cd71e3af733e3292407fc
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/MenuServiceImpl.java
@@ -68,12 +68,14 @@
   private final IRoleMenuService roleMenuService;
   private final IRoleScopeService roleScopeService;
   private final MenuMapper menuMapper;
   private final ITopMenuSettingService topMenuSettingService;
   private final static String PARENT_ID = "parentId";
   private final static Integer MENU_CATEGORY = 1;
   @Override
   public List<MenuVO> lazyList(Long parentId, Map<String, Object> param) {
      //int i = 1 / 0;
      if (Func.isEmpty(Func.toStr(param.get(PARENT_ID)))) {
         parentId = null;
      }
@@ -88,7 +90,6 @@
      return baseMapper.lazyMenuPage(parentId, param, Condition.getPage(query));
   }
   @Override
   public List<MenuVO> routes(String roleId, Long topMenuId) {
      if (StringUtil.isBlank(roleId)) {
@@ -102,7 +103,7 @@
         roleMenus = allMenus;
      }
      // 非超级管理员并且不是顶部菜单请求则返回对应角色权限菜单
      else if (!AuthUtil.isAdministrator() && Func.isEmpty(topMenuId)) {
      else if (!VciBaseUtil.checkAdminTenant() && Func.isEmpty(topMenuId)) {
         roleMenus = tenantPackageMenu(baseMapper.roleMenuByRoleId(Func.toLongList(roleId)));
      }
      // 顶部菜单请求返回对应角色权限菜单
@@ -159,6 +160,17 @@
      // 修改为所有用户都能查询所有,因为没权限的用户不具备这个菜单页面的权限,也就没必要限制用户查自己的
      List<TreeNode> menuTree = baseMapper.grantTree();
      return ForestNodeMerger.merge(tenantPackageTree(menuTree, user.getTenantId()));
   }
   /**
    * 根据角色id获取菜单树形结构
    * @param roleId
    * @return
    */
   @Override
   public List<TreeNode> grantTreeByRoleIds(List<Long> roleId) {
      List<TreeNode> menuTree = baseMapper.grantTreeByRole(roleId);
      return ForestNodeMerger.merge(menuTree);
   }
   @Override
@@ -317,7 +329,7 @@
    * @return List<Menu>
    */
    @Override
   @Cacheable(cacheNames = MENU_CACHE, key = "'auth:menuButton:'+ #btmType +':'+ #userId ")
   //@Cacheable(cacheNames = MENU_CACHE, key = "'auth:menuButton:'+ #btmType +':'+ #userId ")
    public List<Menu> getMenuButtonByType(String btmType,Long userId) {
      List<String> roleIds = null;
      if(!VciBaseUtil.checkAdminTenant()){
@@ -341,7 +353,7 @@
      LambdaQueryWrapper<Menu> wrapper = Wrappers.<Menu>query()
         .lambda()
         .in(Menu::getCode, codes)
         .eq(Menu::getIsDeleted,0) /*未被删除*/
         .eq(Menu::getIsDeleted,BladeConstant.DB_NOT_DELETED) /*未被删除*/
         .eq(Menu::getCategory,1) /*菜单类型不能为按钮*/
         .orderByAsc(Menu::getCode);  /*根据code排序与classify的btmtypeid对应*/
      // 超管不用根据角色来查询
@@ -360,6 +372,17 @@
         }
      }
      return this.list(wrapper);
   }
   /**
    * 根据父级菜单的code查询按钮信息
    * @param code
    * @return
    */
   @Override
   public List<Menu> getButtonByParentCode(String code) {
      List<Menu> buttonList = menuMapper.getButtonByParentCode(code);
      return buttonList;
   }
   /**
@@ -418,4 +441,23 @@
      return this.saveBatch(newButtons) ? R.success("按钮克隆成功!"):R.fail("按钮克隆失败!");
   }
   /**
    * 根据主键获取菜单信息
    * @param ids
    * @return
    */
   @Override
   public List<Menu> getMenuListById(List<String> ids,String parentId) {
      LambdaQueryWrapper<Menu> wrapper = Wrappers.<Menu>query()
         .lambda().eq(Menu::getCategory, "2")
         .eq(Menu::getIsDeleted,BladeConstant.DB_NOT_DELETED);
      if(VciBaseUtil.checkAdminTenant()){
         wrapper.eq(Menu::getParentId,parentId);
      }else {
         wrapper.in(Menu::getId, ids);
      }
      List<Menu> menuList = this.list(wrapper);
      return menuList;
   }
}