From 4bc477aba12656d72258820a2473bb1761fc05d0 Mon Sep 17 00:00:00 2001 From: luotaiqian <1147642922@qq.com> Date: Fri, 28 Aug 2026 18:04:15 +0800 Subject: [PATCH] bug fix --- .../InstitutionDashboardExecutor.java | 2 +- .../support/UserOrgIdResolver.java | 26 ++++++++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/InstitutionDashboardExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/InstitutionDashboardExecutor.java index c7be5122..112ddddc 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/InstitutionDashboardExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/InstitutionDashboardExecutor.java @@ -80,7 +80,7 @@ public class InstitutionDashboardExecutor implements InstitutionDashboardApi { @Override public SingleResponse projectNodeStats() { - Long orgId = ThreadLocalUserInfoAdapter.getOrgId() ; + Long orgId = institutionOrgSupport.resolveCurrentOrgIdByUserId(); if (orgId == null) { return SingleResponse.success(new InstitutionDashboardProjectNodeStatsCO()); } diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/support/UserOrgIdResolver.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/support/UserOrgIdResolver.java index 97e49aa5..9299e490 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/support/UserOrgIdResolver.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/support/UserOrgIdResolver.java @@ -1,6 +1,9 @@ package org.qinan.safetyeval.infrastructure.support; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.qinan.safetyeval.infrastructure.dataobject.OrgInfoDO; import org.qinan.safetyeval.infrastructure.dataobject.OrgPersonnelDO; +import org.qinan.safetyeval.infrastructure.mapper.OrgInfoMapper; import org.qinan.safetyeval.infrastructure.mapper.OrgPersonnelMapper; import org.springframework.stereotype.Component; @@ -32,6 +35,9 @@ public class UserOrgIdResolver { @Resource private OrgPersonnelMapper orgPersonnelMapper; + @Resource + private OrgInfoMapper orgInfoMapper; + private final Map cache = new ConcurrentHashMap<>(); /** @@ -72,7 +78,25 @@ public class UserOrgIdResolver { private Long queryOrgIdByUserId(Long userId) { OrgPersonnelDO personnel = orgPersonnelMapper.selectById(userId); - return personnel == null ? null : personnel.getOrgId(); + if (personnel != null) { + return personnel.getOrgId(); + } + // 兜底:用户可能是机构注册人(org_info.create_id = userId),取其创建的机构 + return queryOrgIdByCreator(userId); + } + + /** + * 根据创建人 id 反查其创建的机构 orgId。 + * + * @param userId 创建人 id(org_info.create_id) + * @return 机构 orgId;未创建过机构返回 null + */ + private Long queryOrgIdByCreator(Long userId) { + OrgInfoDO orgInfo = orgInfoMapper.selectOne(new LambdaQueryWrapper() + .select(OrgInfoDO::getId) + .eq(OrgInfoDO::getCreateId, userId) + .last("limit 1")); + return orgInfo == null ? null : orgInfo.getId(); } private static class CacheEntry {