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/role/service/impl/SysRoleServiceImpl.java | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 115 insertions(+), 0 deletions(-)
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleServiceImpl.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleServiceImpl.java
index 5b78836..8201887 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleServiceImpl.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleServiceImpl.java
@@ -1,10 +1,29 @@
package com.mes.role.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.mes.entity.request.GeneralRequest;
+import com.mes.menu.entity.SysMenu;
import com.mes.role.entity.SysRole;
+import com.mes.role.entity.SysRoleMenu;
+import com.mes.role.entity.vo.SysRoleVO;
import com.mes.role.mapper.SysRoleMapper;
+import com.mes.role.service.SysRoleMenuService;
import com.mes.role.service.SysRoleService;
+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.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
+
+import java.util.List;
+import java.util.stream.Collectors;
/**
* <p>
@@ -15,6 +34,102 @@
* @since 2024-04-11
*/
@Service
+@Slf4j
public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> implements SysRoleService {
+ @Autowired
+ SysRoleMenuService sysRoleMenuService;
+
+ @Autowired
+ SysUserService sysUserService;
+
+ @Autowired
+ SysUserRoleService sysUserRoleService;
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public SysRole saveRole(SysRoleVO sysRoleVO) {
+ log.info("淇濆瓨瑙掕壊淇℃伅锛岀敓鎴愬搴旂殑瑙掕壊id");
+ SysRole sysRole = new SysRole();
+ BeanUtils.copyProperties(sysRoleVO, sysRole);
+ this.save(sysRole);
+ //淇濆瓨瑙掕壊鏉冮檺淇℃伅
+ saveRoleMenu(sysRole.getId(), sysRoleVO.getMenuList());
+ return sysRole;
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public String updateRole(SysRoleVO sysRoleVO) {
+ log.info("淇濆瓨瑙掕壊淇℃伅锛岀敓鎴愬搴旂殑瑙掕壊id");
+ SysRole sysRole = new SysRole();
+ BeanUtils.copyProperties(sysRoleVO, sysRole);
+ this.updateById(sysRole);
+ //淇濆瓨瑙掕壊鏉冮檺淇℃伅
+ return saveRoleMenu(sysRole.getId(), sysRoleVO.getMenuList());
+ }
+
+ @Override
+ public List<SysRoleVO> queryRole(GeneralRequest request) {
+ MPJLambdaWrapper<SysRole> wrapper = new MPJLambdaWrapper<>();
+ wrapper.selectAll(SysRole.class)
+ .selectCollection(SysMenu.class, SysRoleVO::getMenuList)
+ .leftJoin(SysRoleMenu.class, SysRoleMenu::getRoleId, SysRole::getId)
+ .leftJoin(SysMenu.class, SysMenu::getId, SysRoleMenu::getMenuId)
+ .like(StringUtils.hasText(request.getKey()), SysRole::getName, request.getKey());
+ return baseMapper.selectJoinList(SysRoleVO.class, wrapper);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public String deleteRole(List<Long> ids) {
+ log.info("鍒犻櫎瑙掕壊淇℃伅");
+ this.removeByIds(ids);
+
+ log.info("鍒犻櫎涓棿琛ㄤ俊鎭�");
+ sysUserRoleService.remove(new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getRoleId, ids));
+ sysRoleMenuService.remove(new LambdaQueryWrapper<SysRoleMenu>().in(SysRoleMenu::getRoleId, ids));
+
+ log.info("娓呯┖缂撳瓨涓殑鏉冮檺淇℃伅");
+ ids.stream().forEach(id -> sysUserService.clearUserAuthorityInfoByRoleId(id));
+ return "success";
+ }
+
+ /**
+ * 淇濆瓨瑙掕壊鏉冮檺淇℃伅
+ *
+ * @param roleId
+ * @param menuList
+ * @return
+ */
+ private String saveRoleMenu(Long roleId, List<SysMenu> menuList) {
+ log.info("閰嶇疆瑙掕壊鑿滃崟鍏崇郴");
+ if (CollectionUtils.isEmpty(menuList)) {
+ // 鍏堝垹闄ゅ師鏉ョ殑璁板綍锛屽啀淇濆瓨鏂扮殑
+ sysRoleMenuService.remove(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, roleId));
+ // 鍒犻櫎缂撳瓨
+ sysUserService.clearUserAuthorityInfoByRoleId(roleId);
+ return "success";
+ }
+ List<SysRoleMenu> roleMenuList = menuList.stream().map(menu -> {
+ SysRoleMenu roleMenu = new SysRoleMenu(roleId,menu.getId());
+ return roleMenu;
+ }).collect(Collectors.toList());
+ // 浣跨敤娴佸鐞嗚彍鍗曞垪琛紝鎻愬彇 children 鐨� id锛屽苟璁剧疆鍒� SysRoleMenu 涓�
+ List<SysRoleMenu> childrenList = menuList.stream()
+ .flatMap(menu -> menu.getChildren().stream()) // 鎵佸钩鍖栧鐞� children 鍒楄〃
+ .map(child -> {
+ SysRoleMenu roleMenu = new SysRoleMenu(roleId,child.getId());
+ return roleMenu;
+ })
+ .collect(Collectors.toList());
+ log.info("娓呯┖瑙掕壊鏉冮檺琛ㄤ腑璇ヨ鑹蹭俊鎭�");
+ // 鍏堝垹闄ゅ師鏉ョ殑璁板綍锛屽啀淇濆瓨鏂扮殑
+ sysRoleMenuService.remove(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, roleId));
+ sysRoleMenuService.saveBatch(roleMenuList);
+ sysRoleMenuService.saveBatch(childrenList);
+ // 鍒犻櫎缂撳瓨
+ sysUserService.clearUserAuthorityInfoByRoleId(roleId);
+ return "success";
+ }
}
--
Gitblit v1.8.0