From 8d5c50656d81dc3eb04a841ecd259adebf99424a Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期三, 11 二月 2026 15:49:26 +0800
Subject: [PATCH] 搜索库存明细调整不查询删除物料

---
 rsf-server/src/main/java/com/vincent/rsf/server/system/service/impl/UserServiceImpl.java |   55 +++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 47 insertions(+), 8 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/service/impl/UserServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/service/impl/UserServiceImpl.java
index d9d6d25..155e883 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/system/service/impl/UserServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/service/impl/UserServiceImpl.java
@@ -14,9 +14,16 @@
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.stream.Collectors;
 
 @Service("userService")
 public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
+
+    /** 鎵归噺鏌ヨ缂撳瓨锛歬ey = 鎺掑簭鍚庣殑 ids 鎷兼帴锛寁alue = (杩囨湡鏃堕棿鎴�, 鐢ㄦ埛鍒楄〃)锛孴TL 5 鍒嗛挓 */
+    private static final long CACHE_TTL_MS = 5 * 60 * 1000L;
+    private static final ConcurrentHashMap<String, CacheEntry<List<User>>> USER_MANY_CACHE = new ConcurrentHashMap<>(64);
 
     @Resource
     private UserRoleService userRoleService;
@@ -35,17 +42,19 @@
         if (Cools.isEmpty(username)) {
             return null;
         }
-        User user = baseMapper.selectByUsername(username, tenantId);
-        if (user != null) {
-            user.setRoles(userRoleService.listByUserId(user.getId()));
-            user.setAuthorities(roleMenuService.listMenuByUserId(user.getId(), null));
-        }
-        return user;
+        return baseMapper.selectByUsernameWithoutTenant(username, tenantId);
     }
 
     @Override
-    public User getByIdRel(Long userId) {
-        User user = this.getById(userId);
+    public User getByEmail(String email, Long tenantId) {
+        if (Cools.isEmpty(email)) {
+            return null;
+        }
+        return baseMapper.selectByEmailWithoutTenant(email, tenantId);
+    }
+
+    @Override
+    public User setUserAuthInfo(User user) {
         if (user != null) {
             user.setRoles(userRoleService.listByUserId(user.getId()));
             user.setAuthorities(roleMenuService.listMenuByUserId(user.getId(), null));
@@ -63,4 +72,34 @@
         return password == null ? null : bCryptPasswordEncoder.encode(password);
     }
 
+    @Override
+    public User selectByUsernameWithoutTenant(String username, Long tenantId) {
+        return baseMapper.selectByUsernameWithoutTenant(username,tenantId);
+    }
+
+    @Override
+    public List<User> listByIdsCached(Collection<Long> ids) {
+        if (ids == null || ids.isEmpty()) {
+            return Collections.emptyList();
+        }
+        String key = ids.stream().sorted().map(Object::toString).collect(Collectors.joining(","));
+        long now = System.currentTimeMillis();
+        CacheEntry<List<User>> entry = USER_MANY_CACHE.get(key);
+        if (entry != null && entry.expireAt > now) {
+            return entry.data;
+        }
+        List<User> list = listByIds(ids);
+        USER_MANY_CACHE.put(key, new CacheEntry<>(now + CACHE_TTL_MS, list));
+        return list;
+    }
+
+    private static class CacheEntry<T> {
+        final long expireAt;
+        final T data;
+        CacheEntry(long expireAt, T data) {
+            this.expireAt = expireAt;
+            this.data = data;
+        }
+    }
+
 }

--
Gitblit v1.9.1