【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

@ -15,7 +15,7 @@ import java.util.List;
*/ */
public interface SysUserService extends IService<SysUser> { public interface SysUserService extends IService<SysUser> {
/** /**
* *
* *
* @param sysUserRequest * @param sysUserRequest
@ -24,7 +24,7 @@ public interface SysUserService extends IService<SysUser> {
*/ */
void add(SysUserRequest sysUserRequest); void add(SysUserRequest sysUserRequest);
/** /**
* *
* *
* @param sysUserRequest * @param sysUserRequest
@ -33,7 +33,15 @@ 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);
/**
* *
* *
* @param sysUserRequest * @param sysUserRequest
@ -42,7 +50,7 @@ public interface SysUserService extends IService<SysUser> {
*/ */
void edit(SysUserRequest sysUserRequest); void edit(SysUserRequest sysUserRequest);
/** /**
* *
* *
* @param sysUserRequest * @param sysUserRequest
@ -51,24 +59,23 @@ public interface SysUserService extends IService<SysUser> {
*/ */
SysUser detail(SysUserRequest sysUserRequest); SysUser detail(SysUserRequest sysUserRequest);
/** /**
* *
* *
* @param sysUserRequest * @param sysUserRequest
* @return List<SysUser> * @return List<SysUser>
* @author fengshuonan * @author fengshuonan
* @date 2023/06/10 21:26 * @date 2023/06/10 21:26
*/ */
List<SysUser> findList(SysUserRequest sysUserRequest); List<SysUser> findList(SysUserRequest sysUserRequest);
/** /**
* *
* *
* @param sysUserRequest * @param sysUserRequest
* @return PageResult<SysUser> * @return PageResult<SysUser>
* @author fengshuonan * @author fengshuonan
* @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
public void batchDel(SysUserRequest sysUserRequest) {
// 判断被删除用户是否有管理员
Set<Long> userIdList = sysUserRequest.getUserIdList();
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.removeById(sysUser.getUserId()); this.baseRemoveUser(userIdList);
// 执行删除用户关联业务的操作
for (RemoveUserCallbackApi removeUserCallbackApi : removeUserCallbackApiMap.values()) {
removeUserCallbackApi.removeUserAction(CollectionUtil.set(false, sysUser.getUserId()));
}
} }
@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);
}
}
} }