|
|
@@ -3,6 +3,8 @@ package com.xjrsoft.module.system.service.impl;
|
|
|
import cn.dev33.satoken.stp.StpUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
|
|
@@ -10,7 +12,10 @@ import com.github.yulichang.toolkit.MPJWrappers;
|
|
|
import com.xjrsoft.common.constant.GlobalConstant;
|
|
|
import com.xjrsoft.common.enums.AuthorizeType;
|
|
|
import com.xjrsoft.common.enums.EnabledMark;
|
|
|
+import com.xjrsoft.common.enums.RoleEnum;
|
|
|
import com.xjrsoft.common.utils.VoToColumnUtil;
|
|
|
+import com.xjrsoft.module.base.entity.WhitelistManagement;
|
|
|
+import com.xjrsoft.module.base.service.IWhitelistManagementService;
|
|
|
import com.xjrsoft.module.organization.entity.UserRoleRelation;
|
|
|
import com.xjrsoft.module.organization.mapper.UserRoleRelationMapper;
|
|
|
import com.xjrsoft.module.system.dto.MenuTreeDto;
|
|
|
@@ -18,18 +23,22 @@ import com.xjrsoft.module.system.dto.RoleMenuServeListDto;
|
|
|
import com.xjrsoft.module.system.entity.Authorize;
|
|
|
import com.xjrsoft.module.system.entity.Menu;
|
|
|
import com.xjrsoft.module.system.entity.Subsystem;
|
|
|
+import com.xjrsoft.module.system.entity.XjrMenuGroup;
|
|
|
+import com.xjrsoft.module.system.entity.XjrMenuGroupSet;
|
|
|
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.service.IXjrMenuGroupSetService;
|
|
|
import com.xjrsoft.module.system.vo.MenuAllServeVo;
|
|
|
import com.xjrsoft.module.system.vo.MenuListVo;
|
|
|
import com.xjrsoft.module.system.vo.MenuServeVo;
|
|
|
import com.xjrsoft.module.system.vo.MenuTreeVo;
|
|
|
import com.xjrsoft.module.system.vo.MenuVo;
|
|
|
import com.xjrsoft.module.system.vo.XjrMentDeptGroupVo;
|
|
|
+import com.xjrsoft.module.system.vo.XjrMenuGroupSetPageVo;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
@@ -60,6 +69,9 @@ public class MenuServiceImpl extends MPJBaseServiceImpl<MenuMapper, Menu> implem
|
|
|
|
|
|
private final XjrMenuDeptRelationMapper menuDeptRelationMapper;
|
|
|
|
|
|
+ private final IXjrMenuGroupSetService xjrMenuGroupSetService;
|
|
|
+ private final IWhitelistManagementService whitelistManagementService;
|
|
|
+
|
|
|
@Override
|
|
|
public List<MenuVo> getAuthMenuList(MenuTreeDto dto) {
|
|
|
List<Long> roleIds = getUserRoleIds();
|
|
|
@@ -225,12 +237,50 @@ public class MenuServiceImpl extends MPJBaseServiceImpl<MenuMapper, Menu> implem
|
|
|
deptNameMap.put(deptGroupVo.getMenuId(), deptGroupVo.getDeptNames());
|
|
|
deptIdMap.put(deptGroupVo.getMenuId(), deptGroupVo.getDeptIds());
|
|
|
}
|
|
|
+ List<MenuVo> result = new ArrayList<>();
|
|
|
+ Map<Long, Long> menuGroupMap = new HashMap<>();
|
|
|
+ Map<Long, Integer> menuDisabledMap = new HashMap<>();
|
|
|
+ if(roleIds.contains(RoleEnum.STUDENT.getCode())){
|
|
|
+ LambdaQueryWrapper<XjrMenuGroupSet> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper
|
|
|
+ .orderByDesc(XjrMenuGroupSet::getId)
|
|
|
+ .select(XjrMenuGroupSet.class,x -> VoToColumnUtil.fieldsToColumns(XjrMenuGroupSetPageVo.class).contains(x.getProperty()));
|
|
|
+ List<XjrMenuGroupSet> list = xjrMenuGroupSetService.list(queryWrapper);
|
|
|
+ Map<Long, Integer> menuUsedMap = new HashMap<>();
|
|
|
+ for (XjrMenuGroupSet menuGroupSet : list) {
|
|
|
+ result.add(new MenuVo(){{
|
|
|
+ setTitle(menuGroupSet.getName());
|
|
|
+ setId(menuGroupSet.getId());
|
|
|
+ }});
|
|
|
+ menuUsedMap.put(menuGroupSet.getId(), menuGroupSet.getUseRange());
|
|
|
+ }
|
|
|
+ List<XjrMenuGroup> xjrMenuGroupMenu = xjrMenuGroupSetService.getXjrMenuGroupMenu();
|
|
|
+ menuGroupMap.putAll(xjrMenuGroupMenu.stream().collect(Collectors.toMap(XjrMenuGroup::getXjrMenuId, XjrMenuGroup::getXjrMenuGroupSetId)));
|
|
|
+ List<WhitelistManagement> managementList = whitelistManagementService.list(
|
|
|
+ new QueryWrapper<WhitelistManagement>().lambda()
|
|
|
+ .eq(WhitelistManagement::getUserId, StpUtil.getLoginIdAsLong())
|
|
|
+ );
|
|
|
+ for (XjrMenuGroup menuGroupMenu : xjrMenuGroupMenu) {
|
|
|
+ menuDisabledMap.put(menuGroupMenu.getXjrMenuId(), 1);
|
|
|
+ if(menuUsedMap.get(menuGroupMenu.getXjrMenuId()) == 2 && managementList.isEmpty()){
|
|
|
+ menuDisabledMap.put(menuGroupMenu.getXjrMenuId(), 2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
for (MenuVo menuVo : menuVos) {
|
|
|
menuVo.setDeptId(deptIdMap.get(menuVo.getId()));
|
|
|
menuVo.setDeptName(deptNameMap.get(menuVo.getId()));
|
|
|
+ if(roleIds.contains(RoleEnum.STUDENT.getCode()) && menuGroupMap.get(menuVo.getId()) != null){
|
|
|
+ menuVo.setParentId(menuGroupMap.get(menuVo.getId()));
|
|
|
+ menuVo.setIsDisable(menuDisabledMap.get(menuVo.getId()));
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
+ result.addAll(menuVos);
|
|
|
|
|
|
- return menuVos;
|
|
|
+ return result;
|
|
|
}
|
|
|
|
|
|
/**
|