mirror of
				https://github.com/YunaiV/ruoyi-vue-pro.git
				synced 2025-10-31 10:37:41 +08:00 
			
		
		
		
	bugfix-导入系统用户时,增加注解校验过程,与界面添加和修改用户保持一致
This commit is contained in:
		| @ -103,6 +103,10 @@ public class RandomUtils { | |||||||
|         return randomString() + "@qq.com"; |         return randomString() + "@qq.com"; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public static String randomMobile() { | ||||||
|  |         return "13800138" + RandomUtil.randomNumbers(3); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     public static String randomURL() { |     public static String randomURL() { | ||||||
|         return "https://www.iocoder.cn/" + randomString(); |         return "https://www.iocoder.cn/" + randomString(); | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -9,6 +9,7 @@ import cn.iocoder.yudao.framework.common.exception.ServiceException; | |||||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||||
| import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | ||||||
| import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | ||||||
|  | import cn.iocoder.yudao.framework.common.util.validation.ValidationUtils; | ||||||
| import cn.iocoder.yudao.framework.datapermission.core.util.DataPermissionUtils; | import cn.iocoder.yudao.framework.datapermission.core.util.DataPermissionUtils; | ||||||
| import cn.iocoder.yudao.module.infra.api.config.ConfigApi; | import cn.iocoder.yudao.module.infra.api.config.ConfigApi; | ||||||
| import cn.iocoder.yudao.module.infra.api.file.FileApi; | import cn.iocoder.yudao.module.infra.api.file.FileApi; | ||||||
| @ -32,6 +33,7 @@ import com.mzt.logapi.context.LogRecordContext; | |||||||
| import com.mzt.logapi.service.impl.DiffParseFunction; | import com.mzt.logapi.service.impl.DiffParseFunction; | ||||||
| import com.mzt.logapi.starter.annotation.LogRecord; | import com.mzt.logapi.starter.annotation.LogRecord; | ||||||
| import jakarta.annotation.Resource; | import jakarta.annotation.Resource; | ||||||
|  | import jakarta.validation.ConstraintViolationException; | ||||||
| import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||||
| import org.springframework.context.annotation.Lazy; | import org.springframework.context.annotation.Lazy; | ||||||
| import org.springframework.security.crypto.password.PasswordEncoder; | import org.springframework.security.crypto.password.PasswordEncoder; | ||||||
| @ -40,13 +42,36 @@ import org.springframework.transaction.annotation.Transactional; | |||||||
|  |  | ||||||
| import java.io.InputStream; | import java.io.InputStream; | ||||||
| import java.time.LocalDateTime; | import java.time.LocalDateTime; | ||||||
| import java.util.*; | import java.util.ArrayList; | ||||||
|  | import java.util.Collection; | ||||||
|  | import java.util.Collections; | ||||||
|  | import java.util.HashSet; | ||||||
|  | import java.util.LinkedHashMap; | ||||||
|  | import java.util.List; | ||||||
|  | import java.util.Map; | ||||||
|  | import java.util.Set; | ||||||
|  |  | ||||||
| import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | ||||||
| import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; | ||||||
| import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; | ||||||
| import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; | import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_COUNT_MAX; | ||||||
| import static cn.iocoder.yudao.module.system.enums.LogRecordConstants.*; | import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_EMAIL_EXISTS; | ||||||
|  | import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_IMPORT_INIT_PASSWORD; | ||||||
|  | import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_IMPORT_LIST_IS_EMPTY; | ||||||
|  | import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_IS_DISABLE; | ||||||
|  | import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_MOBILE_EXISTS; | ||||||
|  | import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_NOT_EXISTS; | ||||||
|  | import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_PASSWORD_FAILED; | ||||||
|  | import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_USERNAME_EXISTS; | ||||||
|  | import static cn.iocoder.yudao.module.system.enums.LogRecordConstants.SYSTEM_USER_CREATE_SUB_TYPE; | ||||||
|  | import static cn.iocoder.yudao.module.system.enums.LogRecordConstants.SYSTEM_USER_CREATE_SUCCESS; | ||||||
|  | import static cn.iocoder.yudao.module.system.enums.LogRecordConstants.SYSTEM_USER_DELETE_SUB_TYPE; | ||||||
|  | import static cn.iocoder.yudao.module.system.enums.LogRecordConstants.SYSTEM_USER_DELETE_SUCCESS; | ||||||
|  | import static cn.iocoder.yudao.module.system.enums.LogRecordConstants.SYSTEM_USER_TYPE; | ||||||
|  | import static cn.iocoder.yudao.module.system.enums.LogRecordConstants.SYSTEM_USER_UPDATE_PASSWORD_SUB_TYPE; | ||||||
|  | import static cn.iocoder.yudao.module.system.enums.LogRecordConstants.SYSTEM_USER_UPDATE_PASSWORD_SUCCESS; | ||||||
|  | import static cn.iocoder.yudao.module.system.enums.LogRecordConstants.SYSTEM_USER_UPDATE_SUB_TYPE; | ||||||
|  | import static cn.iocoder.yudao.module.system.enums.LogRecordConstants.SYSTEM_USER_UPDATE_SUCCESS; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 后台用户 Service 实现类 |  * 后台用户 Service 实现类 | ||||||
| @ -451,6 +476,13 @@ public class AdminUserServiceImpl implements AdminUserService { | |||||||
|                 respVO.getFailureUsernames().put(importUser.getUsername(), ex.getMessage()); |                 respVO.getFailureUsernames().put(importUser.getUsername(), ex.getMessage()); | ||||||
|                 return; |                 return; | ||||||
|             } |             } | ||||||
|  |             // 校验字段是否符合要求 | ||||||
|  |             try { | ||||||
|  |                 ValidationUtils.validate(BeanUtils.toBean(importUser, UserSaveReqVO.class).setPassword(initPassword)); | ||||||
|  |             }catch (ConstraintViolationException ex){ | ||||||
|  |                 respVO.getFailureUsernames().put(importUser.getUsername(), ex.getMessage()); | ||||||
|  |                 return; | ||||||
|  |             } | ||||||
|             // 判断如果不存在,在进行插入 |             // 判断如果不存在,在进行插入 | ||||||
|             AdminUserDO existUser = userMapper.selectByUsername(importUser.getUsername()); |             AdminUserDO existUser = userMapper.selectByUsername(importUser.getUsername()); | ||||||
|             if (existUser == null) { |             if (existUser == null) { | ||||||
|  | |||||||
| @ -452,6 +452,8 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest { | |||||||
|         UserImportExcelVO importUser = randomPojo(UserImportExcelVO.class, o -> { |         UserImportExcelVO importUser = randomPojo(UserImportExcelVO.class, o -> { | ||||||
|             o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围 |             o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围 | ||||||
|             o.setSex(randomEle(SexEnum.values()).getSex()); // 保证 sex 的范围 |             o.setSex(randomEle(SexEnum.values()).getSex()); // 保证 sex 的范围 | ||||||
|  |             o.setEmail(randomEmail()); | ||||||
|  |             o.setMobile(randomMobile()); | ||||||
|         }); |         }); | ||||||
|         // mock deptService 的方法 |         // mock deptService 的方法 | ||||||
|         DeptDO dept = randomPojo(DeptDO.class, o -> { |         DeptDO dept = randomPojo(DeptDO.class, o -> { | ||||||
| @ -486,6 +488,8 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest { | |||||||
|             o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围 |             o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围 | ||||||
|             o.setSex(randomEle(SexEnum.values()).getSex()); // 保证 sex 的范围 |             o.setSex(randomEle(SexEnum.values()).getSex()); // 保证 sex 的范围 | ||||||
|             o.setUsername(dbUser.getUsername()); |             o.setUsername(dbUser.getUsername()); | ||||||
|  |             o.setEmail(randomEmail()); | ||||||
|  |             o.setMobile(randomMobile()); | ||||||
|         }); |         }); | ||||||
|         // mock deptService 的方法 |         // mock deptService 的方法 | ||||||
|         DeptDO dept = randomPojo(DeptDO.class, o -> { |         DeptDO dept = randomPojo(DeptDO.class, o -> { | ||||||
| @ -516,6 +520,8 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest { | |||||||
|             o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围 |             o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围 | ||||||
|             o.setSex(randomEle(SexEnum.values()).getSex()); // 保证 sex 的范围 |             o.setSex(randomEle(SexEnum.values()).getSex()); // 保证 sex 的范围 | ||||||
|             o.setUsername(dbUser.getUsername()); |             o.setUsername(dbUser.getUsername()); | ||||||
|  |             o.setEmail(randomEmail()); | ||||||
|  |             o.setMobile(randomMobile()); | ||||||
|         }); |         }); | ||||||
|         // mock deptService 的方法 |         // mock deptService 的方法 | ||||||
|         DeptDO dept = randomPojo(DeptDO.class, o -> { |         DeptDO dept = randomPojo(DeptDO.class, o -> { | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 yinyilong
					yinyilong