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<>();
|
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 lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import javax.validation.constraints.NotBlank;
|
||||||
|
import javax.validation.constraints.NotEmpty;
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 系统角色封装类
|
* 系统角色封装类
|
||||||
|
@ -74,4 +76,11 @@ public class SysRoleRequest extends BaseRequest {
|
||||||
@ChineseDescription("是否是系统角色:Y-是,N-否。系统角色不能删除")
|
@ChineseDescription("是否是系统角色:Y-是,N-否。系统角色不能删除")
|
||||||
private String roleSystemFlag;
|
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> {
|
public interface SysRoleService extends IService<SysRole> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增
|
* 新增
|
||||||
*
|
*
|
||||||
* @param sysRoleRequest 请求参数
|
* @param sysRoleRequest 请求参数
|
||||||
|
@ -24,7 +24,7 @@ public interface SysRoleService extends IService<SysRole> {
|
||||||
*/
|
*/
|
||||||
void add(SysRoleRequest sysRoleRequest);
|
void add(SysRoleRequest sysRoleRequest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除
|
* 删除
|
||||||
*
|
*
|
||||||
* @param sysRoleRequest 请求参数
|
* @param sysRoleRequest 请求参数
|
||||||
|
@ -33,7 +33,15 @@ public interface SysRoleService extends IService<SysRole> {
|
||||||
*/
|
*/
|
||||||
void del(SysRoleRequest sysRoleRequest);
|
void del(SysRoleRequest sysRoleRequest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* 批量删除角色
|
||||||
|
*
|
||||||
|
* @author fengshuonan
|
||||||
|
* @since 2023/6/12 21:11
|
||||||
|
*/
|
||||||
|
void batchDelete(SysRoleRequest sysRoleRequest);
|
||||||
|
|
||||||
|
/**
|
||||||
* 编辑
|
* 编辑
|
||||||
*
|
*
|
||||||
* @param sysRoleRequest 请求参数
|
* @param sysRoleRequest 请求参数
|
||||||
|
@ -42,7 +50,7 @@ public interface SysRoleService extends IService<SysRole> {
|
||||||
*/
|
*/
|
||||||
void edit(SysRoleRequest sysRoleRequest);
|
void edit(SysRoleRequest sysRoleRequest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询详情
|
* 查询详情
|
||||||
*
|
*
|
||||||
* @param sysRoleRequest 请求参数
|
* @param sysRoleRequest 请求参数
|
||||||
|
@ -51,20 +59,20 @@ public interface SysRoleService extends IService<SysRole> {
|
||||||
*/
|
*/
|
||||||
SysRole detail(SysRoleRequest sysRoleRequest);
|
SysRole detail(SysRoleRequest sysRoleRequest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取列表
|
* 获取列表
|
||||||
*
|
*
|
||||||
* @param sysRoleRequest 请求参数
|
* @param sysRoleRequest 请求参数
|
||||||
* @return List<SysRole> 返回结果
|
* @return List<SysRole> 返回结果
|
||||||
* @author fengshuonan
|
* @author fengshuonan
|
||||||
* @date 2023/06/10 21:29
|
* @date 2023/06/10 21:29
|
||||||
*/
|
*/
|
||||||
List<SysRole> findList(SysRoleRequest sysRoleRequest);
|
List<SysRole> findList(SysRoleRequest sysRoleRequest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取列表(带分页)
|
* 获取列表(带分页)
|
||||||
*
|
*
|
||||||
* @param sysRoleRequest 请求参数
|
* @param sysRoleRequest 请求参数
|
||||||
* @return PageResult<SysRole> 返回结果
|
* @return PageResult<SysRole> 返回结果
|
||||||
* @author fengshuonan
|
* @author fengshuonan
|
||||||
* @date 2023/06/10 21:29
|
* @date 2023/06/10 21:29
|
||||||
|
|
|
@ -25,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
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);
|
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
|
@Override
|
||||||
|
@ -142,4 +149,26 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
||||||
return queryWrapper;
|
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