From 05fd14df64fce3b913afcc1195f7a0f412c467d5 Mon Sep 17 00:00:00 2001 From: WendyYang Date: Fri, 31 Mar 2023 16:25:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=A7=92=E8=89=B2=E5=85=B3?= =?UTF-8?q?=E8=81=94=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pmapi/sys/service/IUserRoleService.java | 13 +++++++++++ .../pmapi/sys/service/impl/RoleServiceImpl.java | 27 +++++++++------------- .../sys/service/impl/UserRoleServiceImpl.java | 15 ++++++++++-- 3 files changed, 37 insertions(+), 18 deletions(-) diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/sys/service/IUserRoleService.java b/pmapi/src/main/java/com/ningdatech/pmapi/sys/service/IUserRoleService.java index 6d59c64..a5f9a3d 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/sys/service/IUserRoleService.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/sys/service/IUserRoleService.java @@ -3,6 +3,8 @@ package com.ningdatech.pmapi.sys.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ningdatech.pmapi.sys.model.entity.UserRole; +import java.util.List; + /** *

* 业务接口 @@ -20,4 +22,15 @@ public interface IUserRoleService extends IService { * @return 是否正确 */ boolean initAdmin(Long userId); + + /** + * 查询角色关联的用户ID + * + * @param roleId 角色ID + * @return 用户ID集合 + * @author WendyYang + **/ + List listUserIdByRoleId(Long roleId); + + } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/sys/service/impl/RoleServiceImpl.java b/pmapi/src/main/java/com/ningdatech/pmapi/sys/service/impl/RoleServiceImpl.java index 0c6e452..0b614a9 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/sys/service/impl/RoleServiceImpl.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/sys/service/impl/RoleServiceImpl.java @@ -12,10 +12,10 @@ import com.ningdatech.basic.exception.BizException; import com.ningdatech.basic.exception.code.ExceptionCode; import com.ningdatech.basic.util.CollUtils; import com.ningdatech.cache.repository.CachePlusOps; +import com.ningdatech.pmapi.sys.mapper.RoleMapper; import com.ningdatech.pmapi.sys.model.dto.MenuDataScopeDTO; import com.ningdatech.pmapi.sys.model.dto.RoleSaveDTO; import com.ningdatech.pmapi.sys.model.dto.RoleUpdateDTO; -import com.ningdatech.pmapi.sys.mapper.RoleMapper; import com.ningdatech.pmapi.sys.model.entity.*; import com.ningdatech.pmapi.sys.service.*; import com.ningdatech.pmapi.sys.utils.AuthCacheKeyUtils; @@ -40,18 +40,12 @@ import java.util.stream.Collectors; @RequiredArgsConstructor public class RoleServiceImpl extends ServiceImpl implements IRoleService { - private final IUserRoleService IUserRoleService; + private final IUserRoleService userRoleService; private final RoleMapper roleMapper; private final IRoleMenuDatascopeService roleMenuDatascopeService; - private final CachePlusOps cachePlusOps; - private final IRoleMenuService roleMenuService; - - private final IMenuService IMenuService; - - private static final String SUPER_ADMIN = "SUPER_ADMIN"; - + private final IMenuService menuService; /** * 删除角色时,需要级联删除跟角色相关的一切资源: @@ -68,7 +62,7 @@ public class RoleServiceImpl extends ServiceImpl implements IR return true; } - if (IUserRoleService.count(Wrappers.lambdaQuery(UserRole.class).select(UserRole::getUserId) + if (userRoleService.count(Wrappers.lambdaQuery(UserRole.class).select(UserRole::getUserId) .in(UserRole::getRoleId, ids)) > 0) { throw new BizException(ExceptionCode.OPERATION_EX.getCode(), "该角色下还有用户 不能随意删除!"); } @@ -77,7 +71,7 @@ public class RoleServiceImpl extends ServiceImpl implements IR boolean removeFlag = removeByIds(ids); //角色拥有的用户 - IUserRoleService.remove(Wrappers.lambdaQuery(UserRole.class).in(UserRole::getRoleId, ids)); + userRoleService.remove(Wrappers.lambdaQuery(UserRole.class).in(UserRole::getRoleId, ids)); if (removeFlag) { // 角色绑定了那些用户 if (roleMenuService.remove(Wrappers.lambdaQuery(RoleMenu.class).in(RoleMenu::getRoleId, ids))) { @@ -149,18 +143,19 @@ public class RoleServiceImpl extends ServiceImpl implements IR public void updateRole(RoleUpdateDTO data, Long userId) { Role roleOld = roleMapper.selectById(data.getId()); if (Objects.isNull(roleOld)) { - throw new BaseUncheckedException(HttpStatus.HTTP_OK, String.format("修改用户%d 为空", data.getId())); + throw BizException.wrap("修改用户 %d 为空", data.getId()); } if (StrUtil.isNotBlank(data.getName()) && check(data.getName(), roleOld.getId())) { - throw BizException.wrap("角色名{} 已经存在", data.getName()); + throw BizException.wrap("角色名 %s 已经存在", data.getName()); } Role role = BeanUtil.toBean(data, Role.class); role.setUpdateBy(userId); updateById(role); saveRoleMenu(data.getMenuIds(), role.getId()); saveRoleMenuDatascope(data.getMenuDataScopeList(), role.getId()); - cachePlusOps.del(AuthCacheKeyUtils.userResourceCacheKey(userId)); + List userIdList = userRoleService.listUserIdByRoleId(role.getId()); + userIdList.forEach(w -> cachePlusOps.del(AuthCacheKeyUtils.userResourceCacheKey(w))); } @Override @@ -184,7 +179,7 @@ public class RoleServiceImpl extends ServiceImpl implements IR roleMenuService.remove(Wrappers.lambdaQuery(RoleMenu.class).eq(RoleMenu::getRoleId, roleId)); Set toAddMenus = new HashSet<>(); for (Long menuId : menuIds) { - Menu menu = IMenuService.getById(menuId); + Menu menu = menuService.getById(menuId); if (Objects.isNull(menu)) { continue; } @@ -203,7 +198,7 @@ public class RoleServiceImpl extends ServiceImpl implements IR if (Objects.isNull(menu.getPid()) || menu.getPid().equals(0L)) { return; } - Menu parent = IMenuService.getById(menu.getPid()); + Menu parent = menuService.getById(menu.getPid()); if (Objects.isNull(parent)) { return; } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/sys/service/impl/UserRoleServiceImpl.java b/pmapi/src/main/java/com/ningdatech/pmapi/sys/service/impl/UserRoleServiceImpl.java index 184f164..d2697ae 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/sys/service/impl/UserRoleServiceImpl.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/sys/service/impl/UserRoleServiceImpl.java @@ -4,16 +4,19 @@ import cn.hutool.http.HttpStatus; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ningdatech.basic.exception.BaseUncheckedException; -import com.ningdatech.pmapi.sys.model.entity.Role; -import com.ningdatech.pmapi.sys.model.entity.UserRole; +import com.ningdatech.basic.util.CollUtils; import com.ningdatech.pmapi.sys.mapper.RoleMapper; import com.ningdatech.pmapi.sys.mapper.UserRoleMapper; +import com.ningdatech.pmapi.sys.model.entity.Role; +import com.ningdatech.pmapi.sys.model.entity.UserRole; import com.ningdatech.pmapi.sys.service.IUserRoleService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; + /** *

* 业务实现类 @@ -46,4 +49,12 @@ public class UserRoleServiceImpl extends ServiceImpl i return super.save(userRole); } + + @Override + public List listUserIdByRoleId(Long roleId) { + List userRoles = this.list(Wrappers.lambdaQuery() + .eq(UserRole::getRoleId, roleId)); + return CollUtils.fieldList(userRoles, UserRole::getUserId); + } + }