删除例外权限集

This commit is contained in:
yangsong 2023-09-13 21:04:01 +08:00
parent 609aaddc28
commit 22d6900246
6 changed files with 80 additions and 7 deletions

View File

@ -3,6 +3,7 @@ package cn.axzo.tyr.client.feign;
import cn.axzo.framework.domain.web.result.ApiPageResult;
import cn.axzo.framework.domain.web.result.ApiResult;
import cn.axzo.tyr.client.model.req.QuerySaasPermissionGroupReq;
import cn.axzo.tyr.client.model.vo.DeletePermissionGroupVO;
import cn.axzo.tyr.client.model.vo.SaasPermissionGroupVO;
import cn.axzo.tyr.client.model.vo.SaveOrUpdatePermissionGroupVO;
import cn.axzo.tyr.client.model.vo.SavePermissionGroupPPVO;
@ -23,8 +24,8 @@ public interface SaasPermissionGroupApi {
/**
* 保存/更新 例外
*/
@PostMapping("/api/saasPermissionGoup/saveOrUpdateScope")
ApiResult<Long> saveOrUpdateScope(@RequestBody @Valid SaveOrUpdatePermissionGroupVO permissionGroup);
@PostMapping("/api/saasPermissionGoup/saveOrUpdateSpecial")
ApiResult<Long> saveOrUpdateSpecial(@RequestBody @Valid SaveOrUpdatePermissionGroupVO permissionGroup);
/**
* 根据id查询详情
@ -48,4 +49,7 @@ public interface SaasPermissionGroupApi {
@PostMapping("/api/saasPermissionGoup/savePermissionPoints")
ApiResult<Void> savePermissionPoints(@RequestBody@Valid SavePermissionGroupPPVO save);
@PostMapping("/api/saasPermissionGoup/deletePermissionGroupSpecial")
ApiResult<Void> deletePermissionGroupSpecial(@RequestBody @Valid DeletePermissionGroupVO group);
}

View File

@ -0,0 +1,27 @@
package cn.axzo.tyr.client.model.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class DeletePermissionGroupVO {
@NotNull
private Long roleId;
@NotEmpty
private List<Long> specialPermissionGroupIds;
@NotNull
private Long operatorId;
private String operatorName;
}

View File

@ -7,6 +7,7 @@ import cn.axzo.framework.domain.web.result.ApiPageResult;
import cn.axzo.framework.domain.web.result.ApiResult;
import cn.axzo.tyr.client.feign.SaasPermissionGroupApi;
import cn.axzo.tyr.client.model.req.QuerySaasPermissionGroupReq;
import cn.axzo.tyr.client.model.vo.DeletePermissionGroupVO;
import cn.axzo.tyr.client.model.vo.SaasPermissionGroupVO;
import cn.axzo.tyr.client.model.vo.SaveOrUpdatePermissionGroupVO;
import cn.axzo.tyr.client.model.vo.SavePermissionGroupPPVO;
@ -34,7 +35,7 @@ public class SaasPermissionGroupController implements SaasPermissionGroupApi {
private final PermissionGroupService permissionGroupService;
@Override
public ApiResult<Long> saveOrUpdateScope(SaveOrUpdatePermissionGroupVO permissionGroup) {
public ApiResult<Long> saveOrUpdateSpecial(SaveOrUpdatePermissionGroupVO permissionGroup) {
return ApiResult.ok(permissionGroupService.saveOrUpdateScope(permissionGroup));
}
@ -70,4 +71,10 @@ public class SaasPermissionGroupController implements SaasPermissionGroupApi {
return ApiResult.ok();
}
@Override
public ApiResult<Void> deletePermissionGroupSpecial(DeletePermissionGroupVO group) {
permissionGroupService.deletePermissionGroupSpecial(group);
return ApiResult.ok();
}
}

View File

@ -17,5 +17,7 @@ public class SaasPermissionGroupDao extends ServiceImpl<SaasPermissionGroupMappe
.set(BaseEntity::getIsDelete,id)
.update();
}
}

View File

@ -3,6 +3,7 @@ package cn.axzo.tyr.server.service;
import cn.axzo.framework.domain.page.PageResp;
import cn.axzo.tyr.client.model.enums.PermissionGroupType;
import cn.axzo.tyr.client.model.req.QuerySaasPermissionGroupReq;
import cn.axzo.tyr.client.model.vo.DeletePermissionGroupVO;
import cn.axzo.tyr.client.model.vo.SaasPermissionGroupVO;
import cn.axzo.tyr.client.model.vo.SaveOrUpdatePermissionGroupVO;
import cn.axzo.tyr.client.model.vo.SavePermissionGroupPPVO;
@ -37,4 +38,5 @@ public interface PermissionGroupService {
SaasPermissionGroup getRequiredPermissionGroup(Long permissionGroupId, PermissionGroupType type);
void deletePermissionGroupSpecial(DeletePermissionGroupVO group);
}

View File

@ -11,10 +11,7 @@ import cn.axzo.tyr.client.model.enums.PermissionScope;
import cn.axzo.tyr.client.model.enums.PermissionScopeType;
import cn.axzo.tyr.client.model.permission.PermissionPointTreeNode;
import cn.axzo.tyr.client.model.req.QuerySaasPermissionGroupReq;
import cn.axzo.tyr.client.model.vo.SaasPermissionGroupVO;
import cn.axzo.tyr.client.model.vo.SaasRolePermissionScopeVO;
import cn.axzo.tyr.client.model.vo.SaveOrUpdatePermissionGroupVO;
import cn.axzo.tyr.client.model.vo.SavePermissionGroupPPVO;
import cn.axzo.tyr.client.model.vo.*;
import cn.axzo.tyr.server.repository.entity.*;
import cn.axzo.tyr.server.repository.service.*;
import cn.axzo.tyr.server.service.PermissionGroupService;
@ -323,6 +320,40 @@ public class PermissionGroupImpl implements PermissionGroupService {
return saasPermissionGroup;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deletePermissionGroupSpecial(DeletePermissionGroupVO group) {
List<SaasPgroupRoleRelation> relations = roleRelationDao.lambdaQuery().eq(SaasPgroupRoleRelation::getRoleId, group.getRoleId())
.in(SaasPgroupRoleRelation::getGroupId, group.getSpecialPermissionGroupIds())
.eq(SaasPgroupRoleRelation::getIsDelete, TableIsDeleteEnum.NORMAL.value).list();
if (CollectionUtils.isEmpty(relations)) {
throw new BizException(BaseCode.BAD_REQUEST, "权限集不存在");
}
List<Long> deleteGroupIds = relations.stream().map(SaasPgroupRoleRelation::getGroupId).sorted().collect(Collectors.toList());
List<SaasPermissionGroup> groups = permissionGroupDao.lambdaQuery()
.in(SaasPermissionGroup::getId, deleteGroupIds)
.eq(SaasPermissionGroup::getIsDelete, TableIsDeleteEnum.NORMAL.value).list();
if (groups.stream().anyMatch(e -> !Objects.equals(e.getIsCommon(), PermissionGroupType.SPECIAL.getCode()))) {
throw new BizException(BaseCode.BAD_REQUEST, "只能删除例外权限集");
}
//删除角色关联
roleRelationDao.removeByIds(relations.stream().map(SaasPgroupRoleRelation::getId).sorted().collect(Collectors.toList()));
List<SaasPermissionGroupScope> scopes = saasPermissionGroupScopeDao.lambdaQuery().in(SaasPermissionGroupScope::getPgroupId, deleteGroupIds)
.eq(SaasPermissionGroupScope::getIsDelete, TableIsDeleteEnum.NORMAL.value).list();
if (CollectionUtils.isNotEmpty(scopes)) {
// 删除例外scope
saasPermissionGroupScopeDao.removeByIds(scopes.stream().map(SaasPermissionGroupScope::getId).sorted().collect(Collectors.toList()));
}
// 删除通用权限集
permissionGroupDao.lambdaUpdate()
.in(BaseEntity::getId,deleteGroupIds)
.set(BaseEntity::getIsDelete, TableIsDeleteEnum.DELETE.value)
.set(BaseEntity::getUpdateAt, new Date())
.set(SaasPermissionGroup::getUpdateBy, group.getOperatorId())
.set(SaasPermissionGroup::getUpdatorName, group.getOperatorName())
.update();
}
private void validSaasPermissionGroup(SaveOrUpdatePermissionGroupVO permissionGroup) {
SaasRole saasRole = saasRoleDao.getById(permissionGroup.getRoleId());
if (Objects.isNull(saasRole)) {