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/DmsUserDisplayNameResolver.java |   73 ++++++++++++++++++++++++++++++++++++
 1 files changed, 73 insertions(+), 0 deletions(-)

diff --git a/jnpf-dms/jnpf-dms-biz/src/main/java/jnpf/dmsPermission/DmsUserDisplayNameResolver.java b/jnpf-dms/jnpf-dms-biz/src/main/java/jnpf/dmsPermission/DmsUserDisplayNameResolver.java
new file mode 100644
index 0000000..bae8baf
--- /dev/null
+++ b/jnpf-dms/jnpf-dms-biz/src/main/java/jnpf/dmsPermission/DmsUserDisplayNameResolver.java
@@ -0,0 +1,73 @@
+package jnpf.dmsPermission;
+
+import jnpf.permission.UserApi;
+import jnpf.permission.entity.UserEntity;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Component
+@RequiredArgsConstructor
+public class DmsUserDisplayNameResolver {
+    private final UserApi userApi;
+
+    public Map<String, String> resolve(Collection<String> userIds) {
+        if (userIds == null || userIds.isEmpty()) {
+            return Collections.emptyMap();
+        }
+        Set<String> uniqueIds = userIds.stream()
+                .map(this::trimToNull)
+                .filter(value -> value != null)
+                .collect(Collectors.toCollection(LinkedHashSet::new));
+        if (uniqueIds.isEmpty()) {
+            return Collections.emptyMap();
+        }
+
+        List<UserEntity> users;
+        try {
+            users = userApi.getUserName(uniqueIds.stream().collect(Collectors.toList()));
+        } catch (RuntimeException ex) {
+            log.warn("DMS user display name lookup failed for {} users", uniqueIds.size(), ex);
+            return Collections.emptyMap();
+        }
+        if (users == null || users.isEmpty()) {
+            return Collections.emptyMap();
+        }
+
+        Map<String, String> result = new LinkedHashMap<>();
+        for (UserEntity user : users) {
+            if (user == null) {
+                continue;
+            }
+            String userId = trimToNull(user.getId());
+            String displayName = displayName(user);
+            if (userId != null && displayName != null) {
+                result.putIfAbsent(userId, displayName);
+            }
+        }
+        return result;
+    }
+
+    String displayName(UserEntity user) {
+        String realName = trimToNull(user.getRealName());
+        String account = trimToNull(user.getAccount());
+        if (realName != null && account != null) {
+            return realName + "锛�" + account + "锛�";
+        }
+        return realName != null ? realName : account;
+    }
+
+    private String trimToNull(String value) {
+        return value == null || value.trim().isEmpty() ? null : value.trim();
+    }
+}

--
Gitblit v1.8.0