【7.6.0】【sys】【user】更新批量删除操作

pull/55/MERGE
fengshuonan 2023-06-12 10:46:16 +08:00
parent 832c3680b3
commit fe2b70c884
4 changed files with 78 additions and 20 deletions

View File

@ -1,6 +1,7 @@
package cn.stylefeng.roses.kernel.sys.modular.user.controller; package cn.stylefeng.roses.kernel.sys.modular.user.controller;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData; import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData; import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource; import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource;
@ -52,6 +53,18 @@ public class SysUserController {
return new SuccessResponseData<>(); return new SuccessResponseData<>();
} }
/**
*
*
* @author fengshuonan
* @date 2023/06/10 21:26
*/
@PostResource(name = "批量删除用户", path = "/sysUser/batchDelete")
public ResponseData<?> batchDelete(@RequestBody @Validated(BaseRequest.batchDelete.class) SysUserRequest sysUserRequest) {
sysUserService.batchDel(sysUserRequest);
return new SuccessResponseData<>();
}
/** /**
* *
* *

View File

@ -12,6 +12,7 @@ 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.List; import java.util.List;
import java.util.Set;
/** /**
* *
@ -138,4 +139,11 @@ public class SysUserRequest extends BaseRequest {
@NotEmpty(message = "用户和组织机构关系集合不能为空", groups = {add.class, edit.class}) @NotEmpty(message = "用户和组织机构关系集合不能为空", groups = {add.class, edit.class})
private List<SysUserOrg> userOrgList; private List<SysUserOrg> userOrgList;
/**
* id
*/
@ChineseDescription("用户id集合用在批量删除用户的参数")
@NotEmpty(message = "用户id集合不能为空", groups = batchDelete.class)
private Set<Long> userIdList;
} }

View File

@ -33,6 +33,14 @@ public interface SysUserService extends IService<SysUser> {
*/ */
void del(SysUserRequest sysUserRequest); void del(SysUserRequest sysUserRequest);
/**
*
*
* @author fengshuonan
* @since 2023/6/12 10:41
*/
void batchDel(SysUserRequest sysUserRequest);
/** /**
* *
* *
@ -70,5 +78,4 @@ public interface SysUserService extends IService<SysUser> {
* @date 2023/06/10 21:26 * @date 2023/06/10 21:26
*/ */
PageResult<SysUser> findPage(SysUserRequest sysUserRequest); PageResult<SysUser> findPage(SysUserRequest sysUserRequest);
} }

View File

@ -29,6 +29,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
/** /**
* *
@ -76,19 +77,26 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
throw new ServiceException(SysUserExceptionEnum.USER_CAN_NOT_DELETE_ADMIN); throw new ServiceException(SysUserExceptionEnum.USER_CAN_NOT_DELETE_ADMIN);
} }
// 校验是否有其他业务绑定了用户信息 // 删除用户的业务操作
Map<String, RemoveUserCallbackApi> removeUserCallbackApiMap = SpringUtil.getBeansOfType(RemoveUserCallbackApi.class); this.baseRemoveUser(CollectionUtil.set(false, sysUser.getUserId()));
for (RemoveUserCallbackApi removeUserCallbackApi : removeUserCallbackApiMap.values()) {
removeUserCallbackApi.validateHaveUserBind(CollectionUtil.set(false, sysUser.getUserId()));
} }
// 执行删除用户操作 @Override
this.removeById(sysUser.getUserId()); public void batchDel(SysUserRequest sysUserRequest) {
// 执行删除用户关联业务的操作 // 判断被删除用户是否有管理员
for (RemoveUserCallbackApi removeUserCallbackApi : removeUserCallbackApiMap.values()) { Set<Long> userIdList = sysUserRequest.getUserIdList();
removeUserCallbackApi.removeUserAction(CollectionUtil.set(false, sysUser.getUserId()));
LambdaQueryWrapper<SysUser> sysUserLambdaQueryWrapper = new LambdaQueryWrapper<>();
sysUserLambdaQueryWrapper.in(SysUser::getUserId, userIdList);
sysUserLambdaQueryWrapper.eq(SysUser::getSuperAdminFlag, YesOrNotEnum.Y.getCode());
long adminCount = this.count(sysUserLambdaQueryWrapper);
if (adminCount > 0) {
throw new ServiceException(SysUserExceptionEnum.USER_CAN_NOT_DELETE_ADMIN);
} }
// 删除用户的业务操作
this.baseRemoveUser(userIdList);
} }
@Override @Override
@ -183,4 +191,26 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
return queryWrapper; return queryWrapper;
} }
/**
*
*
* @author fengshuonan
* @since 2023/6/12 10:44
*/
private void baseRemoveUser(Set<Long> userIdList) {
// 校验是否有其他业务绑定了用户信息
Map<String, RemoveUserCallbackApi> removeUserCallbackApiMap = SpringUtil.getBeansOfType(RemoveUserCallbackApi.class);
for (RemoveUserCallbackApi removeUserCallbackApi : removeUserCallbackApiMap.values()) {
removeUserCallbackApi.validateHaveUserBind(userIdList);
}
// 执行删除用户操作
this.removeBatchByIds(userIdList);
// 执行删除用户关联业务的操作
for (RemoveUserCallbackApi removeUserCallbackApi : removeUserCallbackApiMap.values()) {
removeUserCallbackApi.removeUserAction(userIdList);
}
}
} }