From eb16b9e6a0abca429a1e916e90a5df3afe0f960d Mon Sep 17 00:00:00 2001 From: Lionel <12719401+wisdom_woods@user.noreply.gitee.com> Date: 星期三, 09 八月 2023 10:47:25 +0800 Subject: [PATCH] !410 将部门管理 负责人选项改为下拉框选择 从当前部门的用户列表选择一个人做绑定 后端接收用户ID #I7R8CI * 将部门管理 负责人选项改为下拉框选择 --- ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java | 42 ++++++++++++++++++++++++++++++++++-------- 1 files changed, 34 insertions(+), 8 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java index c4205eb..79fada2 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java @@ -2,6 +2,7 @@ import cn.dev33.satoken.exception.NotLoginException; import cn.dev33.satoken.stp.StpUtil; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; @@ -10,6 +11,8 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.constant.TenantConstants; import org.dromara.common.core.constant.UserConstants; import org.dromara.common.core.domain.model.LoginUser; import org.dromara.common.core.exception.ServiceException; @@ -30,7 +33,6 @@ import org.dromara.system.mapper.SysRoleMenuMapper; import org.dromara.system.mapper.SysUserRoleMapper; import org.dromara.system.service.ISysRoleService; -import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -183,12 +185,28 @@ /** * 鏍¢獙瑙掕壊鏄惁鍏佽鎿嶄綔 * - * @param roleId 瑙掕壊ID + * @param role 瑙掕壊淇℃伅 */ @Override - public void checkRoleAllowed(Long roleId) { - if (ObjectUtil.isNotNull(roleId) && LoginHelper.isSuperAdmin(roleId)) { + public void checkRoleAllowed(SysRoleBo role) { + if (ObjectUtil.isNotNull(role.getRoleId()) && LoginHelper.isSuperAdmin(role.getRoleId())) { throw new ServiceException("涓嶅厑璁告搷浣滆秴绾х鐞嗗憳瑙掕壊"); + } + // 鏂板涓嶅厑璁镐娇鐢� 绠$悊鍛樻爣璇嗙 + if (ObjectUtil.isNull(role.getRoleId()) + && StringUtils.equalsAny(role.getRoleKey(), + TenantConstants.SUPER_ADMIN_ROLE_KEY, TenantConstants.TENANT_ADMIN_ROLE_KEY)) { + throw new ServiceException("涓嶅厑璁镐娇鐢ㄧ郴缁熷唴缃鐞嗗憳瑙掕壊鏍囪瘑绗�!"); + } + // 淇敼涓嶅厑璁镐慨鏀� 绠$悊鍛樻爣璇嗙 + if (ObjectUtil.isNotNull(role.getRoleId())) { + SysRole sysRole = baseMapper.selectById(role.getRoleId()); + // 濡傛灉鏍囪瘑绗︿笉鐩哥瓑 鍒ゆ柇涓轰慨鏀逛簡绠$悊鍛樻爣璇嗙 + if (!StringUtils.equals(sysRole.getRoleKey(), role.getRoleKey()) + && StringUtils.equalsAny(sysRole.getRoleKey(), + TenantConstants.SUPER_ADMIN_ROLE_KEY, TenantConstants.TENANT_ADMIN_ROLE_KEY)) { + throw new ServiceException("涓嶅厑璁镐慨鏀圭郴缁熷唴缃鐞嗗憳瑙掕壊鏍囪瘑绗�!"); + } } } @@ -265,6 +283,9 @@ */ @Override public int updateRoleStatus(Long roleId, String status) { + if (UserConstants.ROLE_DISABLE.equals(status) && this.countUserRoleByRoleId(roleId) > 0) { + throw new ServiceException("瑙掕壊宸插垎閰嶏紝涓嶈兘绂佺敤!"); + } return baseMapper.update(null, new LambdaUpdateWrapper<SysRole>() .set(SysRole::getStatus, status) @@ -357,11 +378,11 @@ @Transactional(rollbackFor = Exception.class) public int deleteRoleByIds(Long[] roleIds) { for (Long roleId : roleIds) { - checkRoleAllowed(roleId); - checkRoleDataScope(roleId); SysRole role = baseMapper.selectById(roleId); + checkRoleAllowed(BeanUtil.toBean(role, SysRoleBo.class)); + checkRoleDataScope(roleId); if (countUserRoleByRoleId(roleId) > 0) { - throw new ServiceException(String.format("%1$s宸插垎閰�,涓嶈兘鍒犻櫎", role.getRoleName())); + throw new ServiceException(String.format("%1$s宸插垎閰嶏紝涓嶈兘鍒犻櫎!", role.getRoleName())); } } List<Long> ids = Arrays.asList(roleIds); @@ -435,6 +456,11 @@ @Override public void cleanOnlineUserByRole(Long roleId) { + // 濡傛灉瑙掕壊鏈粦瀹氱敤鎴� 鐩存帴杩斿洖 + Long num = userRoleMapper.selectCount(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getRoleId, roleId)); + if (num == 0) { + return; + } List<String> keys = StpUtil.searchTokenValue("", 0, -1, false); if (CollUtil.isEmpty(keys)) { return; @@ -443,7 +469,7 @@ keys.parallelStream().forEach(key -> { String token = StringUtils.substringAfterLast(key, ":"); // 濡傛灉宸茬粡杩囨湡鍒欒烦杩� - if (StpUtil.stpLogic.getTokenActivityTimeoutByToken(token) < -1) { + if (StpUtil.stpLogic.getTokenActiveTimeoutByToken(token) < -1) { return; } LoginUser loginUser = LoginHelper.getLoginUser(token); -- Gitblit v1.9.3