From 949eecaf374b6a69bbb0ce7cf156d9a2ff127467 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 2 Jan 2026 13:26:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=92=89=E9=92=89=E7=99=BB?= =?UTF-8?q?=E5=BD=95=EF=BC=9A=E4=BD=BF=E7=94=A8=E5=AE=98=E6=96=B9logo=20SV?= =?UTF-8?q?G=E8=B7=AF=E5=BE=84=EF=BC=8C=E4=BC=98=E5=8C=96=E9=83=A8?= =?UTF-8?q?=E9=97=A8=E5=8C=B9=E9=85=8D=E9=80=BB=E8=BE=91=EF=BC=88=E5=8C=B9?= =?UTF-8?q?=E9=85=8D=E5=A4=B1=E8=B4=A5=E6=97=B6=E4=BD=BF=E7=94=A8=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E9=83=A8=E9=97=A8=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/designhub/service/UserService.java | 44 ++++++++++++++----- frontend/src/views/Login.vue | 12 ++--- 2 files changed, 39 insertions(+), 17 deletions(-) diff --git a/backend/src/main/java/com/designhub/service/UserService.java b/backend/src/main/java/com/designhub/service/UserService.java index 1befdfa..c23221a 100644 --- a/backend/src/main/java/com/designhub/service/UserService.java +++ b/backend/src/main/java/com/designhub/service/UserService.java @@ -610,23 +610,45 @@ public class UserService { log.info("自动匹配到系统部门: deptId={}, deptName={}, type={}", matchedDeptId, dept.getDeptName(), dept.getDeptType()); } else { - // 无法自动匹配,需要用户手动选择 - String deptNamesStr = dingDepartments.stream() - .map(d -> String.valueOf(d.get("name"))) - .collect(Collectors.joining(", ")); - log.warn("无法自动匹配系统部门,钉钉部门: {}", deptNamesStr); - user.setDeptId(null); - user.setDeptName(null); - user.setRoleIds(null); - user.setStatus(0); // 暂时禁用,待选择部门后启用 + // 无法自动匹配,使用第一个可用部门作为默认值 + List availableDepts = departmentMapper.selectList( + new LambdaQueryWrapper() + .eq(Department::getStatus, 1) + .eq(Department::getDeleted, 0) + .orderByAsc(Department::getSortOrder) + .orderByAsc(Department::getId) + ); + + if (!availableDepts.isEmpty()) { + // 使用第一个可用部门作为默认值 + Department defaultDept = availableDepts.get(0); + user.setDeptId(defaultDept.getId()); + user.setDeptName(defaultDept.getDeptName()); + user.setRoleIds("receiving".equals(defaultDept.getDeptType()) ? "5" : "6"); + log.warn("无法自动匹配系统部门,使用默认部门: deptId={}, deptName={}, 钉钉部门: {}", + defaultDept.getId(), defaultDept.getDeptName(), + dingDepartments.stream() + .map(d -> String.valueOf(d.get("name"))) + .collect(Collectors.joining(", "))); + } else { + // 如果系统没有任何部门,才需要用户手动选择 + String deptNamesStr = dingDepartments.stream() + .map(d -> String.valueOf(d.get("name"))) + .collect(Collectors.joining(", ")); + log.warn("无法自动匹配系统部门,且系统无可用部门,钉钉部门: {}", deptNamesStr); + user.setDeptId(null); + user.setDeptName(null); + user.setRoleIds(null); + user.setStatus(0); // 暂时禁用,待选择部门后启用 + } } userMapper.insert(user); log.info("钉钉用户创建成功: userId={}, username={}, needSelectDept={}", user.getId(), user.getUsername(), matchedDeptId == null); - // 如果需要选择部门,抛出特殊异常 - if (matchedDeptId == null) { + // 如果需要选择部门(系统无任何可用部门的情况),抛出特殊异常 + if (user.getDeptId() == null) { String deptInfo = dingDepartments.isEmpty() ? "无钉钉部门信息" : dingDepartments.stream() .map(d -> String.valueOf(d.get("name"))) diff --git a/frontend/src/views/Login.vue b/frontend/src/views/Login.vue index 10d8bff..49106a2 100644 --- a/frontend/src/views/Login.vue +++ b/frontend/src/views/Login.vue @@ -198,12 +198,12 @@ @click="handleDingTalkLogin" :loading="dingTalkLoginLoading" > - -