mirror of https://gitee.com/stylefeng/roses
【7.6.0】【sys】【role】更新批量删除角色
parent
6050077a8f
commit
a72dd0d416
|
@ -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<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑角色
|
||||
*
|
||||
|
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue