【7.2.5】【role】角色资源表增加一个类型

pull/37/head
fengshuonan 2022-10-01 15:02:57 +08:00
parent b290b2facb
commit 293a2a4fdf
8 changed files with 78 additions and 19 deletions

View File

@ -27,6 +27,7 @@ package cn.stylefeng.roses.kernel.system.api;
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.ResourceUrlParam;
import cn.stylefeng.roses.kernel.system.api.pojo.role.dto.SysRoleResourceDTO;
import java.util.List;
import java.util.Set;
@ -75,6 +76,14 @@ public interface ResourceServiceApi {
* @author fengshuonan
* @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);
}

View File

@ -53,4 +53,9 @@ public class SysRoleResourceDTO extends BaseEntity {
*/
private String resourceCode;
/**
* 1-2-
*/
private Integer resourceBizType;
}

View File

@ -401,16 +401,38 @@ public class SysResourceServiceImpl extends ServiceImpl<SysResourceMapper, SysRe
}
@Override
public List<String> getTotalResourceCode(ResBizTypeEnum resBizTypeEnum) {
public List<SysRoleResourceDTO> getTotalResourceCode(ResBizTypeEnum resBizTypeEnum) {
LambdaQueryWrapper<SysResource> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.select(SysResource::getResourceCode);
queryWrapper.select(SysResource::getResourceCode, SysResource::getResourceBizType);
// 根据资源类型查询
queryWrapper.eq(ObjectUtil.isNotEmpty(resBizTypeEnum), SysResource::getResourceBizType, resBizTypeEnum.getCode());
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();
}
}
/**

View File

@ -59,4 +59,10 @@ public class SysRoleResource extends BaseEntity {
@TableField("resource_code")
private String resourceCode;
/**
* 1-2-
*/
@TableField("resource_biz_type")
private Integer resourceBizType;
}

View File

@ -24,6 +24,7 @@
*/
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.modular.role.entity.SysRoleResource;
import com.baomidou.mybatisplus.extension.service.IService;
@ -67,11 +68,12 @@ public interface SysRoleResourceService extends IService<SysRoleResource> {
/**
* id
*
* @param roleId id
* @param roleId id
* @param resourceBizType
* @author majianguo
* @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
* @date 2022/9/29 14:34
*/
void batchSaveResCodes(Long roleId, List<String> totalResourceCode);
void batchSaveResCodes(Long roleId, List<SysRoleResourceDTO> totalResourceCode);
}

View File

@ -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.rule.constants.RuleConstants;
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.modular.role.entity.SysRoleResource;
import cn.stylefeng.roses.kernel.system.modular.role.mapper.SysRoleResourceMapper;
@ -57,6 +59,9 @@ public class SysRoleResourceServiceImpl extends ServiceImpl<SysRoleResourceMappe
@Resource(name = "roleResourceCacheApi")
private CacheOperatorApi<List<String>> roleResourceCacheApi;
@Resource
private ResourceServiceApi resourceServiceApi;
@Override
@Transactional(rollbackFor = Exception.class)
public void grantResource(SysRoleRequest sysRoleRequest) {
@ -72,8 +77,14 @@ public class SysRoleResourceServiceImpl extends ServiceImpl<SysRoleResourceMappe
roleResourceCacheApi.remove(String.valueOf(roleId));
// 授权资源
List<String> grantResourceList = sysRoleRequest.getGrantResourceList();
this.batchSaveResCodes(roleId, grantResourceList);
List<String> codeList = sysRoleRequest.getGrantResourceList();
List<SysRoleResourceDTO> list = new ArrayList<>();
for (String resCode : codeList) {
SysRoleResourceDTO sysRoleResourceDTO = new SysRoleResourceDTO();
sysRoleResourceDTO.setResourceCode(resCode);
list.add(sysRoleResourceDTO);
}
this.batchSaveResCodes(roleId, list);
}
@Override
@ -95,6 +106,7 @@ public class SysRoleResourceServiceImpl extends ServiceImpl<SysRoleResourceMappe
SysRoleResource sysRoleResource = new SysRoleResource();
sysRoleResource.setRoleId(sysRoleRequest.getRoleId());
sysRoleResource.setResourceCode(resourceCode);
sysRoleResource.setResourceBizType(resourceServiceApi.getResourceBizTypeByCode(resourceCode));
sysRoleResources.add(sysRoleResource);
}
this.saveBatch(sysRoleResources, sysRoleResources.size());
@ -128,9 +140,10 @@ public class SysRoleResourceServiceImpl extends ServiceImpl<SysRoleResourceMappe
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteRoleResourceListByRoleId(Long roleId) {
public void deleteRoleResourceListByRoleId(Long roleId, Integer resourceBizType) {
LambdaQueryWrapper<SysRoleResource> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SysRoleResource::getRoleId, roleId);
queryWrapper.eq(ObjectUtil.isNotEmpty(resourceBizType), SysRoleResource::getResourceBizType, resourceBizType);
this.remove(queryWrapper);
// 清除角色绑定的资源缓存
@ -159,14 +172,15 @@ public class SysRoleResourceServiceImpl extends ServiceImpl<SysRoleResourceMappe
* @date 2022/9/29 14:34
*/
@Override
public void batchSaveResCodes(Long roleId, List<String> totalResourceCode) {
public void batchSaveResCodes(Long roleId, List<SysRoleResourceDTO> totalResource) {
ArrayList<SysRoleResource> sysRoleResourceList = new ArrayList<>();
if (ObjectUtil.isNotEmpty(totalResourceCode)) {
for (String resCode : totalResourceCode) {
if (ObjectUtil.isNotEmpty(totalResource)) {
for (SysRoleResourceDTO resCode : totalResource) {
SysRoleResource sysRoleResource = new SysRoleResource();
sysRoleResource.setRoleId(roleId);
sysRoleResource.setResourceCode(resCode);
sysRoleResource.setResourceCode(resCode.getResourceCode());
sysRoleResource.setResourceBizType(resCode.getResourceBizType());
sysRoleResourceList.add(sysRoleResource);
}
this.saveBatch(sysRoleResourceList);

View File

@ -158,7 +158,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
userServiceApi.deleteUserRoleListByRoleId(roleId);
// 级联删除该角色对应的角色-菜单表关联信息
sysRoleResourceService.deleteRoleResourceListByRoleId(roleId);
sysRoleResourceService.deleteRoleResourceListByRoleId(roleId, null);
// 删除角色缓存信息
roleInfoCacheApi.remove(String.valueOf(roleId));
@ -174,7 +174,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
public void grantResourceV2GrantAll(SysRoleRequest sysRoleRequest) {
// 删除角色绑定的所有资源
this.sysRoleResourceService.deleteRoleResourceListByRoleId(sysRoleRequest.getRoleId());
this.sysRoleResourceService.deleteRoleResourceListByRoleId(sysRoleRequest.getRoleId(), sysRoleRequest.getResourceBizType());
// 获取是全部选中,还是全部取消,如果是全部取消,则直接返回
if (!sysRoleRequest.getTotalSelectFlag()) {
@ -186,7 +186,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
if (ObjectUtil.isNotEmpty(sysRoleRequest.getResourceBizType())) {
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);
}

View File

@ -79,14 +79,15 @@ public class InitAdminService {
// 找到所有Resource将所有资源赋给这个角色
LambdaQueryWrapper<SysResource> sysResourceLambdaQueryWrapper = new LambdaQueryWrapper<>();
sysResourceLambdaQueryWrapper.select(SysResource::getResourceCode);
sysResourceLambdaQueryWrapper.select(SysResource::getResourceCode, SysResource::getResourceBizType);
List<SysResource> resources = sysResourceService.list(sysResourceLambdaQueryWrapper);
ArrayList<SysRoleResource> sysRoleResources = new ArrayList<>();
for (SysResource resource : resources) {
SysRoleResource sysRoleResource = new SysRoleResource();
sysRoleResource.setResourceCode(resource.getResourceCode());
sysRoleResource.setRoleId(superAdminRole.getRoleId());
sysRoleResource.setResourceCode(resource.getResourceCode());
sysRoleResource.setResourceBizType(resource.getResourceBizType());
sysRoleResources.add(sysRoleResource);
}
sysRoleResourceService.quickSaveAll(sysRoleResources);