From bf8ac4e1bb1ac32174ac351d3241e60f7be43cfe Mon Sep 17 00:00:00 2001 From: sxu <602087911@qq.com> Date: Sun, 9 Mar 2025 14:03:15 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=92=E8=89=B2=E5=8C=BA=E5=9F=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/bonus/system/api/domain/SysRole.java | 11 ++++- .../com/bonus/system/domain/SysRoleArea.java | 46 +++++++++++++++++++ .../system/mapper/SysRoleAreaMapper.java | 46 +++++++++++++++++++ .../service/impl/SysRoleServiceImpl.java | 40 ++++++++++++++-- .../mapper/system/SysRoleAreaMapper.xml | 34 ++++++++++++++ 5 files changed, 171 insertions(+), 6 deletions(-) create mode 100644 bonus-modules/bonus-system/src/main/java/com/bonus/system/domain/SysRoleArea.java create mode 100644 bonus-modules/bonus-system/src/main/java/com/bonus/system/mapper/SysRoleAreaMapper.java create mode 100644 bonus-modules/bonus-system/src/main/resources/mapper/system/SysRoleAreaMapper.xml diff --git a/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/domain/SysRole.java b/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/domain/SysRole.java index 078a9a6..d52515e 100644 --- a/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/domain/SysRole.java +++ b/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/domain/SysRole.java @@ -76,9 +76,10 @@ public class SysRole extends BaseEntity @JsonFormat(shape = JsonFormat.Shape.STRING) private Long companyId; - @JsonFormat(shape = JsonFormat.Shape.STRING) private Long areaId; + private Long[] areaIds; + /** 角色菜单权限 */ private Set permissions; @@ -254,6 +255,14 @@ public class SysRole extends BaseEntity this.areaId = areaId; } + public Long[] getAreaIds() { + return areaIds; + } + + public void setAreaIds(Long[] areaIds) { + this.areaIds = areaIds; + } + public Set getPermissions() { return permissions; diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/domain/SysRoleArea.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/domain/SysRoleArea.java new file mode 100644 index 0000000..80358d5 --- /dev/null +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/domain/SysRoleArea.java @@ -0,0 +1,46 @@ +package com.bonus.system.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +/** + * 角色和区域关联 sys_role_area + * + * @author bonus + */ +public class SysRoleArea +{ + /** 角色ID */ + private Long roleId; + + /** 部门ID */ + @JsonFormat(shape = JsonFormat.Shape.STRING) + private Long areaId; + + public Long getRoleId() + { + return roleId; + } + + public void setRoleId(Long roleId) + { + this.roleId = roleId; + } + + public Long getAreaId() { + return areaId; + } + + public void setAreaId(Long areaId) { + this.areaId = areaId; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("roleId", getRoleId()) + .append("areaId", getAreaId()) + .toString(); + } +} diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/mapper/SysRoleAreaMapper.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/mapper/SysRoleAreaMapper.java new file mode 100644 index 0000000..e7c41e8 --- /dev/null +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/mapper/SysRoleAreaMapper.java @@ -0,0 +1,46 @@ +package com.bonus.system.mapper; + +import com.bonus.system.domain.SysRoleArea; +import com.bonus.system.domain.SysRoleDept; + +import java.util.List; + +/** + * 角色与区域关联表 数据层 + * + * @author bonus + */ +public interface SysRoleAreaMapper +{ + /** + * 通过角色ID删除角色和区域关联 + * + * @param roleId 角色ID + * @return 结果 + */ + public int deleteRoleAreaByRoleId(Long roleId); + + /** + * 批量删除角色区域关联信息 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteRoleArea(Long[] ids); + + /** + * 查询区域使用数量 + * + * @param areaId 区域ID + * @return 结果 + */ + public int selectCountRoleAreaByAreaId(Long areaId); + + /** + * 批量新增区域区域信息 + * + * @param roleAreaList 角色区域列表 + * @return 结果 + */ + public int batchRoleArea(List roleAreaList); +} 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 359d6bc..9c4d4b1 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 @@ -9,6 +9,8 @@ import java.util.Set; import com.bonus.common.core.web.domain.BaseEntity; import com.bonus.common.datascope.utils.CommonDataPermissionInfo; import com.bonus.system.api.domain.SysUserRole; +import com.bonus.system.domain.SysRoleArea; +import com.bonus.system.mapper.*; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -23,10 +25,6 @@ import com.bonus.system.api.domain.SysRole; import com.bonus.system.api.domain.SysUser; import com.bonus.system.domain.SysRoleDept; import com.bonus.system.domain.SysRoleMenu; -import com.bonus.system.mapper.SysRoleDeptMapper; -import com.bonus.system.mapper.SysRoleMapper; -import com.bonus.system.mapper.SysRoleMenuMapper; -import com.bonus.system.mapper.SysUserRoleMapper; import com.bonus.system.service.ISysRoleService; /** @@ -49,6 +47,9 @@ public class SysRoleServiceImpl implements ISysRoleService @Autowired private SysRoleDeptMapper roleDeptMapper; + @Autowired + private SysRoleAreaMapper roleAreaMapper; + /** * 根据条件分页查询角色数据 * @@ -311,7 +312,12 @@ public class SysRoleServiceImpl implements ISysRoleService // 删除角色与部门关联 roleDeptMapper.deleteRoleDeptByRoleId(role.getRoleId()); // 新增角色和部门信息(数据权限) - return insertRoleDept(role); + int roleDeptCount = insertRoleDept(role); + // 删除角色与区域关联 + roleAreaMapper.deleteRoleAreaByRoleId(role.getRoleId()); + // 新增角色和区域信息(数据权限) + int roleAreaCount = insertRoleArea(role); + return roleDeptCount + roleAreaCount; } /** @@ -362,6 +368,30 @@ public class SysRoleServiceImpl implements ISysRoleService return rows; } + /** + * 新增角色区域信息(数据权限) + * + * @param role 角色对象 + */ + public int insertRoleArea(SysRole role) + { + int rows = 1; + // 新增角色与区域(数据权限)管理 + List list = new ArrayList(); + for (Long areaId : role.getAreaIds()) + { + SysRoleArea rd = new SysRoleArea(); + rd.setRoleId(role.getRoleId()); + rd.setAreaId(areaId); + list.add(rd); + } + if (list.size() > 0) + { + rows = roleAreaMapper.batchRoleArea(list); + } + return rows; + } + /** * 通过角色ID删除角色 * diff --git a/bonus-modules/bonus-system/src/main/resources/mapper/system/SysRoleAreaMapper.xml b/bonus-modules/bonus-system/src/main/resources/mapper/system/SysRoleAreaMapper.xml new file mode 100644 index 0000000..bee6604 --- /dev/null +++ b/bonus-modules/bonus-system/src/main/resources/mapper/system/SysRoleAreaMapper.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + delete from sys_role_area where role_id=#{roleId} + + + + + + delete from sys_role_area where role_id in + + #{roleId} + + + + + insert into sys_role_area(role_id, area_id) values + + (#{item.roleId},#{item.areaId}) + + + + \ No newline at end of file