diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/common/org/OrganizationQueryScope.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/common/org/OrganizationQueryScope.java new file mode 100644 index 000000000..f72f84eef --- /dev/null +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/common/org/OrganizationQueryScope.java @@ -0,0 +1,32 @@ +package com.mhd.basic.common.org; + +import com.mhd.system.api.model.LoginUser; + +/** + * 组织数据权限公共能力:解析当前登录用户所属组织(与 token 中 userPo / organizationPo 字段完整度有关) + */ +public final class OrganizationQueryScope { + + private OrganizationQueryScope() { + } + + /** + * 优先 userPo.organizationId;缺失或为 0 时用 organizationPo.organizationId + */ + public static Long resolveLoginOrganizationId(LoginUser loginUser) { + if (loginUser == null) { + return null; + } + if (loginUser.getUserPo() != null) { + Long oid = loginUser.getUserPo().getOrganizationId(); + if (oid != null && oid != 0L) { + return oid; + } + } + if (loginUser.getOrganizationPo() != null && loginUser.getOrganizationPo().getOrganizationId() != null + && loginUser.getOrganizationPo().getOrganizationId() != 0L) { + return loginUser.getOrganizationPo().getOrganizationId(); + } + return null; + } +}