海康接口-1

This commit is contained in:
zjf committed 2025-04-28 17:26:18 +08:00
1 parent 5e64f452ba
commit 1f6d49381d
21 files changed
+881

No files matched your search

@@ -0,0 +1,13 @@
package com.bsd.pjcloud.thirdparty.dto.visitor;
import lombok.Data;
@Data
public abstract class BaseHikvisionResponse {
private String code;
private String msg;
public boolean isSuccess() {
return "0".equals(code);
}
}
@@ -0,0 +1,15 @@
package com.bsd.pjcloud.thirdparty.dto.visitor;
import lombok.Data;
import org.apache.poi.ss.formula.functions.T;
import java.util.List;
@Data
public class PageListData<T> {
private Long total;
private Integer pageNo;
private Integer pageSize;
private List<T> list;
}
@@ -0,0 +1,26 @@
package com.bsd.pjcloud.thirdparty.dto.visitor;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import lombok.Data;
/**
* 通用分页请求参数基类
* 适用于所有分页查询接口
*/
@Data
public class PageListRequest {
/**
* 当前页码(必须>0)
*/
@Min(value = 1, message = "页码必须大于0")
private Integer pageNo;
/**
* 每页记录数(1-1000)
*/
@Min(value = 1, message = "每页最少1条记录")
@Max(value = 1000, message = "每页最多1000条记录")
private Integer pageSize;
}
@@ -0,0 +1,29 @@
package com.bsd.pjcloud.thirdparty.dto.visitor;
import lombok.Data;
import org.apache.poi.ss.formula.functions.T;
/**
* 访客预约响应主类
*/
@Data
public class VisitorObjectResponse {
/**
* 返回码
* 0-成功,其他见错误码表
*/
private String code;
/**
* 返回描述
*/
private String msg;
/**
* 预约结果数据
*/
private T data;
}
@@ -0,0 +1,12 @@
package com.bsd.pjcloud.thirdparty.dto.visitor;
import lombok.Data;
import org.apache.poi.ss.formula.functions.T;
@Data
public class VisitorResponse<T> {
private String code;
private String msg;
private PageListData<T> data;
}
@@ -0,0 +1,59 @@
package com.bsd.pjcloud.thirdparty.dto.visitor.request.make;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import lombok.Data;
import java.util.List;
/*
* 访客预约请求参数主类
* API路径:/api/visitor/v2/appointment
*/
@Data
public class VisitorAppointmentRequest {
/**
* 被访人唯一标识(必填)
* 通过人员查询接口获取的personId
*/
@NotBlank(message = "被访人ID不能为空")
private String receptionistId;
/**
* 访客权限配置
*/
private VisitorPermissionSet visitorPermissionSet;
/**
* 预计来访时间(必填)
* ISO8601格式:yyyy-MM-ddTHH:mm:ss+时区
*/
@NotBlank(message = "来访时间不能为空")
private String visitStartTime;
/**
* 预计离开时间(必填)
* 必须晚于当前时间和来访时间
*/
@NotBlank(message = "离开时间不能为空")
private String visitEndTime;
/**
* 来访事由(可选)
* 长度限制:0-32个字符
*/
@Size(max = 32, message = "来访事由最长32个字符")
private String visitPurpose;
/**
* 访客信息列表(必填)
* 最大支持128位访客,其中最多4位可带人脸信息
*/
@Valid
private List<VisitorInfo> visitorInfoList;
}
@@ -0,0 +1,135 @@
package com.bsd.pjcloud.thirdparty.dto.visitor.request.make;
import jakarta.validation.constraints.*;
import lombok.Builder;
import lombok.Data;
import org.hibernate.validator.constraints.Range;
import java.util.Map;
/**
* 访客详细信息实体
* 对应接口文档中 visitorInfoList 的单个访客对象
*/
@Data
@Builder
public class VisitorInfo {
/**
* 访客姓名(必填)
* 长度限制:1-32字符
* 禁止字符:’ / \ : * ? " < >
*/
@NotBlank(message = "访客姓名不能为空")
@Size(min = 1, max = 32, message = "姓名长度需在1-32个字符之间")
@Pattern(regexp = "^[^'/\\\\:*?\"<>]+$", message = "姓名包含非法字符")
private String visitorName;
/**
* 性别(必填)
* 1-男,2-女
*/
@NotNull(message = "性别不能为空")
@Min(value = 1, message = "性别值无效")
@Max(value = 2, message = "性别值无效")
private Integer gender;
/**
* 联系电话(必填)
* 需符合手机号格式:11位数字
*/
@NotBlank(message = "联系电话不能为空")
@Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式不正确")
private String phoneNo;
/**
* 车牌号(可选)
* 格式示例:浙A12345
* 禁止字符:’ / \ : * ? " < >
*/
@Pattern(regexp = "^[^'/\\\\:*?\"<>]*$", message = "车牌号包含非法字符")
private String plateNo;
/**
* 证件类型(可选)
* 111-身份证,其他类型参考附录A.11
*/
@Min(value = 1, message = "证件类型代码无效")
private Integer certificateType;
/**
* 证件号码(可选)
* 当填写证件号时,证件类型必填
* 长度限制:1-20位字符
*/
@Size(min = 1, max = 20, message = "证件号长度需在1-20位之间")
private String certificateNo;
/**
* 证件地址(可选)
* 格式示例:江苏南京
* 长度限制:1-128字符
*/
@Size(max = 128, message = "证件地址最长128个字符")
private String certAddr;
/**
* 发证机关(可选)
* 格式示例:南京市公安局
* 长度限制:1-32字符
*/
@Size(max = 32, message = "发证机关最长32个字符")
private String certIssuer;
/**
* 民族(可选)
* 使用国标GB/T 3304-1991编码
*/
@Min(value = 1, message = "民族编码无效")
private Integer nation;
/**
* 籍贯(可选)
* 格式示例:江苏南京
* 长度限制:1-32字符
*/
@Size(max = 32, message = "籍贯最长32个字符")
private String birthplace;
/**
* 访客头像(可选)
* Base64编码的JPG图片(不超过200KB)
* 需要先通过人脸质量检测(评分≥75)
*/
@Size(max = 300000, message = "头像大小超过200KB限制") // 200KB约对应约273,000字符
private String visitorPhoto;
/**
* 来访单位(可选)
* 格式示例:海康威视
* 长度限制:1-32字符
* 禁止字符:’ / \ : * ? " < >
*/
@Size(max = 32, message = "单位名称最长32个字符")
@Pattern(regexp = "^[^'/\\\\:*?\"<>]*$", message = "单位名称包含非法字符")
private String visitorWorkUnit;
/**
* 访客住址(可选)
* 格式示例:人民路一号
* 长度限制:1-128字符
*/
@Size(max = 128, message = "地址最长128个字符")
private String visitorAddress;
/**
* 扩展字段(用于平台自定义属性)
* Key需与平台定义的属性key一致
* 示例:"emergencyContact": "李四"
*/
private Map<String, Object> extendedFields;
}
@@ -0,0 +1,32 @@
package com.bsd.pjcloud.thirdparty.dto.visitor.request.make;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import lombok.Data;
import java.util.List;
/**
* 访客权限组配置
*/
@Data
public class VisitorPermissionSet {
/**
* 是否使用默认权限组
* 1-使用,非1-不使用
*/
@Pattern(regexp = "1|.*", message = "默认权限组标识格式错误")
private String defaultPrivilegeGroupFlag;
/**
* 权限组ID列表
* 当defaultPrivilegeGroupFlag不为1时必填
*/
@Size(min = 1, message = "权限组ID列表不能为空")
private List<String> privilegeGroupIds;
}
@@ -0,0 +1,38 @@
package com.bsd.pjcloud.thirdparty.dto.visitor.request.person;
import java.time.LocalDateTime;
import java.util.List;
import lombok.Data;
/**
* 人员详细信息实体
*/
@Data
public class PersonInfo {
private String personId;
private String personName;
private Integer gender;
private String orgIndexCode;
private String phoneNo;
private String jobNo;
private Integer certificateType;
private String certificateNo;
private LocalDateTime createTime;
private LocalDateTime updateTime;
private String orgPath;
private String orgPathName;
private List<PersonPhoto> personPhoto;
/**
* 人员照片信息
*/
@Data
public static class PersonPhoto {
private String personPhotoIndexCode;
private String picUri;
private String serverIndexCode;
private String personId;
}
}
@@ -0,0 +1,26 @@
package com.bsd.pjcloud.thirdparty.dto.visitor.response.make;
import lombok.Data;
import java.util.List;
/**
* 预约结果数据封装
*/
@Data
public class AppointmentData {
/**
* 预约记录唯一ID
* 用于后续修改/取消操作
*/
private String appointRecordId;
/**
* 预约详细信息列表
*/
private List<AppointmentInfo> appointmentInfoList;
}
@@ -0,0 +1,28 @@
package com.bsd.pjcloud.thirdparty.dto.visitor.response.make;
import lombok.Data;
/**
* 单条预约详细信息
*/
@Data
public class AppointmentInfo {
/*
* 访客姓名
*/
private String visitorName;
/**
* 被访人ID
*/
private String receptionistId;
/**
* 动态二维码内容
* 需转换为二维码图片
*/
private String QRCode;
}