gaoluyang
9 小时以前 6de15528a3ba8f9c87d9aaffe895e69fdcdc9026
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java
@@ -542,13 +542,13 @@
                UserSaveReqVO saveReqVO = BeanUtils.toBean(importUser, UserSaveReqVO.class)
                        .setUsername(username).setDeptId(deptId).setPostIds(postIds).setPassword(password);
                validateUserImportRow(saveReqVO, password);
                // 2.1.3 校验用户账号、手机号、邮箱唯一,以及部门、岗位可用
                validateUserForCreateOrUpdate(null, username, saveReqVO.getMobile(), saveReqVO.getEmail(),
                        deptId, postIds);
                // 2.2.1 判断如果不存在,在进行插入
                // 2.2.1 判断如果不存在,进行插入
                AdminUserDO existUser = userMapper.selectByUsername(username);
                if (existUser == null) {
                    // 2.2.2 校验用户账号、手机号、邮箱唯一,以及部门、岗位可用
                    validateUserForCreateOrUpdate(null, username, saveReqVO.getMobile(), saveReqVO.getEmail(),
                            deptId, postIds);
                    AdminUserDO user = BeanUtils.toBean(saveReqVO, AdminUserDO.class)
                            .setPassword(encodePassword(password))
                            .setStatus(ObjUtil.defaultIfNull(importUser.getStatus(),
@@ -558,11 +558,14 @@
                    respVO.getCreateUsernames().add(username);
                    return;
                }
                // 2.2.2 如果存在,判断是否允许更新
                // 2.2.3 如果存在,判断是否允许更新
                if (!isUpdateSupport) {
                    throw new ServiceException(USER_USERNAME_EXISTS.getCode(),
                            "用户账号已存在。如需覆盖这个用户,请勾选「是否覆盖」后重新导入;否则请修改 Excel 中的用户账号");
                }
                // 2.2.4 覆盖时按更新校验(带上用户编号,唯一性校验会跳过这个用户自己)
                validateUserForCreateOrUpdate(existUser.getId(), username, saveReqVO.getMobile(),
                        saveReqVO.getEmail(), deptId, postIds);
                AdminUserDO updateUser = BeanUtils.toBean(saveReqVO, AdminUserDO.class)
                        .setId(existUser.getId()).setPassword(null) // 覆盖时不改密码,避免把在用账号的密码改掉
                        .setStatus(importUser.getStatus()); //「账号状态」留空时保持原状态