mirror of https://gitee.com/stylefeng/roses
【7.2.5】【role】角色资源表增加一个类型
parent
b290b2facb
commit
293a2a4fdf
|
@ -27,6 +27,7 @@ package cn.stylefeng.roses.kernel.system.api;
|
||||||
import cn.stylefeng.roses.kernel.rule.enums.ResBizTypeEnum;
|
import cn.stylefeng.roses.kernel.rule.enums.ResBizTypeEnum;
|
||||||
import cn.stylefeng.roses.kernel.scanner.api.pojo.resource.ResourceDefinition;
|
import cn.stylefeng.roses.kernel.scanner.api.pojo.resource.ResourceDefinition;
|
||||||
import cn.stylefeng.roses.kernel.scanner.api.pojo.resource.ResourceUrlParam;
|
import cn.stylefeng.roses.kernel.scanner.api.pojo.resource.ResourceUrlParam;
|
||||||
|
import cn.stylefeng.roses.kernel.system.api.pojo.role.dto.SysRoleResourceDTO;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
@ -75,6 +76,14 @@ public interface ResourceServiceApi {
|
||||||
* @author fengshuonan
|
* @author fengshuonan
|
||||||
* @date 2022/9/29 14:27
|
* @date 2022/9/29 14:27
|
||||||
*/
|
*/
|
||||||
List<String> getTotalResourceCode(ResBizTypeEnum resBizTypeEnum);
|
List<SysRoleResourceDTO> getTotalResourceCode(ResBizTypeEnum resBizTypeEnum);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取资源编码对应的资源类型
|
||||||
|
*
|
||||||
|
* @author fengshuonan
|
||||||
|
* @date 2022/10/1 14:29
|
||||||
|
*/
|
||||||
|
Integer getResourceBizTypeByCode(String resCode);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,4 +53,9 @@ public class SysRoleResourceDTO extends BaseEntity {
|
||||||
*/
|
*/
|
||||||
private String resourceCode;
|
private String resourceCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 资源的类型,1-业务类,2-系统类
|
||||||
|
*/
|
||||||
|
private Integer resourceBizType;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -401,16 +401,38 @@ public class SysResourceServiceImpl extends ServiceImpl<SysResourceMapper, SysRe
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getTotalResourceCode(ResBizTypeEnum resBizTypeEnum) {
|
public List<SysRoleResourceDTO> getTotalResourceCode(ResBizTypeEnum resBizTypeEnum) {
|
||||||
|
|
||||||
LambdaQueryWrapper<SysResource> queryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<SysResource> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
queryWrapper.select(SysResource::getResourceCode);
|
queryWrapper.select(SysResource::getResourceCode, SysResource::getResourceBizType);
|
||||||
|
|
||||||
// 根据资源类型查询
|
// 根据资源类型查询
|
||||||
queryWrapper.eq(ObjectUtil.isNotEmpty(resBizTypeEnum), SysResource::getResourceBizType, resBizTypeEnum.getCode());
|
queryWrapper.eq(ObjectUtil.isNotEmpty(resBizTypeEnum), SysResource::getResourceBizType, resBizTypeEnum.getCode());
|
||||||
|
|
||||||
List<SysResource> list = this.list(queryWrapper);
|
List<SysResource> list = this.list(queryWrapper);
|
||||||
return list.stream().map(SysResource::getResourceCode).collect(Collectors.toList());
|
|
||||||
|
ArrayList<SysRoleResourceDTO> results = new ArrayList<>();
|
||||||
|
for (SysResource sysResource : list) {
|
||||||
|
SysRoleResourceDTO sysRoleResourceDTO = new SysRoleResourceDTO();
|
||||||
|
sysRoleResourceDTO.setResourceCode(sysResource.getResourceCode());
|
||||||
|
sysRoleResourceDTO.setResourceBizType(sysResource.getResourceBizType());
|
||||||
|
results.add(sysRoleResourceDTO);
|
||||||
|
}
|
||||||
|
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer getResourceBizTypeByCode(String resCode) {
|
||||||
|
LambdaQueryWrapper<SysResource> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.select(SysResource::getResourceBizType);
|
||||||
|
queryWrapper.eq(SysResource::getResourceCode, resCode);
|
||||||
|
SysResource one = this.getOne(queryWrapper, false);
|
||||||
|
if (one == null) {
|
||||||
|
return ResBizTypeEnum.DEFAULT.getCode();
|
||||||
|
} else {
|
||||||
|
return one.getResourceBizType();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -59,4 +59,10 @@ public class SysRoleResource extends BaseEntity {
|
||||||
@TableField("resource_code")
|
@TableField("resource_code")
|
||||||
private String resourceCode;
|
private String resourceCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 资源的业务类型:1-业务类型,2-系统类型
|
||||||
|
*/
|
||||||
|
@TableField("resource_biz_type")
|
||||||
|
private Integer resourceBizType;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
*/
|
*/
|
||||||
package cn.stylefeng.roses.kernel.system.modular.role.service;
|
package cn.stylefeng.roses.kernel.system.modular.role.service;
|
||||||
|
|
||||||
|
import cn.stylefeng.roses.kernel.system.api.pojo.role.dto.SysRoleResourceDTO;
|
||||||
import cn.stylefeng.roses.kernel.system.api.pojo.role.request.SysRoleRequest;
|
import cn.stylefeng.roses.kernel.system.api.pojo.role.request.SysRoleRequest;
|
||||||
import cn.stylefeng.roses.kernel.system.modular.role.entity.SysRoleResource;
|
import cn.stylefeng.roses.kernel.system.modular.role.entity.SysRoleResource;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
@ -68,10 +69,11 @@ public interface SysRoleResourceService extends IService<SysRoleResource> {
|
||||||
* 根据角色id删除对应的角色资源信息
|
* 根据角色id删除对应的角色资源信息
|
||||||
*
|
*
|
||||||
* @param roleId 角色id
|
* @param roleId 角色id
|
||||||
|
* @param resourceBizType 指定的资源类型,如果为空,则删除所有类型的
|
||||||
* @author majianguo
|
* @author majianguo
|
||||||
* @date 2020/11/5 上午11:18
|
* @date 2020/11/5 上午11:18
|
||||||
*/
|
*/
|
||||||
void deleteRoleResourceListByRoleId(Long roleId);
|
void deleteRoleResourceListByRoleId(Long roleId, Integer resourceBizType);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保存所有的角色资源
|
* 保存所有的角色资源
|
||||||
|
@ -87,6 +89,6 @@ public interface SysRoleResourceService extends IService<SysRoleResource> {
|
||||||
* @author fengshuonan
|
* @author fengshuonan
|
||||||
* @date 2022/9/29 14:34
|
* @date 2022/9/29 14:34
|
||||||
*/
|
*/
|
||||||
void batchSaveResCodes(Long roleId, List<String> totalResourceCode);
|
void batchSaveResCodes(Long roleId, List<SysRoleResourceDTO> totalResourceCode);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,8 @@ import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi;
|
||||||
import cn.stylefeng.roses.kernel.db.api.context.DbOperatorContext;
|
import cn.stylefeng.roses.kernel.db.api.context.DbOperatorContext;
|
||||||
import cn.stylefeng.roses.kernel.rule.constants.RuleConstants;
|
import cn.stylefeng.roses.kernel.rule.constants.RuleConstants;
|
||||||
import cn.stylefeng.roses.kernel.rule.enums.DbTypeEnum;
|
import cn.stylefeng.roses.kernel.rule.enums.DbTypeEnum;
|
||||||
|
import cn.stylefeng.roses.kernel.system.api.ResourceServiceApi;
|
||||||
|
import cn.stylefeng.roses.kernel.system.api.pojo.role.dto.SysRoleResourceDTO;
|
||||||
import cn.stylefeng.roses.kernel.system.api.pojo.role.request.SysRoleRequest;
|
import cn.stylefeng.roses.kernel.system.api.pojo.role.request.SysRoleRequest;
|
||||||
import cn.stylefeng.roses.kernel.system.modular.role.entity.SysRoleResource;
|
import cn.stylefeng.roses.kernel.system.modular.role.entity.SysRoleResource;
|
||||||
import cn.stylefeng.roses.kernel.system.modular.role.mapper.SysRoleResourceMapper;
|
import cn.stylefeng.roses.kernel.system.modular.role.mapper.SysRoleResourceMapper;
|
||||||
|
@ -57,6 +59,9 @@ public class SysRoleResourceServiceImpl extends ServiceImpl<SysRoleResourceMappe
|
||||||
@Resource(name = "roleResourceCacheApi")
|
@Resource(name = "roleResourceCacheApi")
|
||||||
private CacheOperatorApi<List<String>> roleResourceCacheApi;
|
private CacheOperatorApi<List<String>> roleResourceCacheApi;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ResourceServiceApi resourceServiceApi;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void grantResource(SysRoleRequest sysRoleRequest) {
|
public void grantResource(SysRoleRequest sysRoleRequest) {
|
||||||
|
@ -72,8 +77,14 @@ public class SysRoleResourceServiceImpl extends ServiceImpl<SysRoleResourceMappe
|
||||||
roleResourceCacheApi.remove(String.valueOf(roleId));
|
roleResourceCacheApi.remove(String.valueOf(roleId));
|
||||||
|
|
||||||
// 授权资源
|
// 授权资源
|
||||||
List<String> grantResourceList = sysRoleRequest.getGrantResourceList();
|
List<String> codeList = sysRoleRequest.getGrantResourceList();
|
||||||
this.batchSaveResCodes(roleId, grantResourceList);
|
List<SysRoleResourceDTO> list = new ArrayList<>();
|
||||||
|
for (String resCode : codeList) {
|
||||||
|
SysRoleResourceDTO sysRoleResourceDTO = new SysRoleResourceDTO();
|
||||||
|
sysRoleResourceDTO.setResourceCode(resCode);
|
||||||
|
list.add(sysRoleResourceDTO);
|
||||||
|
}
|
||||||
|
this.batchSaveResCodes(roleId, list);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -95,6 +106,7 @@ public class SysRoleResourceServiceImpl extends ServiceImpl<SysRoleResourceMappe
|
||||||
SysRoleResource sysRoleResource = new SysRoleResource();
|
SysRoleResource sysRoleResource = new SysRoleResource();
|
||||||
sysRoleResource.setRoleId(sysRoleRequest.getRoleId());
|
sysRoleResource.setRoleId(sysRoleRequest.getRoleId());
|
||||||
sysRoleResource.setResourceCode(resourceCode);
|
sysRoleResource.setResourceCode(resourceCode);
|
||||||
|
sysRoleResource.setResourceBizType(resourceServiceApi.getResourceBizTypeByCode(resourceCode));
|
||||||
sysRoleResources.add(sysRoleResource);
|
sysRoleResources.add(sysRoleResource);
|
||||||
}
|
}
|
||||||
this.saveBatch(sysRoleResources, sysRoleResources.size());
|
this.saveBatch(sysRoleResources, sysRoleResources.size());
|
||||||
|
@ -128,9 +140,10 @@ public class SysRoleResourceServiceImpl extends ServiceImpl<SysRoleResourceMappe
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void deleteRoleResourceListByRoleId(Long roleId) {
|
public void deleteRoleResourceListByRoleId(Long roleId, Integer resourceBizType) {
|
||||||
LambdaQueryWrapper<SysRoleResource> queryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<SysRoleResource> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
queryWrapper.eq(SysRoleResource::getRoleId, roleId);
|
queryWrapper.eq(SysRoleResource::getRoleId, roleId);
|
||||||
|
queryWrapper.eq(ObjectUtil.isNotEmpty(resourceBizType), SysRoleResource::getResourceBizType, resourceBizType);
|
||||||
this.remove(queryWrapper);
|
this.remove(queryWrapper);
|
||||||
|
|
||||||
// 清除角色绑定的资源缓存
|
// 清除角色绑定的资源缓存
|
||||||
|
@ -159,14 +172,15 @@ public class SysRoleResourceServiceImpl extends ServiceImpl<SysRoleResourceMappe
|
||||||
* @date 2022/9/29 14:34
|
* @date 2022/9/29 14:34
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void batchSaveResCodes(Long roleId, List<String> totalResourceCode) {
|
public void batchSaveResCodes(Long roleId, List<SysRoleResourceDTO> totalResource) {
|
||||||
ArrayList<SysRoleResource> sysRoleResourceList = new ArrayList<>();
|
ArrayList<SysRoleResource> sysRoleResourceList = new ArrayList<>();
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(totalResourceCode)) {
|
if (ObjectUtil.isNotEmpty(totalResource)) {
|
||||||
for (String resCode : totalResourceCode) {
|
for (SysRoleResourceDTO resCode : totalResource) {
|
||||||
SysRoleResource sysRoleResource = new SysRoleResource();
|
SysRoleResource sysRoleResource = new SysRoleResource();
|
||||||
sysRoleResource.setRoleId(roleId);
|
sysRoleResource.setRoleId(roleId);
|
||||||
sysRoleResource.setResourceCode(resCode);
|
sysRoleResource.setResourceCode(resCode.getResourceCode());
|
||||||
|
sysRoleResource.setResourceBizType(resCode.getResourceBizType());
|
||||||
sysRoleResourceList.add(sysRoleResource);
|
sysRoleResourceList.add(sysRoleResource);
|
||||||
}
|
}
|
||||||
this.saveBatch(sysRoleResourceList);
|
this.saveBatch(sysRoleResourceList);
|
||||||
|
|
|
@ -158,7 +158,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
||||||
userServiceApi.deleteUserRoleListByRoleId(roleId);
|
userServiceApi.deleteUserRoleListByRoleId(roleId);
|
||||||
|
|
||||||
// 级联删除该角色对应的角色-菜单表关联信息
|
// 级联删除该角色对应的角色-菜单表关联信息
|
||||||
sysRoleResourceService.deleteRoleResourceListByRoleId(roleId);
|
sysRoleResourceService.deleteRoleResourceListByRoleId(roleId, null);
|
||||||
|
|
||||||
// 删除角色缓存信息
|
// 删除角色缓存信息
|
||||||
roleInfoCacheApi.remove(String.valueOf(roleId));
|
roleInfoCacheApi.remove(String.valueOf(roleId));
|
||||||
|
@ -174,7 +174,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
||||||
public void grantResourceV2GrantAll(SysRoleRequest sysRoleRequest) {
|
public void grantResourceV2GrantAll(SysRoleRequest sysRoleRequest) {
|
||||||
|
|
||||||
// 删除角色绑定的所有资源
|
// 删除角色绑定的所有资源
|
||||||
this.sysRoleResourceService.deleteRoleResourceListByRoleId(sysRoleRequest.getRoleId());
|
this.sysRoleResourceService.deleteRoleResourceListByRoleId(sysRoleRequest.getRoleId(), sysRoleRequest.getResourceBizType());
|
||||||
|
|
||||||
// 获取是全部选中,还是全部取消,如果是全部取消,则直接返回
|
// 获取是全部选中,还是全部取消,如果是全部取消,则直接返回
|
||||||
if (!sysRoleRequest.getTotalSelectFlag()) {
|
if (!sysRoleRequest.getTotalSelectFlag()) {
|
||||||
|
@ -186,7 +186,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
||||||
if (ObjectUtil.isNotEmpty(sysRoleRequest.getResourceBizType())) {
|
if (ObjectUtil.isNotEmpty(sysRoleRequest.getResourceBizType())) {
|
||||||
resBizTypeEnum = ResBizTypeEnum.DEFAULT.parseToEnum(sysRoleRequest.getResourceBizType().toString());
|
resBizTypeEnum = ResBizTypeEnum.DEFAULT.parseToEnum(sysRoleRequest.getResourceBizType().toString());
|
||||||
}
|
}
|
||||||
List<String> totalResourceCode = resourceServiceApi.getTotalResourceCode(resBizTypeEnum);
|
List<SysRoleResourceDTO> totalResourceCode = resourceServiceApi.getTotalResourceCode(resBizTypeEnum);
|
||||||
this.sysRoleResourceService.batchSaveResCodes(sysRoleRequest.getRoleId(), totalResourceCode);
|
this.sysRoleResourceService.batchSaveResCodes(sysRoleRequest.getRoleId(), totalResourceCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -79,14 +79,15 @@ public class InitAdminService {
|
||||||
|
|
||||||
// 找到所有Resource,将所有资源赋给这个角色
|
// 找到所有Resource,将所有资源赋给这个角色
|
||||||
LambdaQueryWrapper<SysResource> sysResourceLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<SysResource> sysResourceLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
sysResourceLambdaQueryWrapper.select(SysResource::getResourceCode);
|
sysResourceLambdaQueryWrapper.select(SysResource::getResourceCode, SysResource::getResourceBizType);
|
||||||
List<SysResource> resources = sysResourceService.list(sysResourceLambdaQueryWrapper);
|
List<SysResource> resources = sysResourceService.list(sysResourceLambdaQueryWrapper);
|
||||||
|
|
||||||
ArrayList<SysRoleResource> sysRoleResources = new ArrayList<>();
|
ArrayList<SysRoleResource> sysRoleResources = new ArrayList<>();
|
||||||
for (SysResource resource : resources) {
|
for (SysResource resource : resources) {
|
||||||
SysRoleResource sysRoleResource = new SysRoleResource();
|
SysRoleResource sysRoleResource = new SysRoleResource();
|
||||||
sysRoleResource.setResourceCode(resource.getResourceCode());
|
|
||||||
sysRoleResource.setRoleId(superAdminRole.getRoleId());
|
sysRoleResource.setRoleId(superAdminRole.getRoleId());
|
||||||
|
sysRoleResource.setResourceCode(resource.getResourceCode());
|
||||||
|
sysRoleResource.setResourceBizType(resource.getResourceBizType());
|
||||||
sysRoleResources.add(sysRoleResource);
|
sysRoleResources.add(sysRoleResource);
|
||||||
}
|
}
|
||||||
sysRoleResourceService.quickSaveAll(sysRoleResources);
|
sysRoleResourceService.quickSaveAll(sysRoleResources);
|
||||||
|
|
Loading…
Reference in New Issue