From 8400a67289b214b83a20484410fff96d236c6d49 Mon Sep 17 00:00:00 2001
From: linwe <872216996@qq.com>
Date: Sat, 25 Nov 2023 18:39:56 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
src/main/java/org/springblade/modules/system/service/impl/MenuServiceImpl.java | 100 ++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 93 insertions(+), 7 deletions(-)
diff --git a/src/main/java/org/springblade/modules/system/service/impl/MenuServiceImpl.java b/src/main/java/org/springblade/modules/system/service/impl/MenuServiceImpl.java
index 3ab9b53..3d660d4 100644
--- a/src/main/java/org/springblade/modules/system/service/impl/MenuServiceImpl.java
+++ b/src/main/java/org/springblade/modules/system/service/impl/MenuServiceImpl.java
@@ -16,20 +16,26 @@
*/
package org.springblade.modules.system.service.impl;
+import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.AllArgsConstructor;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
import org.springblade.common.cache.SysCache;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.constant.BladeConstant;
+import org.springblade.core.tool.constant.RoleConstant;
import org.springblade.core.tool.node.ForestNodeMerger;
import org.springblade.core.tool.node.TreeNode;
import org.springblade.core.tool.support.Kv;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringUtil;
+import org.springblade.modules.house.dto.UserHouseLabelDTO;
+import org.springblade.modules.house.service.IUserHouseLabelService;
import org.springblade.modules.system.dto.MenuDTO;
import org.springblade.modules.system.entity.*;
import org.springblade.modules.system.mapper.MenuMapper;
@@ -42,6 +48,8 @@
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import java.io.Serializable;
import java.util.*;
import java.util.stream.Collectors;
@@ -64,12 +72,22 @@
private final static String PARENT_ID = "parentId";
private final static Integer MENU_CATEGORY = 1;
+ @Resource
+ private IUserHouseLabelService iUserHouseLabelService;
+
@Override
public List<MenuVO> lazyList(Long parentId, Map<String, Object> param) {
if (Func.isEmpty(Func.toStr(param.get(PARENT_ID)))) {
parentId = null;
}
- return baseMapper.lazyList(parentId, param);
+ List<MenuVO> menuVOS = baseMapper.lazyList(parentId, param);
+ for (MenuVO menuVO : menuVOS) {
+ if(StringUtils.isNotBlank(menuVO.getLabelStr())){
+ List<List<String>> lists = (List<List<String>>)JSON.parse(menuVO.getLabelStr() );
+ menuVO.setLabelList(lists);
+ }
+ }
+ return menuVOS;
}
@Override
@@ -77,11 +95,32 @@
if (Func.isEmpty(Func.toStr(param.get(PARENT_ID)))) {
parentId = null;
}
- return baseMapper.lazyMenuList(parentId, param);
+ List<MenuVO> menuVOS = baseMapper.lazyList(parentId, param);
+ for (MenuVO menuVO : menuVOS) {
+ if(StringUtils.isNotBlank(menuVO.getLabelStr())){
+ List<List<String>> lists = (List<List<String>>)JSON.parse(menuVO.getLabelStr() );
+ menuVO.setLabelList(lists);
+ }
+ }
+ return menuVOS;
+ }
+
+ public static final List<Integer> list1 = Arrays.asList(1, 2, 3, 4, 5, 6, 11, null);
+ public static final List<Integer> list2 = Arrays.asList(1, 11, null);
+
+ /**
+ * apache测试方法
+ */
+ public static void main(String[] args) {
+ System.out.println("交集:" + CollectionUtils.intersection(list1, list2)); // 交集
+ System.out.println("补集:" + CollectionUtils.disjunction(list1, list2)); // 补集
+ System.out.println("并集:" + CollectionUtils.union(list1, list2)); // 并集
+ System.out.println("list1的差集:" + CollectionUtils.subtract(list1, list2)); // list1的差集
+ System.out.println("list2的差集:" + CollectionUtils.subtract(list2, list1)); // list2的差集
}
@Override
- public List<MenuVO> routes(String roleId, Long topMenuId) {
+ public List<MenuVO> routes(String roleId, Long topMenuId, Integer labelType) {
if (StringUtil.isBlank(roleId)) {
return null;
}
@@ -94,6 +133,46 @@
// 非超级管理员并且不是顶部菜单请求则返回对应角色权限菜单
else if (!AuthUtil.isAdministrator() && Func.isEmpty(topMenuId)) {
roleMenus = tenantPackageMenu(baseMapper.roleMenuByRoleId(Func.toLongList(roleId)));
+ UserHouseLabelDTO userHouseLabelDTO = new UserHouseLabelDTO();
+ userHouseLabelDTO.setUserId(AuthUtil.getUserId());
+ userHouseLabelDTO.setLableType(labelType);
+ List<Integer> integers = iUserHouseLabelService.selectUserLabelList(userHouseLabelDTO);
+ Iterator<Menu> iterator = roleMenus.iterator();
+ while (iterator.hasNext()) {
+ Menu next = iterator.next();
+ if (!next.getParentId().equals(0)) {
+ if (StringUtils.isNotBlank(next.getLabelId())) {
+ String[] split = next.getLabelId().split(",");
+ List<Integer> integerList = Arrays.stream(split).map(Integer::valueOf).collect(Collectors.toList());
+ Collection<? extends Serializable> union = CollectionUtils.intersection(integerList, integers);
+ if (union.size() == 0) {
+ iterator.remove();
+ }
+ } else {
+ if (next.getName().trim().equals("标签报事")) {
+ iterator.remove();
+ }
+ if (next.getName().trim().equals("取保候审")) {
+ iterator.remove();
+ }
+ if (next.getName().trim().equals("打金店")) {
+ iterator.remove();
+ }
+ if (next.getName().trim().equals("旅馆安全")) {
+ iterator.remove();
+ }
+ if (next.getName().trim().equals("二手车交易")) {
+ iterator.remove();
+ }
+ if (next.getName().trim().equals("二手手机维修")) {
+ iterator.remove();
+ }
+ if (next.getName().trim().equals("校园安全")) {
+ iterator.remove();
+ }
+ }
+ }
+ }
}
// 顶部菜单请求返回对应角色权限菜单
else {
@@ -109,6 +188,7 @@
routes.stream().anyMatch(route -> route.getId().longValue() == x.getId().longValue())
).collect(Collectors.toList());
}
+
return buildRoutes(allMenus, roleMenus);
}
@@ -153,8 +233,7 @@
@Override
public List<TreeNode> grantTree(BladeUser user) {
- List<TreeNode> menuTree = user.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? baseMapper.grantTree() : baseMapper.grantTreeByRole(Func.toLongList(user.getRoleId()));
- return ForestNodeMerger.merge(tenantPackageTree(menuTree, user.getTenantId()));
+ return ForestNodeMerger.merge(AuthUtil.getUser().getRoleName().equals(RoleConstant.ADMINISTRATOR) ? baseMapper.grantTree() : baseMapper.grantTreeByRole(Func.toLongList(user.getRoleId())));
}
@Override
@@ -273,14 +352,14 @@
}
@Override
- public boolean submit(Menu menu) {
+ public boolean submit(MenuDTO menu) {
LambdaQueryWrapper<Menu> menuQueryWrapper = Wrappers.lambdaQuery();
if (menu.getId() == null) {
menuQueryWrapper.eq(Menu::getCode, menu.getCode()).or(
wrapper -> wrapper.eq(Menu::getName, menu.getName()).eq(Menu::getCategory, MENU_CATEGORY)
);
} else {
- menuQueryWrapper.ne(Menu::getId, menu.getId()).and(
+ menuQueryWrapper.ne(Menu::getId, menu.getId()).eq(Menu::getIsDeleted,0).and(
wrapper -> wrapper.eq(Menu::getCode, menu.getCode()).or(
o -> o.eq(Menu::getName, menu.getName()).eq(Menu::getCategory, MENU_CATEGORY)
)
@@ -299,6 +378,13 @@
throw new ServiceException("父节点只可选择菜单类型!");
}
}
+ menu.setLabelStr(JSON.toJSONString(menu.getLabelList()));
+ List<List<String>> labelList = menu.getLabelList();
+ StringBuffer stringBuffer = new StringBuffer();
+ for (List<String> strings : labelList) {
+ stringBuffer.append(strings.get(strings.size()-1)).append(",");
+ }
+ menu.setLabelId(stringBuffer.toString());
menu.setIsDeleted(BladeConstant.DB_NOT_DELETED);
return saveOrUpdate(menu);
}
--
Gitblit v1.9.3