Explorar o código

Merge remote-tracking branch 'origin/master'

wujiefeng hai 1 ano
pai
achega
9dffb570a0

+ 9 - 2
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/devices/permiss/DevicePermissEventService.java

@@ -70,6 +70,9 @@ public class DevicePermissEventService {
     @Autowired
     private DevicePermissSendLogService devicePermissSendLogService;
 
+    @Autowired
+    private UserCanUseDeviceService userCanUseDeviceService;
+
     @Autowired
     private void init(ApplicationContext applicationContext) {
         Runtime.getRuntime().addShutdownHook(new Thread(() -> {
@@ -172,10 +175,12 @@ public class DevicePermissEventService {
         if (StringUtils.isNotEmpty(projectOid) && ObjectUtils.isNotEmpty(userIds[0])) {
             executorService.execute(() -> {
                 String groupId = event.getGroupId();
+
                 userIds[0] = userIds[0].stream().distinct().collect(Collectors.toList());
                 // 循环用户数据
                 for (String userId : userIds[0]) {
-                    List<String> deviceIds = devicePermissService.getUserAllDeviceIds(projectOid, List.of(userId));
+                    List<String> deviceIds = userCanUseDeviceService.getUserDeviceIds(projectOid, userId);
+
                     // 网关 对应的设备
                     HashMap<String, List<String>> map = deviceGroupByGateWayId(deviceIds);
                     if (!map.isEmpty()) {
@@ -184,7 +189,8 @@ public class DevicePermissEventService {
                             DeviceUsersInfo deviceUsersInfo = new DeviceUsersInfo();
                             deviceUsersInfo.setGroupId(groupId);
                             deviceUsersInfo.setGateWayId(gateWayId);
-                            // 用户数据 (去重)
+
+                            // 组装用户权限信息 (用户的基本信息)
                             List<ProjectUserPermiss> userPermiss = devicePermissIotService.getUserPermiss(projectOid, userIds[0]);
                             deviceUsersInfo.setUsers(userPermiss);
                             // 下发用户数据
@@ -196,6 +202,7 @@ public class DevicePermissEventService {
         }
     }
 
+
     /**
      * 清除所有所有数据
      *

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

@@ -0,0 +1,52 @@
+package com.zhongshu.card.server.core.service.devices.permiss;
+
+import com.google.common.collect.Lists;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * @author TRX
+ * @date 2025/3/25
+ */
+@Slf4j
+@Service
+public class UserCanUseDeviceService {
+
+    @Autowired
+    private DevicePermissService devicePermissService;
+
+    public List<String> getUserDeviceIds(String projectOid, String userId) {
+        if (StringUtils.isNotEmpty(projectOid) && StringUtils.isNotEmpty(userId)) {
+            return getUserDeviceIds(projectOid, List.of(userId));
+        }
+        return Lists.newArrayList();
+    }
+
+    /**
+     * 得到用户在项目中可以使用的设备列表
+     * @param projectOid
+     * @param userIds
+     * @return
+     */
+    public List<String> getUserDeviceIds(String projectOid, List<String> userIds) {
+        List<String> deviceIds = new ArrayList<String>();
+        if (StringUtils.isNotEmpty(projectOid) && ObjectUtils.isNotEmpty(userIds)) {
+            //step1: 在 “设备权限” 里直接配置的数据
+            List<String> deviceIds1 = devicePermissService.getUserAllDeviceIds(projectOid, userIds);
+            if (ObjectUtils.isNotEmpty(deviceIds1)) {
+                deviceIds.addAll(deviceIds1);
+            }
+
+            //todo step2: 在设备权限规则里,动态的数据(不好找,时间段在变化)
+        }
+        return deviceIds;
+    }
+
+}

+ 5 - 2
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/projectAbout/OrgUserFaceService.java

@@ -195,13 +195,16 @@ public class OrgUserFaceService extends SuperService {
         return ResultContent.buildSuccess(toModel(orgUserFace));
     }
 
+    /**
+     * 用户人脸信息发生变化, 下发权限
+     * @param orgUserFace
+     */
     private void faceChange(OrgUserFace orgUserFace) {
         if (ObjectUtils.isEmpty(orgUserFace)) {
             return;
         }
-
+        devicePermissEventService.sendUserInfoChangeEvent(List.of(orgUserFace.getUserId()), orgUserFace.getProjectOid(), "saveFace");
         if (orgUserFace.getAuditState() == AuditState.Audited) {
-            devicePermissEventService.sendUserInfoChangeEvent(List.of(orgUserFace.getUserId()), orgUserFace.getProjectOid(), "saveFace");
         }
     }