feat:更改页面
This commit is contained in:
1 parent
4e804a17cd
commit
8995bf89d6
174 files changed
+11342
-220
No files matched your search
+49
@@ -0,0 +1,49 @@
|
||||
package com.bsd.pjcloud.admin.api.dto;
|
||||
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 终端上报的一条人脸静态图片质量结果。
|
||||
*/
|
||||
@Data
|
||||
public class SysUserFaceQualityReportItemDto {
|
||||
|
||||
/**
|
||||
* 虹软 32 位搜索样本编号,对应 {@code sys_user_face.auto_code}。
|
||||
*/
|
||||
@NotBlank(message = "人脸样本编号不能为空")
|
||||
private String sampleId;
|
||||
|
||||
/**
|
||||
* 检测状态,跨端协议值仅允许 detected 或 failed。
|
||||
*/
|
||||
@NotBlank(message = "人脸质量检测状态不能为空")
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 虹软静态图片质量分,detected 时必填且范围为 0 到 1,failed 时必须为空。
|
||||
*/
|
||||
private BigDecimal score;
|
||||
|
||||
/**
|
||||
* 终端检测所依据的人脸图片版本,必须与服务端当前人脸更新时间一致。
|
||||
*/
|
||||
@NotNull(message = "人脸图片版本不能为空")
|
||||
private LocalDateTime sourceUpdatedAt;
|
||||
|
||||
/**
|
||||
* 终端完成本次检测的本地时间,用于保证重复和延迟上报不会覆盖更新结果。
|
||||
*/
|
||||
@NotNull(message = "人脸质量检测时间不能为空")
|
||||
private LocalDateTime checkedAt;
|
||||
|
||||
/**
|
||||
* 虹软 SDK 或终端插件错误码,detected 时必须为空,failed 时允许为空。
|
||||
*/
|
||||
private Integer errorCode;
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
package com.bsd.pjcloud.admin.api.dto;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.Size;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 终端按可信部门批量删除人脸的内部请求。
|
||||
*/
|
||||
@Data
|
||||
public class SysUserFaceTerminalDeleteDto {
|
||||
|
||||
/**
|
||||
* Hardware 根据 DEVICE-ID 解析出的商户部门主键。
|
||||
*/
|
||||
@NotNull(message = "终端绑定部门不能为空")
|
||||
private Long merchantDeptId;
|
||||
|
||||
/**
|
||||
* 待删除的虹软样本编号,单批最多 500 条。
|
||||
*/
|
||||
@NotNull(message = "人脸样本编号不能为空")
|
||||
@Size(min = 1, max = 500, message = "单次最多删除500条人脸")
|
||||
private List<String> sampleIds;
|
||||
}
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
package com.bsd.pjcloud.admin.api.dto;
|
||||
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.Size;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Hardware 向 UPMS 上报终端人脸质量的内部可信请求。
|
||||
*/
|
||||
@Data
|
||||
public class SysUserFaceTerminalQualityReportDto {
|
||||
|
||||
/**
|
||||
* Hardware 根据 DEVICE-ID 解析出的商户部门主键,终端请求体不得指定。
|
||||
*/
|
||||
@NotNull(message = "终端绑定部门不能为空")
|
||||
private Long merchantDeptId;
|
||||
|
||||
/**
|
||||
* Hardware 验证存在且已绑定商户的终端设备主键,用于质量结果来源追踪。
|
||||
*/
|
||||
@NotNull(message = "质量上报终端不能为空")
|
||||
private Long qualityDeviceId;
|
||||
|
||||
/**
|
||||
* 本批人脸质量结果,单次最多 500 条且不允许重复样本编号。
|
||||
*/
|
||||
@Valid
|
||||
@NotEmpty(message = "人脸质量结果不能为空")
|
||||
@Size(max = 500, message = "单次最多上报500条人脸质量结果")
|
||||
private List<SysUserFaceQualityReportItemDto> items;
|
||||
}
|
||||
+66
@@ -0,0 +1,66 @@
|
||||
package com.bsd.pjcloud.admin.api.feign;
|
||||
|
||||
import com.bsd.pjcloud.admin.api.dto.SysUserFaceTerminalDeleteDto;
|
||||
import com.bsd.pjcloud.admin.api.dto.SysUserFaceTerminalQualityReportDto;
|
||||
import com.bsd.pjcloud.admin.api.vo.SysUserFaceStatusCountVo;
|
||||
import com.bsd.pjcloud.admin.api.vo.SysUserFaceEvidenceSourceVo;
|
||||
import com.bsd.pjcloud.admin.api.vo.SysUserFaceTerminalDeleteVo;
|
||||
import com.bsd.pjcloud.admin.api.vo.SysUserFaceTerminalQualityReportVo;
|
||||
import com.bsd.pjcloud.common.core.constant.ServiceNameConstants;
|
||||
import com.bsd.pjcloud.common.core.util.R;
|
||||
import com.bsd.pjcloud.common.feign.annotation.NoToken;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 用户人脸远程服务。
|
||||
*/
|
||||
@FeignClient(contextId = "remoteUserFaceService", value = ServiceNameConstants.UPMS_SERVICE)
|
||||
public interface RemoteUserFaceService {
|
||||
|
||||
/**
|
||||
* 批量查询用户的人脸可用与审核中数量。
|
||||
*
|
||||
* @param userIds 用户ID列表
|
||||
* @return 各用户的人脸状态数量
|
||||
*/
|
||||
@NoToken
|
||||
@PostMapping("/user-face/inner/status-count")
|
||||
R<List<SysUserFaceStatusCountVo>> listStatusCounts(@RequestBody List<Long> userIds);
|
||||
|
||||
/**
|
||||
* 按用户和虹软样本编号读取审核通过的人脸原图地址,供订单证据服务复制订单专属快照。
|
||||
*
|
||||
* @param userId 识别用户主键
|
||||
* @param sampleId 虹软样本编号
|
||||
* @return 受信人脸图片来源;不存在或未审核通过时为空
|
||||
*/
|
||||
@NoToken
|
||||
@GetMapping("/user-face/inner/evidence-source")
|
||||
R<SysUserFaceEvidenceSourceVo> getEvidenceSource(@RequestParam Long userId, @RequestParam String sampleId);
|
||||
|
||||
/**
|
||||
* 按 Hardware 解析出的可信部门批量删除人脸。
|
||||
*
|
||||
* @param dto 商户部门与样本编号
|
||||
* @return 实际删除和已不存在的样本编号
|
||||
*/
|
||||
@NoToken
|
||||
@PostMapping("/user-face/inner/terminal-delete")
|
||||
R<SysUserFaceTerminalDeleteVo> terminalDelete(@RequestBody SysUserFaceTerminalDeleteDto dto);
|
||||
|
||||
/**
|
||||
* 按 Hardware 解析出的可信设备和部门批量保存终端人脸质量结果。
|
||||
*
|
||||
* @param dto 商户部门、来源设备及质量结果
|
||||
* @return 已更新、按版本或状态优先级忽略和已不存在的样本编号
|
||||
*/
|
||||
@NoToken
|
||||
@PostMapping("/user-face/inner/terminal-quality-report")
|
||||
R<SysUserFaceTerminalQualityReportVo> terminalReportQuality(@RequestBody SysUserFaceTerminalQualityReportDto dto);
|
||||
}
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
package com.bsd.pjcloud.admin.api.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 供 Hardware 订单证据服务使用的受信人脸原图来源,不包含特征数据和审核流程内部字段。
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "人脸证据原图来源")
|
||||
public class SysUserFaceEvidenceSourceVo {
|
||||
|
||||
/**
|
||||
* 人脸所属用户主键。
|
||||
*/
|
||||
@Schema(description = "用户主键")
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 虹软样本编号。
|
||||
*/
|
||||
@Schema(description = "样本编号")
|
||||
private String sampleId;
|
||||
|
||||
/**
|
||||
* 审核通过的人脸图片地址。
|
||||
*/
|
||||
@Schema(description = "人脸图片地址")
|
||||
private String faceImg;
|
||||
|
||||
/**
|
||||
* 人脸来源最后更新时间,用于证据审计和图片版本判断。
|
||||
*/
|
||||
@Schema(description = "来源更新时间")
|
||||
private LocalDateTime sourceUpdatedAt;
|
||||
}
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
package com.bsd.pjcloud.admin.api.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 用户人脸状态数量,用于跨服务批量汇总人脸业务状态。
|
||||
*/
|
||||
@Data
|
||||
public class SysUserFaceStatusCountVo {
|
||||
|
||||
/**
|
||||
* 用户ID。
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 审核通过且当前可用的人脸数量。
|
||||
*/
|
||||
private Long availableCount;
|
||||
|
||||
/**
|
||||
* 当前仍在审核中的人脸数量。
|
||||
*/
|
||||
private Long pendingCount;
|
||||
}
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
package com.bsd.pjcloud.admin.api.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 终端批量删除人脸的幂等确认结果。
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class SysUserFaceTerminalDeleteVo {
|
||||
|
||||
/**
|
||||
* 本次实际逻辑删除的样本编号。
|
||||
*/
|
||||
private List<String> deletedSampleIds;
|
||||
|
||||
/**
|
||||
* 请求前已经不存在的样本编号,终端可继续清理本地副本。
|
||||
*/
|
||||
private List<String> alreadyAbsentSampleIds;
|
||||
}
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
package com.bsd.pjcloud.admin.api.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 终端批量上报人脸质量后的幂等处理结果。
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class SysUserFaceTerminalQualityReportVo {
|
||||
|
||||
/**
|
||||
* 本次成功写入服务端的人脸样本编号。
|
||||
*/
|
||||
private List<String> updatedSampleIds;
|
||||
|
||||
/**
|
||||
* 因图片版本不一致、服务端已有成功结果或已有更新失败结果而忽略的样本编号。
|
||||
*/
|
||||
private List<String> ignoredStaleSampleIds;
|
||||
|
||||
/**
|
||||
* 请求时服务端已经不存在的样本编号,终端无需将其视为上报失败。
|
||||
*/
|
||||
private List<String> alreadyAbsentSampleIds;
|
||||
}
|
||||
Reference in new issue
Block a user