【7.6.0】【sys】【role】更新批量删除角色

pull/55/MERGE
fengshuonan 2023-06-12 21:16:08 +08:00
parent 6050077a8f
commit a72dd0d416
4 changed files with 78 additions and 20 deletions

View File

@ -52,6 +52,18 @@ public class SysRoleController {
return new SuccessResponseData<>();
}
/**
*
*
* @author fengshuonan
* @date 2023/06/10 21:29
*/
@PostResource(name = "批量删除角色", path = "/sysRole/batchDelete")
public ResponseData<?> batchDelete(@RequestBody @Validated(SysRoleRequest.batchDelete.class) SysRoleRequest sysRoleRequest) {
sysRoleService.batchDelete(sysRoleRequest);
return new SuccessResponseData<>();
}
/**
*
*

View File

@ -6,8 +6,10 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Set;
/**
*
@ -74,4 +76,11 @@ public class SysRoleRequest extends BaseRequest {
@ChineseDescription("是否是系统角色Y-是N-否。系统角色不能删除")
private String roleSystemFlag;
/**
* id
*/
@NotEmpty(message = "角色id集合不能为空", groups = batchDelete.class)
@ChineseDescription("角色id集合用在批量删除")
private Set<Long> roleIdList;
}

View File

@ -15,7 +15,7 @@ import java.util.List;
*/
public interface SysRoleService extends IService<SysRole> {
/**
/**
*
*
* @param sysRoleRequest
@ -24,7 +24,7 @@ public interface SysRoleService extends IService<SysRole> {
*/
void add(SysRoleRequest sysRoleRequest);
/**
/**
*
*
* @param sysRoleRequest
@ -33,7 +33,15 @@ public interface SysRoleService extends IService<SysRole> {
*/
void del(SysRoleRequest sysRoleRequest);
/**
/**
*
*
* @author fengshuonan
* @since 2023/6/12 21:11
*/
void batchDelete(SysRoleRequest sysRoleRequest);
/**
*
*
* @param sysRoleRequest
@ -42,7 +50,7 @@ public interface SysRoleService extends IService<SysRole> {
*/
void edit(SysRoleRequest sysRoleRequest);
/**
/**
*
*
* @param sysRoleRequest
@ -51,20 +59,20 @@ public interface SysRoleService extends IService<SysRole> {
*/
SysRole detail(SysRoleRequest sysRoleRequest);
/**
/**
*
*
* @param sysRoleRequest
* @param sysRoleRequest
* @return List<SysRole>
* @author fengshuonan
* @date 2023/06/10 21:29
*/
List<SysRole> findList(SysRoleRequest sysRoleRequest);
/**
/**
*
*
* @param sysRoleRequest
* @param sysRoleRequest
* @return PageResult<SysRole>
* @author fengshuonan
* @date 2023/06/10 21:29

View File

@ -25,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
*
@ -56,19 +57,25 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
throw new ServiceException(SysRoleExceptionEnum.SYSTEM_ROLE_CANT_DELETE);
}
// 执行角色相关的校验
Map<String, RemoveRoleCallbackApi> callbackApiMap = SpringUtil.getBeansOfType(RemoveRoleCallbackApi.class);
for (RemoveRoleCallbackApi removeRoleCallbackApi : callbackApiMap.values()) {
removeRoleCallbackApi.validateHaveRoleBind(CollectionUtil.set(false, sysRole.getRoleId()));
}
// 执行角色相关关联业务的删除操作
for (RemoveRoleCallbackApi removeRoleCallbackApi : callbackApiMap.values()) {
removeRoleCallbackApi.removeRoleAction(CollectionUtil.set(false, sysRole.getRoleId()));
}
// 删除角色
this.removeById(sysRole.getRoleId());
this.baseDelete(CollectionUtil.set(false, sysRole.getRoleId()));
}
@Override
@Transactional(rollbackFor = Exception.class)
public void batchDelete(SysRoleRequest sysRoleRequest) {
// 校验被删除的角色中是否有管理员角色
LambdaQueryWrapper<SysRole> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(SysRole::getRoleId, sysRoleRequest.getRoleIdList());
queryWrapper.eq(SysRole::getRoleSystemFlag, YesOrNotEnum.Y.getCode());
long haveSystemFlagCount = this.count(queryWrapper);
if (haveSystemFlagCount > 0) {
throw new ServiceException(SysRoleExceptionEnum.SYSTEM_ROLE_CANT_DELETE);
}
// 执行删除角色
this.baseDelete(sysRoleRequest.getRoleIdList());
}
@Override
@ -142,4 +149,26 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
return queryWrapper;
}
/**
*
*
* @author fengshuonan
* @since 2023/6/12 21:14
*/
private void baseDelete(Set<Long> roleIdList) {
// 执行角色相关的校验
Map<String, RemoveRoleCallbackApi> callbackApiMap = SpringUtil.getBeansOfType(RemoveRoleCallbackApi.class);
for (RemoveRoleCallbackApi removeRoleCallbackApi : callbackApiMap.values()) {
removeRoleCallbackApi.validateHaveRoleBind(roleIdList);
}
// 执行角色相关关联业务的删除操作
for (RemoveRoleCallbackApi removeRoleCallbackApi : callbackApiMap.values()) {
removeRoleCallbackApi.removeRoleAction(roleIdList);
}
// 删除角色
this.removeBatchByIds(roleIdList);
}
}