TRX hai 1 ano
pai
achega
0e471bffeb

+ 12 - 6
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/devices/DeviceUseRecords.java

@@ -46,6 +46,18 @@ public class DeviceUseRecords extends SuperMain {
     @Schema(description = "设备使用状态")
     private DeviceUseState useState = DeviceUseState.Finish;
 
+    @Schema(description = "权限来自哪里的配置")
+    private DevicePermissFromType permissFromType = DevicePermissFromType.SystemConfig;
+
+    @Schema(description = "用户类型")
+    private UserFromType userFromType = UserFromType.SystemUser;
+
+    @Schema(description = "处理的service名称")
+    private String serviceBeanName;
+
+    @Schema(description = "关联的数据id")
+    private String aboutDataId;
+
     //----------------------------设备信息start ---------------------
 
     @Schema(description = "操作模式,卡片、人脸、密码、指纹...")
@@ -91,12 +103,6 @@ public class DeviceUseRecords extends SuperMain {
 
     //------------------用户信息 start-------------------
 
-    @Schema(description = "权限来自哪里的配置")
-    private DevicePermissFromType permissFromType = DevicePermissFromType.SystemConfig;
-
-    @Schema(description = "用户类型")
-    private UserFromType userFromType = UserFromType.SystemUser;
-
     @Schema(description = "用户userId")
     private String userId;
 

+ 3 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/devices/permiss/Device2UseUsable.java

@@ -34,6 +34,9 @@ public class Device2UseUsable extends SuperMain {
     @Schema(description = "数据id")
     private String fromDataId;
 
+    @Schema(description = "处理的service名称")
+    private String serviceBeanName;
+
     @Schema(description = "设备id")
     private List<String> deviceIds;
 

+ 25 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/base/SuperPermissService.java

@@ -0,0 +1,25 @@
+package com.zhongshu.card.server.core.service.base;
+
+import com.github.microservice.models.gateDoor.use.GateDoorUseParam;
+import com.github.microservice.net.ResultContent;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 用户 、 设备权限验证 的超类
+ *
+ * @author TRX
+ * @date 2025/2/13
+ */
+@Slf4j
+public abstract class SuperPermissService extends SuperService {
+
+    /**
+     * 记录设备权限使用
+     *
+     * @param fromDataId
+     * @param deviceUserParam
+     * @return
+     */
+    public abstract ResultContent markUse(String fromDataId, GateDoorUseParam deviceUserParam);
+
+}

+ 20 - 11
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/devices/permiss/Device2UseUsableService.java

@@ -9,11 +9,14 @@ import com.zhongshu.card.server.core.dao.visitor.VisitorSettingDeviceDao;
 import com.zhongshu.card.server.core.domain.devices.permiss.Device2UseUsable;
 import com.zhongshu.card.server.core.domain.visitor.VisitorMain;
 import com.zhongshu.card.server.core.domain.visitor.VisitorSettingDevice;
+import com.zhongshu.card.server.core.service.base.SuperPermissService;
 import com.zhongshu.card.server.core.service.visitor.VisitorMainService;
+import com.zhongshu.card.server.core.util.CommonUtil;
 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.context.ApplicationContext;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
@@ -41,6 +44,9 @@ public class Device2UseUsableService {
     @Autowired
     private VisitorMainService visitorMainService;
 
+    @Autowired
+    private ApplicationContext applicationContext;
+
     /**
      * 更加访客申请信息 写入对应的设备 临时权限
      *
@@ -53,6 +59,7 @@ public class Device2UseUsableService {
         }
         Device2UseUsable entity = new Device2UseUsable();
         entity.setFromDataId(visitorMain.getId());
+        entity.setServiceBeanName(CommonUtil.getCollectionName(VisitorMainService.class));
         entity.setTempType(DevicePermissFromType.Visitor);
 
         List<String> useDataIds = new ArrayList<>();
@@ -87,8 +94,7 @@ public class Device2UseUsableService {
      * @param deviceId
      * @return
      */
-    public ResultContent<String> verifyDevice(String userId, String deviceId,
-            String projectOid, GateDoorUseParam deviceUserParam) {
+    public ResultContent<String> verifyDevice(String userId, String deviceId, String projectOid, GateDoorUseParam deviceUserParam) {
         String msg = "失败";
 
         Device2UseUsableSearch param = new Device2UseUsableSearch();
@@ -102,16 +108,19 @@ public class Device2UseUsableService {
         if (ObjectUtils.isNotEmpty(list)) {
             msg = "成功";
             for (Device2UseUsable device2UseUsable : list) {
-                if (device2UseUsable.getTempType() == DevicePermissFromType.Visitor) {
-                    deviceUserParam.setPermissFromType(DevicePermissFromType.Visitor);
-
-                    // 访客的数据
-                    VisitorMain entity = visitorMainService.markVisitor(device2UseUsable.getFromDataId());
-                    if (ObjectUtils.isNotEmpty(entity) && deviceUserParam != null) {
-                        deviceUserParam.setUserName(entity.getName());
-                        deviceUserParam.setUserFromType(entity.getUserFromType());
-                    }
+                String serviceBeanName = device2UseUsable.getServiceBeanName();
+                deviceUserParam.setServiceBeanName(serviceBeanName);
+                if (StringUtils.isEmpty(serviceBeanName)) {
+                    log.error("serviceBeanName is null {}", device2UseUsable.getTempType());
+                    continue;
+                }
+                Object object = applicationContext.getBean(device2UseUsable.getServiceBeanName());
+                if (ObjectUtils.isEmpty(object)) {
+                    log.error("serviceBeanName is not found {}", serviceBeanName);
+                    continue;
                 }
+                SuperPermissService service = (SuperPermissService) object;
+                service.markUse(device2UseUsable.getFromDataId(), deviceUserParam);
             }
             return ResultContent.buildSuccess(msg);
         }

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

@@ -189,6 +189,7 @@ public class DevicePermissVerifyService {
             }
         }
 
+        // 临时权限判断
         if (!hasPermission) {
             ResultContent<String> resultContent = device2UseUsableService.verifyDevice(userId, deviceId, projectOid, deviceUserParam);
             if (resultContent.isSuccess()) {

+ 15 - 6
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/visitor/VisitorMainService.java

@@ -3,8 +3,10 @@ package com.zhongshu.card.server.core.service.visitor;
 import com.github.microservice.auth.client.model.UserFaceUploadModel;
 import com.github.microservice.auth.client.service.UserFaceService;
 import com.github.microservice.components.data.base.util.PageEntityUtil;
+import com.github.microservice.models.gateDoor.use.GateDoorUseParam;
 import com.github.microservice.net.ResultContent;
 import com.github.microservice.net.ResultMessage;
+import com.github.microservice.types.user.DevicePermissFromType;
 import com.github.microservice.types.user.UserFromType;
 import com.zhongshu.card.client.model.devices.DeviceInfoSimpleModel;
 import com.zhongshu.card.client.model.visitor.VisitorMainModel;
@@ -24,7 +26,7 @@ import com.zhongshu.card.server.core.domain.scene.SceneComponent;
 import com.zhongshu.card.server.core.domain.visitor.VisitorMain;
 import com.zhongshu.card.server.core.domain.visitor.VisitorSetting;
 import com.zhongshu.card.server.core.service.base.CommonService;
-import com.zhongshu.card.server.core.service.base.SuperService;
+import com.zhongshu.card.server.core.service.base.SuperPermissService;
 import com.zhongshu.card.server.core.service.devices.DeviceInfoServiceImpl;
 import com.zhongshu.card.server.core.service.devices.permiss.Device2UseUsableService;
 import com.zhongshu.card.server.core.service.org.OrganizationUserServiceImpl;
@@ -51,7 +53,7 @@ import java.util.stream.Collectors;
  */
 @Slf4j
 @Service
-public class VisitorMainService extends SuperService {
+public class VisitorMainService extends SuperPermissService {
 
     @Autowired
     private VisitorMainDao visitorMainDao;
@@ -284,22 +286,29 @@ public class VisitorMainService extends SuperService {
      *
      * @param fromDataId
      */
-    public VisitorMain markVisitor(String fromDataId) {
+    @Override
+    public ResultContent markUse(String fromDataId, GateDoorUseParam deviceUserParam) {
         if (StringUtils.isNotEmpty(fromDataId)) {
             VisitorMain visitorMain = visitorMainDao.findTopById(fromDataId);
             if (ObjectUtils.isEmpty(visitorMain)) {
                 return null;
             }
-            // 待来访 状态改为 已到访
+            // 封装使用记录参数
+            deviceUserParam.setPermissFromType(DevicePermissFromType.Visitor);
+            deviceUserParam.setUserName(visitorMain.getName());
+            deviceUserParam.setUserFromType(visitorMain.getUserFromType());
+            deviceUserParam.setAboutDataId(visitorMain.getId());
+
+            // 如果是 待来访 状态 则改为 已到访
             if (visitorMain.getState() == VisitorState.WaitVisit) {
                 visitorMain.setState(VisitorState.Visit);
                 visitorMain.setFirstVisitTime(System.currentTimeMillis());
             }
             visitorMain.setLastVisitTime(System.currentTimeMillis());
             visitorMainDao.save(visitorMain);
-            return visitorMain;
+            return ResultContent.buildSuccess(visitorMain);
         }
-        return null;
+        return ResultContent.buildFail(ResultMessage.DATA_NOT_EXIST);
     }
 
     /**