From 481d8165f26fc7e37f0e87f6444ac0340bb563a3 Mon Sep 17 00:00:00 2001
From: xiaoyi <908147524@qq.com>
Date: 星期二, 03 十一月 2026 18:53:22 +0800
Subject: [PATCH] fix: 移植长辉已验证的四类接口 500/体验问题(不含物料颜色字段)
---
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java | 39 +++++++++++++++++++++++++++++++++++++--
1 files changed, 37 insertions(+), 2 deletions(-)
diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java
index 1098246..9b98bb5 100644
--- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java
+++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java
@@ -14,6 +14,7 @@
import cn.iocoder.yudao.framework.datapermission.core.util.DataPermissionUtils;
import cn.iocoder.yudao.module.infra.api.config.ConfigApi;
import cn.iocoder.yudao.module.system.controller.admin.auth.vo.AuthRegisterReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptListReqVO;
import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO;
import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO;
import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserImportExcelVO;
@@ -581,6 +582,12 @@
}
// 1.2 绯荤粺鍙傛暟涓殑鍒濆瀵嗙爜锛屼綔涓� Excel 鏈~鍐欏瘑鐮佹椂鐨勫厹搴�
String initPassword = configApi.getConfigValueByKey(USER_INIT_PASSWORD_KEY);
+ // 1.3 棰勫姞杞介儴闂細鍚嶇О -> 閮ㄩ棬锛岀敤浜庢寜鍚嶇О瑙f瀽锛堟ā鏉胯姹傚~閮ㄩ棬鍚嶇О锛岃�岄潪鏁版嵁搴撲富閿� ID锛�
+ List<DeptDO> allDepts = deptService.getDeptList(new DeptListReqVO());
+ Map<String, DeptDO> deptByName = new HashMap<>(Math.max(allDepts.size(), 1));
+ for (DeptDO dept : allDepts) {
+ deptByName.put(dept.getName().trim(), dept);
+ }
// 2. 閬嶅巻锛岄�愪釜鍒涘缓 or 鏇存柊
UserImportRespVO respVO = UserImportRespVO.builder().createUsernames(new ArrayList<>())
@@ -589,6 +596,14 @@
importUsers.forEach(importUser -> {
int currentIndex = index.getAndIncrement();
String key = StrUtil.blankToDefault(importUser.getUsername(), "绗� " + currentIndex + " 琛�");
+ // 2.0 瑙f瀽閮ㄩ棬锛氭寜閮ㄩ棬鍚嶇О绮剧‘鍖归厤锛屽尮閰嶄笉鍒扮粰鍑烘槑纭彁绀猴紙涓嶅啀瑕佹眰濉暟鎹簱涓婚敭 ID锛�
+ DeptDO importDept = resolveImportDept(importUser.getDeptName(), deptByName);
+ if (importDept == null && StrUtil.isNotBlank(importUser.getDeptName())) {
+ respVO.getFailureUsernames().put(key,
+ "閮ㄩ棬銆�" + importUser.getDeptName().trim() + "銆嶄笉瀛樺湪锛岃濉啓閮ㄩ棬绠$悊涓殑瀹屾暣閮ㄩ棬鍚嶇О");
+ return;
+ }
+ Long importDeptId = importDept != null ? importDept.getId() : null;
// 2.1.0 瑙f瀽璇ヨ鍒濆瀵嗙爜锛欵xcel 濉啓浜嗗氨鐢ㄥ~鍐欑殑锛屽惁鍒欒鍙栫郴缁熷弬鏁�
String effectivePassword = StrUtil.isNotBlank(importUser.getPassword())
? importUser.getPassword() : initPassword;
@@ -600,7 +615,8 @@
}
// 2.1.1 鏍¢獙瀛楁鏄惁绗﹀悎瑕佹眰
try {
- ValidationUtils.validate(BeanUtils.toBean(importUser, UserSaveReqVO.class).setPassword(effectivePassword));
+ ValidationUtils.validate(BeanUtils.toBean(importUser, UserSaveReqVO.class)
+ .setPassword(effectivePassword).setDeptId(importDeptId));
} catch (ConstraintViolationException ex) {
respVO.getFailureUsernames().put(key, ex.getMessage());
return;
@@ -608,7 +624,7 @@
// 2.1.2 鏍¢獙锛屽垽鏂槸鍚︽湁涓嶇鍚堢殑鍘熷洜
try {
validateUserForCreateOrUpdate(null, null, importUser.getMobile(), importUser.getEmail(),
- importUser.getDeptId(), null);
+ importDeptId, null);
} catch (ServiceException ex) {
respVO.getFailureUsernames().put(importUser.getUsername(), ex.getMessage());
return;
@@ -618,6 +634,7 @@
AdminUserDO existUser = userMapper.selectByUsername(importUser.getUsername());
if (existUser == null) {
userMapper.insert(BeanUtils.toBean(importUser, AdminUserDO.class)
+ .setDeptId(importDeptId) // 閮ㄩ棬宸叉寜鍚嶇О瑙f瀽锛岄渶鏄惧紡鍥炲~ ID
.setPassword(encodePassword(effectivePassword)).setPostIds(new HashSet<>())); // 璁剧疆鍒濆瀵嗙爜鍙婄┖宀椾綅缂栧彿鏁扮粍
respVO.getCreateUsernames().add(importUser.getUsername());
return;
@@ -629,6 +646,7 @@
}
AdminUserDO updateUser = BeanUtils.toBean(importUser, AdminUserDO.class);
updateUser.setId(existUser.getId());
+ updateUser.setDeptId(importDeptId); // 閮ㄩ棬宸叉寜鍚嶇О瑙f瀽锛岄渶鏄惧紡鍥炲~ ID
// 瀵嗙爜鍗曠嫭澶勭悊锛欵xcel 濉啓浜嗘墠鏇存柊锛涙湭濉啓鍒欑疆绌猴紝淇濇寔鍘熷瘑鐮佷笉鍙橈紙閬垮厤鎶婃槑鏂囧啓杩涘簱锛�
updateUser.setPassword(StrUtil.isNotBlank(importUser.getPassword())
? encodePassword(importUser.getPassword()) : null);
@@ -638,6 +656,23 @@
return respVO;
}
+ /**
+ * 瑙f瀽瀵煎叆琛岄噷鐨勯儴闂ㄥ悕绉�
+ *
+ * <p>鍙寜閮ㄩ棬鍚嶇О绮剧‘鍖归厤锛堜笉鍐嶈姹傚~鍐欐暟鎹簱涓婚敭 ID锛夛紝
+ * 閬垮厤浣跨敤鑰呮棤浠庡緱鐭ラ儴闂� ID 瀵艰嚧瀵煎叆蹇呯劧澶辫触銆�</p>
+ *
+ * @param raw 瀵煎叆濉啓鐨勯儴闂ㄥ悕绉�
+ * @param byName 閮ㄩ棬鍚嶇О -> 閮ㄩ棬
+ * @return 鍖归厤鍒扮殑閮ㄩ棬锛涙湭濉啓鎴栧尮閰嶄笉鍒拌繑鍥� null
+ */
+ private DeptDO resolveImportDept(String raw, Map<String, DeptDO> byName) {
+ if (StrUtil.isBlank(raw)) {
+ return null;
+ }
+ return byName.get(raw.trim());
+ }
+
@Override
public List<AdminUserDO> getUserListByStatus(Integer status) {
return userMapper.selectListByStatus(status);
--
Gitblit v1.9.3