mirror of
				https://github.com/continew-org/continew-admin.git
				synced 2025-10-31 22:57:17 +08:00 
			
		
		
		
	完善:完善用户相关业务验证
This commit is contained in:
		| @@ -33,6 +33,7 @@ import org.springframework.web.multipart.MultipartFile; | ||||
| import cn.hutool.core.collection.CollUtil; | ||||
| import cn.hutool.core.io.FileUtil; | ||||
| import cn.hutool.core.io.file.FileNameUtil; | ||||
| import cn.hutool.core.util.ObjectUtil; | ||||
| import cn.hutool.core.util.StrUtil; | ||||
|  | ||||
| import top.charles7c.cnadmin.common.base.BaseServiceImpl; | ||||
| @@ -46,6 +47,7 @@ import top.charles7c.cnadmin.common.service.CommonUserService; | ||||
| import top.charles7c.cnadmin.common.util.ExceptionUtils; | ||||
| import top.charles7c.cnadmin.common.util.FileUtils; | ||||
| import top.charles7c.cnadmin.common.util.SecureUtils; | ||||
| import top.charles7c.cnadmin.common.util.helper.LoginHelper; | ||||
| import top.charles7c.cnadmin.common.util.validate.CheckUtils; | ||||
| import top.charles7c.cnadmin.system.mapper.UserMapper; | ||||
| import top.charles7c.cnadmin.system.model.entity.UserDO; | ||||
| @@ -77,8 +79,11 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserVO, | ||||
|     @Transactional(rollbackFor = Exception.class) | ||||
|     public Long add(UserRequest request) { | ||||
|         String username = request.getUsername(); | ||||
|         boolean isExists = this.checkNameExists(username, null); | ||||
|         CheckUtils.throwIf(isExists, "新增失败,[{}] 已存在", username); | ||||
|         CheckUtils.throwIf(this.checkNameExists(username, null), "新增失败,[{}] 已存在", username); | ||||
|         String email = request.getEmail(); | ||||
|         CheckUtils.throwIf(StrUtil.isNotBlank(email) && this.checkEmailExists(email, null), "新增失败,[{}] 已存在", email); | ||||
|         String phone = request.getPhone(); | ||||
|         CheckUtils.throwIf(StrUtil.isNotBlank(phone) && this.checkPhoneExists(phone, null), "新增失败,[{}] 已存在", phone); | ||||
|  | ||||
|         // 新增信息 | ||||
|         request.setStatus(DisEnableStatusEnum.ENABLE); | ||||
| @@ -95,11 +100,18 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserVO, | ||||
|     @Transactional(rollbackFor = Exception.class) | ||||
|     public void update(UserRequest request, Long id) { | ||||
|         String username = request.getUsername(); | ||||
|         boolean isExists = this.checkNameExists(username, id); | ||||
|         CheckUtils.throwIf(isExists, "修改失败,[{}] 已存在", username); | ||||
|         CheckUtils.throwIf(this.checkNameExists(username, id), "修改失败,[{}] 已存在", username); | ||||
|         String email = request.getEmail(); | ||||
|         CheckUtils.throwIf(StrUtil.isNotBlank(email) && this.checkEmailExists(email, id), "修改失败,[{}] 已存在", email); | ||||
|         String phone = request.getPhone(); | ||||
|         CheckUtils.throwIf(StrUtil.isNotBlank(phone) && this.checkPhoneExists(phone, id), "修改失败,[{}] 已存在", phone); | ||||
|         DisEnableStatusEnum newStatus = request.getStatus(); | ||||
|         CheckUtils.throwIf( | ||||
|             DisEnableStatusEnum.DISABLE.equals(newStatus) && ObjectUtil.equal(id, LoginHelper.getUserId()), | ||||
|             "不允许禁用当前用户"); | ||||
|         UserDO oldUser = super.getById(id); | ||||
|         if (DataTypeEnum.SYSTEM.equals(oldUser.getType())) { | ||||
|             CheckUtils.throwIfEqual(DisEnableStatusEnum.DISABLE, request.getStatus(), "[{}] 是系统内置用户,不允许禁用", | ||||
|             CheckUtils.throwIfEqual(DisEnableStatusEnum.DISABLE, newStatus, "[{}] 是系统内置用户,不允许禁用", | ||||
|                 oldUser.getNickname()); | ||||
|             Collection<Long> disjunctionRoleIds = | ||||
|                 CollUtil.disjunction(request.getRoleIds(), userRoleService.listRoleIdByUserId(id)); | ||||
| @@ -115,6 +127,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserVO, | ||||
|     @Override | ||||
|     @Transactional(rollbackFor = Exception.class) | ||||
|     public void delete(List<Long> ids) { | ||||
|         CheckUtils.throwIf(CollUtil.contains(ids, LoginHelper.getUserId()), "不允许删除当前用户"); | ||||
|         List<UserDO> list = | ||||
|             baseMapper.lambdaQuery().select(UserDO::getNickname, UserDO::getType).in(UserDO::getId, ids).list(); | ||||
|         Optional<UserDO> isSystemData = list.stream().filter(u -> DataTypeEnum.SYSTEM.equals(u.getType())).findFirst(); | ||||
| @@ -236,4 +249,30 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserVO, | ||||
|     private boolean checkNameExists(String name, Long id) { | ||||
|         return baseMapper.lambdaQuery().eq(UserDO::getUsername, name).ne(id != null, UserDO::getId, id).exists(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 检查邮箱是否存在 | ||||
|      * | ||||
|      * @param email | ||||
|      *            邮箱 | ||||
|      * @param id | ||||
|      *            ID | ||||
|      * @return 是否存在 | ||||
|      */ | ||||
|     private boolean checkEmailExists(String email, Long id) { | ||||
|         return baseMapper.lambdaQuery().eq(UserDO::getEmail, email).ne(id != null, UserDO::getId, id).exists(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 检查手机号码是否存在 | ||||
|      * | ||||
|      * @param phone | ||||
|      *            手机号码 | ||||
|      * @param id | ||||
|      *            ID | ||||
|      * @return 是否存在 | ||||
|      */ | ||||
|     private boolean checkPhoneExists(String phone, Long id) { | ||||
|         return baseMapper.lambdaQuery().eq(UserDO::getPhone, phone).ne(id != null, UserDO::getId, id).exists(); | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user