Commit d0cec28bfdcecf114a3b43e32b2316b7c26052f2
1 parent
36765d53
【代码优化】SYSTEM:优化用户导入的实现
Showing
2 changed files
with
15 additions
and
35 deletions
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java
| ... | ... | @@ -42,36 +42,13 @@ import org.springframework.transaction.annotation.Transactional; |
| 42 | 42 | |
| 43 | 43 | import java.io.InputStream; |
| 44 | 44 | import java.time.LocalDateTime; |
| 45 | -import java.util.ArrayList; | |
| 46 | -import java.util.Collection; | |
| 47 | -import java.util.Collections; | |
| 48 | -import java.util.HashSet; | |
| 49 | -import java.util.LinkedHashMap; | |
| 50 | -import java.util.List; | |
| 51 | -import java.util.Map; | |
| 52 | -import java.util.Set; | |
| 45 | +import java.util.*; | |
| 53 | 46 | |
| 54 | 47 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 55 | 48 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; |
| 56 | 49 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| 57 | -import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_COUNT_MAX; | |
| 58 | -import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_EMAIL_EXISTS; | |
| 59 | -import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_IMPORT_INIT_PASSWORD; | |
| 60 | -import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_IMPORT_LIST_IS_EMPTY; | |
| 61 | -import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_IS_DISABLE; | |
| 62 | -import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_MOBILE_EXISTS; | |
| 63 | -import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_NOT_EXISTS; | |
| 64 | -import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_PASSWORD_FAILED; | |
| 65 | -import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_USERNAME_EXISTS; | |
| 66 | -import static cn.iocoder.yudao.module.system.enums.LogRecordConstants.SYSTEM_USER_CREATE_SUB_TYPE; | |
| 67 | -import static cn.iocoder.yudao.module.system.enums.LogRecordConstants.SYSTEM_USER_CREATE_SUCCESS; | |
| 68 | -import static cn.iocoder.yudao.module.system.enums.LogRecordConstants.SYSTEM_USER_DELETE_SUB_TYPE; | |
| 69 | -import static cn.iocoder.yudao.module.system.enums.LogRecordConstants.SYSTEM_USER_DELETE_SUCCESS; | |
| 70 | -import static cn.iocoder.yudao.module.system.enums.LogRecordConstants.SYSTEM_USER_TYPE; | |
| 71 | -import static cn.iocoder.yudao.module.system.enums.LogRecordConstants.SYSTEM_USER_UPDATE_PASSWORD_SUB_TYPE; | |
| 72 | -import static cn.iocoder.yudao.module.system.enums.LogRecordConstants.SYSTEM_USER_UPDATE_PASSWORD_SUCCESS; | |
| 73 | -import static cn.iocoder.yudao.module.system.enums.LogRecordConstants.SYSTEM_USER_UPDATE_SUB_TYPE; | |
| 74 | -import static cn.iocoder.yudao.module.system.enums.LogRecordConstants.SYSTEM_USER_UPDATE_SUCCESS; | |
| 50 | +import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; | |
| 51 | +import static cn.iocoder.yudao.module.system.enums.LogRecordConstants.*; | |
| 75 | 52 | |
| 76 | 53 | /** |
| 77 | 54 | * 后台用户 Service 实现类 |
| ... | ... | @@ -468,22 +445,23 @@ public class AdminUserServiceImpl implements AdminUserService { |
| 468 | 445 | UserImportRespVO respVO = UserImportRespVO.builder().createUsernames(new ArrayList<>()) |
| 469 | 446 | .updateUsernames(new ArrayList<>()).failureUsernames(new LinkedHashMap<>()).build(); |
| 470 | 447 | importUsers.forEach(importUser -> { |
| 471 | - // 校验,判断是否有不符合的原因 | |
| 448 | + // 2.1.1 校验字段是否符合要求 | |
| 472 | 449 | try { |
| 473 | - validateUserForCreateOrUpdate(null, null, importUser.getMobile(), importUser.getEmail(), | |
| 474 | - importUser.getDeptId(), null); | |
| 475 | - } catch (ServiceException ex) { | |
| 450 | + ValidationUtils.validate(BeanUtils.toBean(importUser, UserSaveReqVO.class).setPassword(initPassword)); | |
| 451 | + } catch (ConstraintViolationException ex){ | |
| 476 | 452 | respVO.getFailureUsernames().put(importUser.getUsername(), ex.getMessage()); |
| 477 | 453 | return; |
| 478 | 454 | } |
| 479 | - // 校验字段是否符合要求 | |
| 455 | + // 2.1.2 校验,判断是否有不符合的原因 | |
| 480 | 456 | try { |
| 481 | - ValidationUtils.validate(BeanUtils.toBean(importUser, UserSaveReqVO.class).setPassword(initPassword)); | |
| 482 | - }catch (ConstraintViolationException ex){ | |
| 457 | + validateUserForCreateOrUpdate(null, null, importUser.getMobile(), importUser.getEmail(), | |
| 458 | + importUser.getDeptId(), null); | |
| 459 | + } catch (ServiceException ex) { | |
| 483 | 460 | respVO.getFailureUsernames().put(importUser.getUsername(), ex.getMessage()); |
| 484 | 461 | return; |
| 485 | 462 | } |
| 486 | - // 判断如果不存在,在进行插入 | |
| 463 | + | |
| 464 | + // 2.2.1 判断如果不存在,在进行插入 | |
| 487 | 465 | AdminUserDO existUser = userMapper.selectByUsername(importUser.getUsername()); |
| 488 | 466 | if (existUser == null) { |
| 489 | 467 | userMapper.insert(BeanUtils.toBean(importUser, AdminUserDO.class) |
| ... | ... | @@ -491,7 +469,7 @@ public class AdminUserServiceImpl implements AdminUserService { |
| 491 | 469 | respVO.getCreateUsernames().add(importUser.getUsername()); |
| 492 | 470 | return; |
| 493 | 471 | } |
| 494 | - // 如果存在,判断是否允许更新 | |
| 472 | + // 2.2.2 如果存在,判断是否允许更新 | |
| 495 | 473 | if (!isUpdateSupport) { |
| 496 | 474 | respVO.getFailureUsernames().put(importUser.getUsername(), USER_USERNAME_EXISTS.getMsg()); |
| 497 | 475 | return; | ... | ... |
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImplTest.java
| ... | ... | @@ -430,6 +430,8 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest { |
| 430 | 430 | public void testImportUserList_01() { |
| 431 | 431 | // 准备参数 |
| 432 | 432 | UserImportExcelVO importUser = randomPojo(UserImportExcelVO.class, o -> { |
| 433 | + o.setEmail(randomEmail()); | |
| 434 | + o.setMobile(randomMobile()); | |
| 433 | 435 | }); |
| 434 | 436 | // mock 方法,模拟失败 |
| 435 | 437 | doThrow(new ServiceException(DEPT_NOT_FOUND)).when(deptService).validateDeptList(any()); | ... | ... |