From d22b530fa0fbd910d8d7baefa29d88d755568e68 Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期一, 15 十二月 2025 10:01:41 +0800
Subject: [PATCH] 1、 修复权限相关的bug
---
hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java | 157 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 157 insertions(+), 0 deletions(-)
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java
new file mode 100644
index 0000000..69d60d9
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java
@@ -0,0 +1,157 @@
+package com.mes.menu.service.impl;
+
+import cn.hutool.core.map.MapUtil;
+import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.mes.common.utils.UserInfoUtils;
+import com.mes.entity.request.GeneralRequest;
+import com.mes.menu.entity.SysMenu;
+import com.mes.menu.mapper.SysMenuMapper;
+import com.mes.menu.service.SysMenuService;
+import com.mes.role.entity.SysRoleMenu;
+import com.mes.role.service.SysRoleMenuService;
+import com.mes.userinfo.entity.SysUser;
+import com.mes.userinfo.entity.SysUserRole;
+import com.mes.userinfo.service.SysUserRoleService;
+import com.mes.userinfo.service.SysUserService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 鑿滃崟琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+@Service
+@Slf4j
+public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> implements SysMenuService {
+
+ @Autowired
+ SysUserService sysUserService;
+
+ @Autowired
+ SysUserRoleService sysUserRoleService;
+
+ @Autowired
+ SysRoleMenuService sysRoleMenuService;
+
+ @Override
+ public SysMenu updateMenu(SysMenu menu) {
+ baseMapper.updateById(menu);
+ // 娓呴櫎鎵�鏈変笌璇ヨ彍鍗曠浉鍏崇殑鏉冮檺缂撳瓨
+ sysUserService.clearUserAuthorityInfoByMenuId(menu.getId());
+ return menu;
+ }
+
+ @Override
+ public List<SysMenu> getMenuTree(GeneralRequest request) {
+ //todo:闇�瑕佸厛鑾峰彇鐢ㄦ埛鐨勮鑹诧紝瑙掕壊涓嬬殑鑿滃崟鏉冮檺锛屾嬁鍒拌彍鍗昳d鑾峰彇鎵�鏈夎彍鍗�
+ SysUser user = UserInfoUtils.get();
+ MPJLambdaWrapper<SysUserRole> wrapper = new MPJLambdaWrapper<>();
+
+ wrapper.selectAll(SysMenu.class).distinct()
+ .innerJoin(SysUser.class, SysUser::getId, SysUserRole::getUserId)
+ .innerJoin(SysRoleMenu.class, SysRoleMenu::getRoleId, SysUserRole::getRoleId)
+ .innerJoin(SysMenu.class, SysMenu::getId, SysRoleMenu::getMenuId)
+ .eq(StringUtils.isNotBlank(request.getKey()), SysUser::getId, user.getId())
+ .orderByAsc(SysMenu::getListSort);
+
+ //
+ List<SysMenu> menuList = sysUserRoleService.selectJoinList(SysMenu.class, wrapper);
+ log.info("userinfos:{}", menuList);
+ return create(menuList);
+ }
+
+ @Override
+ public List<String> getAuthorityInfo() {
+ SysUser user = UserInfoUtils.get();
+ log.info("鑾峰彇鐢ㄦ埛淇℃伅锛岀敤鎴峰悕涓簕}", user);
+ // 鑾峰彇鏉冮檺淇℃伅
+ // ROLE_admin,ROLE_normal,sys:user:list,....
+ return sysUserService.getUserAuthorityInfo(user.getId());
+ }
+
+ @Override
+ public Map<Object, Object> nav() {
+ List<SysMenu> menuTree = getMenuTree(new GeneralRequest());
+ List<String> authorityInfo = getAuthorityInfo();
+ return MapUtil.builder().put("authoritys", authorityInfo)
+ .put("tree", menuTree).map();
+ }
+
+ @Override
+ public String deleteMenu(Long menuId) {
+ int count = this.count(new LambdaQueryWrapper<SysMenu>().eq(SysMenu::getParentId, menuId));
+ if (count > 0) {
+ return "鏃犳硶鍒犻櫎,璇峰厛鍒犻櫎瀛愯彍鍗�";
+ }
+
+ // 娓呴櫎鎵�鏈変笌璇ヨ彍鍗曠浉鍏崇殑鏉冮檺缂撳瓨
+ sysUserService.clearUserAuthorityInfoByMenuId(menuId);
+
+ this.removeById(menuId);
+
+ // 鍚屾鍒犻櫎涓棿鍏宠仈琛�
+ sysRoleMenuService.remove(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getMenuId, menuId));
+ return "鍒犻櫎鎴愬姛";
+ }
+
+ @Override
+ public String batchDeleteMenu(List<Long> menuIds) {
+ menuIds.stream().forEach(e -> deleteMenu(e));
+ return "鎵归噺鍒犻櫎鎴愬姛";
+ }
+
+ @Override
+ public Boolean saveMenu(SysMenu sysMenu) {
+ this.save(sysMenu);
+ SysUser user = UserInfoUtils.get();
+ SysUserRole one = sysUserRoleService.getOne(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, user.getId()));
+ sysRoleMenuService.save(new SysRoleMenu(one.getRoleId(), sysMenu.getId()));
+ return Boolean.TRUE;
+ }
+
+
+ /**
+ * 灏嗘暟鎹簱涓煡璇㈠嚭鏉ョ殑list闆嗗悎浼犲叆姝ゆ柟娉曞嵆鍙幏寰楁帓鎴愭爲褰㈢粨鏋勭殑list闆嗗悎
+ *
+ * @param lists
+ * @return
+ */
+ public List<SysMenu> create(List<SysMenu> lists) {
+ List<SysMenu> deptTreeList = lists.stream()
+ .filter(item -> item.getParentId() == 0)
+ .map(item -> {
+ item.setChildren(getChildren(item, lists));
+ return item;
+ }).sorted((o1, o2) -> o1.getListSort() - o2.getListSort()).collect(Collectors.toList());
+ return deptTreeList;
+ }
+
+ /**
+ * 姝ゆ柟娉曞皢琚�掑綊璋冪敤
+ *
+ * @param menu
+ * @param menus
+ * @return
+ */
+ private List<SysMenu> getChildren(SysMenu menu, List<SysMenu> menus) {
+ List<SysMenu> res = menus.stream()
+ .filter(item -> item.getParentId().equals(menu.getId()))
+ .collect(Collectors.toList());
+ log.info("鑿滃崟鏍�:{}", JSONUtil.toJsonStr(res));
+ return res;
+ }
+
+}
--
Gitblit v1.8.0