TRX 1 سال پیش
والد
کامیت
91868aa645

+ 3 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/UserPermissDataCacheDao.java

@@ -3,6 +3,8 @@ package com.zhongshu.card.server.core.dao.devices;
 import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
 import com.zhongshu.card.server.core.domain.devices.permiss.UserPermissDataCache;
 
+import java.util.List;
+
 /**
  * @author TRX
  * @date 2024/3/21
@@ -11,4 +13,5 @@ public interface UserPermissDataCacheDao extends MongoDao<UserPermissDataCache>
 
     UserPermissDataCache findTopByDataIdAndProjectOid(String dataId, String projectOid);
 
+    List<UserPermissDataCache> findByDataIdInAndProjectOid(List<String> dataIds, String projectOid);
 }

+ 3 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/devices/DeviceInfoServiceImpl.java

@@ -139,7 +139,7 @@ public class DeviceInfoServiceImpl extends SuperService implements DeviceInfoSer
         BeanUtils.copyProperties(param, deviceInfo, "id");
         deviceInfo.setProjectInfoName(organizationServiceImpl.getOrgNameByCode(param.getProjectInfoCode()));
         deviceInfoDao.save(deviceInfo);
-        
+
         devicePermissEventService.sendDeviceChangeEvent(deviceInfo.getDeviceId(), deviceInfo.getProjectOid(), "addDeviceInfo");
         return ResultContent.buildSuccess();
     }
@@ -320,6 +320,8 @@ public class DeviceInfoServiceImpl extends SuperService implements DeviceInfoSer
         deviceInfo.setAboutInfo(param.getAboutInfo());
 
         deviceInfoDao.save(deviceInfo);
+
+        devicePermissEventService.sendDeviceChangeEvent(deviceInfo.getDeviceId(), deviceInfo.getProjectOid(), "updateDevice");
         return ResultContent.buildSuccess();
     }
 

+ 5 - 5
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/devices/permiss/DevicePermissVerifyService.java

@@ -27,6 +27,7 @@ import org.springframework.util.StopWatch;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -109,7 +110,7 @@ public class DevicePermissVerifyService {
         boolean hasPermission = false;
         String projectOid = deviceInfo.getProjectOid();
 
-        stopWatch.start("设备权限");
+        stopWatch.start("查询绑定的设备权限");
         DevicePermiss devicePermiss = devicePermissDao.findTopByUserIdAndDeviceIdAndProjectOidAndDataState(userId, deviceId, projectOid, DataState.Enable);
         if (ObjectUtils.isNotEmpty(devicePermiss)) {
             hasPermission = true;
@@ -119,9 +120,10 @@ public class DevicePermissVerifyService {
         if (!hasPermission) {
 
             stopWatch.start("查询用户项目权限数据");
-            UserCacheModel userCacheModel = userPermissDataCacheService.getUserCacheModel(userId, projectOid);
+            Map<String, UserCacheModel> map = userPermissDataCacheService.getUserAndDeviceCacheData(userId, deviceId, projectOid);
             stopWatch.stop();
 
+            UserCacheModel userCacheModel = map.get(userId);
             stopWatch.start("查询当前时间段");
             // 查找当前时间对应的时段信息
             List<PermissTimeSlot> permissTimeSlots = getCurrentTimeSlot(projectOid);
@@ -144,9 +146,7 @@ public class DevicePermissVerifyService {
                 search.setSex(userCacheModel.getSex());
                 search.setDataIds(userCacheModel.getDataIds());
 
-                stopWatch.start("设备权限");
-                UserCacheModel deviceCacheModel = userPermissDataCacheService.getDeviceCacheModel(deviceId, projectOid);
-                stopWatch.stop();
+                UserCacheModel deviceCacheModel = map.get(deviceId);
 
                 if (deviceCacheModel != null && deviceCacheModel.isSuccess()) {
                     search.setDeviceTypes(List.of(deviceCacheModel.getDeviceType()));

+ 21 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/devices/permiss/UserPermissDataCacheService.java

@@ -32,7 +32,10 @@ import org.springframework.context.event.EventListener;
 import org.springframework.stereotype.Service;
 
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 用户权限数据  缓存
@@ -229,4 +232,22 @@ public class UserPermissDataCacheService extends SuperService {
         return model;
     }
 
+    public Map<String, UserCacheModel> getUserAndDeviceCacheData(String userId, String deviceId, String projectOid) {
+        Map<String, UserCacheModel> map = new HashMap<>();
+        List<UserPermissDataCache> list = userPermissDataCacheDao.findByDataIdInAndProjectOid(List.of(userId, deviceId), projectOid);
+        if (ObjectUtils.isNotEmpty(list) && list.size() == 2) {
+            map = list.stream().collect(Collectors.toMap(
+                    it -> it.getDataId(), it -> {
+                        return (UserCacheModel) it.getCacheData();
+                    }));
+        } else {
+            UserCacheModel model = getUserCacheModel(userId, projectOid);
+            map.put(userId, model);
+
+            UserCacheModel model1 = getDeviceCacheModel(deviceId, projectOid);
+            map.put(deviceId, model1);
+        }
+        return map;
+    }
+
 }