From 21bcc2f4b967e1d6b21ca5c4adec8c44ced11883 Mon Sep 17 00:00:00 2001 From: cwchen <1048842385@qq.com> Date: Tue, 26 Aug 2025 15:38:49 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=AE=A1=E7=90=86=E3=80=81?= =?UTF-8?q?=E8=A7=92=E8=89=B2=E7=AE=A1=E7=90=86BUG=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/controller/SysRoleController.java | 14 ++++++++++++++ .../com/bonus/system/mapper/SysRoleMapper.java | 9 +++++++++ .../bonus/system/service/ISysRoleService.java | 9 +++++++++ .../service/impl/SysRoleServiceImpl.java | 18 +++++++++++++----- .../resources/mapper/system/SysRoleMapper.xml | 10 +++++++++- 5 files changed, 54 insertions(+), 6 deletions(-) diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysRoleController.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysRoleController.java index 4e0d1a6..9414a29 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysRoleController.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysRoleController.java @@ -10,6 +10,7 @@ import com.bonus.common.log.enums.OperaType; import com.bonus.common.security.annotation.InnerAuth; import com.bonus.common.security.annotation.RequiresPermissionsOrInnerAuth; import com.bonus.system.api.domain.SysUserRole; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.DeleteMapping; @@ -135,6 +136,19 @@ public class SysRoleController extends BaseController }else if (Objects.equals(role.getIsBuiltIn(), "0")) { return error("内置角色不允许修改"); } + // 查询角色是否绑定了用户、角色级别是否修改、角色状态是否修改 + List result = roleService.selectCountUserByRoleId(role); + if(CollectionUtils.isNotEmpty(result)){ + Integer isUpdate = result.get(0); + Integer isBandUser = result.get(1); + Integer useStatus = result.get(2); + if(isBandUser != 0 && isUpdate == 0){ + return error("角色已关联用户无法修改角色级别"); + } + if(isBandUser != 0 && useStatus == 0){ + return error("角色已关联用户无法修改角色状态"); + } + } role.setUpdateBy(SecurityUtils.getUsername()); return toAjax(roleService.updateRole(role)); }catch (Exception e){ diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/mapper/SysRoleMapper.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/mapper/SysRoleMapper.java index e9c39b9..4783156 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/mapper/SysRoleMapper.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/mapper/SysRoleMapper.java @@ -104,4 +104,13 @@ public interface SysRoleMapper * @return 结果 */ public int deleteRoleByIds(Long[] roleIds); + + /** + * 查询角色是否绑定了用户、角色级别是否修改、角色状态是否修改 + * @param role + * @return int + * @author cwchen + * @date 2025/8/26 14:58 + */ + List selectCountUserByRoleId(SysRole role); } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/ISysRoleService.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/ISysRoleService.java index 651bb48..e8feeb7 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/ISysRoleService.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/ISysRoleService.java @@ -170,4 +170,13 @@ public interface ISysRoleService * @return 结果 */ public int insertAuthUsers(Long roleId, Long[] userIds); + + /** + * 查询角色是否绑定了用户、角色级别是否修改、角色状态是否修改 + * @param role + * @return int + * @author cwchen + * @date 2025/8/26 14:56 + */ + List selectCountUserByRoleId(SysRole role); } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/impl/SysRoleServiceImpl.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/impl/SysRoleServiceImpl.java index 365e195..1ec269f 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/impl/SysRoleServiceImpl.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/impl/SysRoleServiceImpl.java @@ -1,14 +1,11 @@ package com.bonus.system.service.impl; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; import com.bonus.common.core.web.domain.BaseEntity; import com.bonus.common.datascope.utils.CommonDataPermissionInfo; import com.bonus.system.api.domain.SysUserRole; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -35,6 +32,7 @@ import com.bonus.system.service.ISysRoleService; * @author bonus */ @Service +@Slf4j public class SysRoleServiceImpl implements ISysRoleService { @Autowired @@ -452,4 +450,14 @@ public class SysRoleServiceImpl implements ISysRoleService } return userRoleMapper.batchUserRole(list); } + + @Override + public List selectCountUserByRoleId(SysRole role) { + try { + return Optional.ofNullable(roleMapper.selectCountUserByRoleId(role)).orElse(new ArrayList<>()); + } catch (Exception e) { + log.error(e.toString(), e); + return new ArrayList<>(); + } + } } diff --git a/bonus-modules/bonus-system/src/main/resources/mapper/system/SysRoleMapper.xml b/bonus-modules/bonus-system/src/main/resources/mapper/system/SysRoleMapper.xml index 6d64fb9..8f00594 100644 --- a/bonus-modules/bonus-system/src/main/resources/mapper/system/SysRoleMapper.xml +++ b/bonus-modules/bonus-system/src/main/resources/mapper/system/SysRoleMapper.xml @@ -108,8 +108,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" limit 1 + + - + insert into sys_role( role_id, role_name,