From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master

---
 jnpf-dms/jnpf-dms-biz/src/main/java/jnpf/dmsPermission/DmsSubjectResolver.java |   37 +++++++++++++++++++++++++++++++++++++
 1 files changed, 37 insertions(+), 0 deletions(-)

diff --git a/jnpf-dms/jnpf-dms-biz/src/main/java/jnpf/dmsPermission/DmsSubjectResolver.java b/jnpf-dms/jnpf-dms-biz/src/main/java/jnpf/dmsPermission/DmsSubjectResolver.java
new file mode 100644
index 0000000..13dfce3
--- /dev/null
+++ b/jnpf-dms/jnpf-dms-biz/src/main/java/jnpf/dmsPermission/DmsSubjectResolver.java
@@ -0,0 +1,37 @@
+package jnpf.dmsPermission;
+
+import jnpf.base.UserInfo;
+import jnpf.dmsEntity.permission.model.DmsSubjectSet;
+import jnpf.permission.OrganizeApi;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Component;
+
+import java.util.Collections;
+import java.util.List;
+
+@Component
+@RequiredArgsConstructor
+public class DmsSubjectResolver {
+    private final OrganizeApi organizeApi;
+
+    public DmsSubjectSet resolve(UserInfo user) {
+        DmsSubjectSet subjects = new DmsSubjectSet();
+        subjects.setUserId(user.getUserId());
+        subjects.getDirectOrgIds().addAll(orEmpty(user.getOrganizeIds()));
+        subjects.getPositionIds().addAll(orEmpty(user.getPositionIds()));
+        subjects.getRoleIds().addAll(orEmpty(user.getRoleIds()));
+        subjects.getPlatformGroupIds().addAll(orEmpty(user.getGroupIds()));
+        subjects.getAncestorOrgIds().addAll(subjects.getDirectOrgIds());
+        for (String orgId : subjects.getDirectOrgIds()) {
+            List<String> ancestors = organizeApi.upWardRecursion(orgId);
+            if (ancestors != null) {
+                subjects.getAncestorOrgIds().addAll(ancestors);
+            }
+        }
+        return subjects;
+    }
+
+    private List<String> orEmpty(List<String> values) {
+        return values == null ? Collections.<String>emptyList() : values;
+    }
+}

--
Gitblit v1.8.0