TRX пре 1 година
родитељ
комит
1a56fff2df

+ 3 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/visitor/VisitorMainParam.java

@@ -74,6 +74,9 @@ public class VisitorMainParam {
     @Schema(description = "openAPI管理数据ID")
     private String busId;
 
+    @Schema(description = "临时用户id")
+    private String tempUserId;
+
     @Schema(description = "扩展信息")
     private Map<String, Object> meatInfo = new HashMap<>();
 }

+ 4 - 24
FullCardClient/src/main/java/com/zhongshu/card/client/openApi/model/device/DeviceUseRecordOpenApiSearch.java

@@ -23,6 +23,9 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor
 public class DeviceUseRecordOpenApiSearch extends SuperOpenAPIParam {
 
+    @Schema(description = "用户userId")
+    private String userId;
+
     @Schema(description = "设备ID")
     private String deviceId;
 
@@ -32,30 +35,7 @@ public class DeviceUseRecordOpenApiSearch extends SuperOpenAPIParam {
     @Schema(description = "操作模式,卡片、人脸、密码、指纹...")
     private OperateType operateType;
 
-    @Schema(description = "操作记录结果")
+    @Schema(description = "操作记录结果,成功、失败、未知")
     private OperateState operateState;
 
-    @Schema(description = "网关ID")
-    private String gateWayId;
-
-    @Schema(description = "设备所属机构oid")
-    private String beLongOid;
-
-    @Schema(description = "10进制卡序列号(实体卡号或虚拟卡号)")
-    private String cardNo;
-
-    @Schema(description = "用户userId")
-    private String userId;
-
-    @Schema(description = "权限来自哪里的配置")
-    private DevicePermissFromType permissFromType;
-
-    @Schema(description = "用户类型")
-    private UserFromType userFromType;
-
-    @Schema(description = "处理的service名称")
-    private String serviceBeanName;
-
-    @Schema(description = "关联的数据id")
-    private String aboutDataId;
 }

+ 58 - 4
FullCardClient/src/main/java/com/zhongshu/card/client/openApi/model/visitor/VisitorMainOpenParam.java

@@ -1,16 +1,70 @@
 package com.zhongshu.card.client.openApi.model.visitor;
 
-import com.zhongshu.card.client.model.visitor.VisitorMainParam;
+import com.zhongshu.card.client.openApi.base.ProjectCodeParam;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
- *
+ * 添加访客的参数
  * @author TRX
  * @date 2025/3/10
  */
 @Data
-public class VisitorMainOpenParam extends VisitorMainParam {
+public class VisitorMainOpenParam extends ProjectCodeParam {
+
+    @Schema(description = "openAPI管理数据ID")
+    private String busId;
+
+    @Schema(description = "临时用户id")
+    private String tempUserId;
+
+    @Schema(description = "被访人,也是审核人的用户userId")
+    private String visitorUserId;
+
+    @Schema(description = "微信的openId/所属分组")
+    private String openId;
+
+    //------------------访客业务数据 start---------------------
+    @Schema(description = "姓名")
+    private String name;
+
+    @Schema(description = "手机号码")
+    private String phone;
+
+    @Schema(description = "访客类型")
+    private String visitorType;
+
+    @Schema(description = "人脸url(可访问地址)")
+    private String faceUrl;
+
+    @Schema(description = "身份证号码")
+    private String cardNumber;
+
+    @Schema(description = "车牌号码")
+    private String carNo;
+
+    @Schema(description = "到访开始时间")
+    private Long startTime;
+
+    @Schema(description = "访问时间长")
+    private Long minutes;
+
+    @Schema(description = "到访部门")
+    private String departments = "";
+
+    @Schema(description = "到访单位")
+    private String unit;
+
+    @Schema(description = "说明")
+    private String visitorRemark;
+
+    @Schema(description = "到访地址")
+    private String visitAddress;
 
-    private String projectCode;
+    @Schema(description = "扩展信息")
+    private Map<String, Object> meatInfo = new HashMap<>();
 
 }

+ 2 - 1
FullCardClient/src/main/java/com/zhongshu/card/client/type/visitor/VisitorApplyType.java

@@ -7,7 +7,8 @@ import lombok.Getter;
  */
 public enum VisitorApplyType {
     Invite("邀请访问"),
-    Apply("自助预约");
+    Apply("自助预约")
+    ;
 
     @Getter
     private String remark;

+ 4 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/gateDoor/GateDoorService.java

@@ -15,8 +15,8 @@ import com.zhongshu.card.client.type.payment.RequestType;
 import com.zhongshu.card.server.core.domain.devices.DeviceUseRecords;
 import com.zhongshu.card.server.core.service.base.SuperService;
 import com.zhongshu.card.server.core.service.devices.DeviceUseRecordService;
-import com.zhongshu.card.server.core.service.permissVerify.DevicePermissVerifyService;
 import com.zhongshu.card.server.core.service.payment.RequestInfoService;
+import com.zhongshu.card.server.core.service.permissVerify.DevicePermissVerifyService;
 import com.zhongshu.card.server.core.util.CommonUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
@@ -178,15 +178,18 @@ public class GateDoorService extends SuperService {
             result.setMqttDataId(mqttDataId);
             String userId = info.getCustomId();
 
+            // 设备使用参数
             DeviceUseParam deviceUserParam = new DeviceUseParam();
             // 验证权限
             ResultContent<String> resultContent = devicePermissVerifyService.verifyDevice(userId, deviceId, deviceUserParam);
+
             deviceUserParam.setMqttDataId(mqttDataId);
             deviceUserParam.setOperateType(OperateType.Face);
             deviceUserParam.setGateWayId(gateWayId);
             deviceUserParam.setData(info);
             deviceUserParam.setIsOffLine(Boolean.FALSE);
             deviceUserParam.setPic(info.getPic());
+
             if (resultContent.isSuccess()) {
                 result.setSuccess();
                 result.setMsg(deviceUserParam.getUserName());

+ 3 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/openAPI/device/DeviceUseRecordOpenApiService.java

@@ -43,6 +43,9 @@ public class DeviceUseRecordOpenApiService {
      * @return
      */
     public ResultContent<Page<DeviceUseRecordModel>> page(DeviceUseRecordOpenApiSearch param) {
+        if (ObjectUtils.isEmpty(param.getUserId())) {
+            return ResultContent.buildFail("userId不能为空");
+        }
         ResultContent<String> resultContent = commonService.checkProjectCanUserByCode(param.getProjectCode());
         if (resultContent.isFailed()) {
             return ResultContent.buildFail(resultContent.getMsg());

+ 18 - 3
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/openAPI/visitor/VisitorOpenService.java

@@ -4,6 +4,7 @@ import com.github.microservice.components.data.base.util.PageEntityUtil;
 import com.github.microservice.net.ResultContent;
 import com.zhongshu.card.client.model.base.IDParam;
 import com.zhongshu.card.client.model.visitor.VisitorMainModel;
+import com.zhongshu.card.client.model.visitor.VisitorMainParam;
 import com.zhongshu.card.client.model.visitor.VisitorMainSearch;
 import com.zhongshu.card.client.model.visitor.VisitorReViewParam;
 import com.zhongshu.card.client.openApi.base.BusIdParam;
@@ -17,8 +18,10 @@ import com.zhongshu.card.server.core.domain.visitor.VisitorMain;
 import com.zhongshu.card.server.core.service.base.CommonService;
 import com.zhongshu.card.server.core.service.visitor.VisitorMainService;
 import com.zhongshu.card.server.core.util.BeanUtils;
+import com.zhongshu.card.server.core.util.TempUserUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.kafka.common.errors.ApiException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
@@ -59,15 +62,27 @@ public class VisitorOpenService {
         if (ObjectUtils.isEmpty(sceneComponent)) {
             return ResultContent.buildFail("反馈组件未配置");
         }
-        visitorMainParam.setSceneComponentId(sceneComponent.getId());
 
+        // 检查项目信息
         ResultContent<String> resultContent = commonService.checkProjectCanUserByCode(visitorMainParam.getProjectCode());
         if (resultContent.isFailed()) {
             return ResultContent.buildFail(resultContent.getMsg());
         }
         String projectOid = resultContent.getContent();
-        visitorMainParam.setProjectOid(projectOid);
-        ResultContent<VisitorMain> applyResult = visitorMainService.saveInfo(visitorMainParam);
+        //
+        if (StringUtils.isEmpty(visitorMainParam.getTempUserId())) {
+            return ResultContent.buildFail("tempUserId不能为空");
+        }
+        if (!TempUserUtil.idIsVisitorId(visitorMainParam.getTempUserId())) {
+            return ResultContent.buildFail("tempUserId必须包含visitor字符");
+        }
+
+        VisitorMainParam param = new VisitorMainParam();
+        BeanUtils.copyProperties(visitorMainParam, param);
+        param.setProjectOid(projectOid);
+        param.setSceneComponentId(sceneComponent.getId());
+
+        ResultContent<VisitorMain> applyResult = visitorMainService.saveInfo(param);
         if (applyResult.isFailed()) {
             return ResultContent.buildFail(applyResult.getMsg());
         }

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

@@ -69,7 +69,7 @@ public class DevicePermissVerifyService {
     /**
      * 验证用户是否有设备的使用权限
      *
-     * @param userId
+     * @param userId     用户userId 或
      * @param deviceId
      * @return
      */

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

@@ -229,14 +229,20 @@ public class VisitorMainService extends SuperPermissService {
         entity.setPerStartTime(perStartTime);
         entity.setPerEndTime(perEndTime);
 
+        // 如果访客申请,当前用户的userId为空,则标识他是 访客访问
         String tempUserId = applyUserId;
         UserFromType userFromType = UserFromType.SystemUser;
         if (StringUtils.isEmpty(tempUserId)) {
-            tempUserId = TempUserUtil.getVisitorTempUserId();
+            if (StringUtils.isNotEmpty(param.getTempUserId())) {
+                tempUserId = param.getTempUserId();
+            } else {
+                tempUserId = TempUserUtil.getVisitorTempUserId();
+            }
             userFromType = UserFromType.VisitorUser;
         }
-        entity.setUserFromType(userFromType);
+        // 访客 userId
         entity.setTempUserId(tempUserId);
+        entity.setUserFromType(userFromType);
         visitorMainDao.save(entity);
         return ResultContent.buildSuccess(entity);
     }