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,36 +42,13 @@ import org.springframework.transaction.annotation.Transactional; | ||
| 42 | 42 | ||
| 43 | import java.io.InputStream; | 43 | import java.io.InputStream; |
| 44 | import java.time.LocalDateTime; | 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 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | 47 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 55 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; | 48 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; |
| 56 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; | 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 | * 后台用户 Service 实现类 | 54 | * 后台用户 Service 实现类 |
| @@ -468,22 +445,23 @@ public class AdminUserServiceImpl implements AdminUserService { | @@ -468,22 +445,23 @@ public class AdminUserServiceImpl implements AdminUserService { | ||
| 468 | UserImportRespVO respVO = UserImportRespVO.builder().createUsernames(new ArrayList<>()) | 445 | UserImportRespVO respVO = UserImportRespVO.builder().createUsernames(new ArrayList<>()) |
| 469 | .updateUsernames(new ArrayList<>()).failureUsernames(new LinkedHashMap<>()).build(); | 446 | .updateUsernames(new ArrayList<>()).failureUsernames(new LinkedHashMap<>()).build(); |
| 470 | importUsers.forEach(importUser -> { | 447 | importUsers.forEach(importUser -> { |
| 471 | - // 校验,判断是否有不符合的原因 | 448 | + // 2.1.1 校验字段是否符合要求 |
| 472 | try { | 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 | respVO.getFailureUsernames().put(importUser.getUsername(), ex.getMessage()); | 452 | respVO.getFailureUsernames().put(importUser.getUsername(), ex.getMessage()); |
| 477 | return; | 453 | return; |
| 478 | } | 454 | } |
| 479 | - // 校验字段是否符合要求 | 455 | + // 2.1.2 校验,判断是否有不符合的原因 |
| 480 | try { | 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 | respVO.getFailureUsernames().put(importUser.getUsername(), ex.getMessage()); | 460 | respVO.getFailureUsernames().put(importUser.getUsername(), ex.getMessage()); |
| 484 | return; | 461 | return; |
| 485 | } | 462 | } |
| 486 | - // 判断如果不存在,在进行插入 | 463 | + |
| 464 | + // 2.2.1 判断如果不存在,在进行插入 | ||
| 487 | AdminUserDO existUser = userMapper.selectByUsername(importUser.getUsername()); | 465 | AdminUserDO existUser = userMapper.selectByUsername(importUser.getUsername()); |
| 488 | if (existUser == null) { | 466 | if (existUser == null) { |
| 489 | userMapper.insert(BeanUtils.toBean(importUser, AdminUserDO.class) | 467 | userMapper.insert(BeanUtils.toBean(importUser, AdminUserDO.class) |
| @@ -491,7 +469,7 @@ public class AdminUserServiceImpl implements AdminUserService { | @@ -491,7 +469,7 @@ public class AdminUserServiceImpl implements AdminUserService { | ||
| 491 | respVO.getCreateUsernames().add(importUser.getUsername()); | 469 | respVO.getCreateUsernames().add(importUser.getUsername()); |
| 492 | return; | 470 | return; |
| 493 | } | 471 | } |
| 494 | - // 如果存在,判断是否允许更新 | 472 | + // 2.2.2 如果存在,判断是否允许更新 |
| 495 | if (!isUpdateSupport) { | 473 | if (!isUpdateSupport) { |
| 496 | respVO.getFailureUsernames().put(importUser.getUsername(), USER_USERNAME_EXISTS.getMsg()); | 474 | respVO.getFailureUsernames().put(importUser.getUsername(), USER_USERNAME_EXISTS.getMsg()); |
| 497 | return; | 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,6 +430,8 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest { | ||
| 430 | public void testImportUserList_01() { | 430 | public void testImportUserList_01() { |
| 431 | // 准备参数 | 431 | // 准备参数 |
| 432 | UserImportExcelVO importUser = randomPojo(UserImportExcelVO.class, o -> { | 432 | UserImportExcelVO importUser = randomPojo(UserImportExcelVO.class, o -> { |
| 433 | + o.setEmail(randomEmail()); | ||
| 434 | + o.setMobile(randomMobile()); | ||
| 433 | }); | 435 | }); |
| 434 | // mock 方法,模拟失败 | 436 | // mock 方法,模拟失败 |
| 435 | doThrow(new ServiceException(DEPT_NOT_FOUND)).when(deptService).validateDeptList(any()); | 437 | doThrow(new ServiceException(DEPT_NOT_FOUND)).when(deptService).validateDeptList(any()); |