提交修改

This commit is contained in:
quyixiao 2025-03-15 19:38:13 +08:00
parent 3e5ca3c649
commit 25b792b2fe
27 changed files with 203 additions and 42 deletions

View File

@ -3,7 +3,7 @@ package com.heyu.api.data.dto;
import lombok.Data; import lombok.Data;
@Data @Data
public class BaseRequest { public class BaseReq {
/** /**
* token * token
*/ */

View File

@ -18,6 +18,8 @@ import org.springframework.stereotype.Component;
/** /**
* https://next.api.aliyun.com/api/facebody/2019-12-30/DetectVideoLivingFace?tab=DOC&lang=JAVA * https://next.api.aliyun.com/api/facebody/2019-12-30/DetectVideoLivingFace?tab=DOC&lang=JAVA
*
*
* 视频活体检测 * 视频活体检测
*/ */
@Component @Component
@ -36,11 +38,15 @@ public class ADetectVideoLivingFaceHandle extends AlibabaBaseHandle<ADetectVideo
if (!flag) { if (!flag) {
return "videoSuffix不正确请上传" + JSON.toJSONString(MimeTypeEnums.videoSuffixList) + "其中一种"; return "videoSuffix不正确请上传" + JSON.toJSONString(MimeTypeEnums.videoSuffixList) + "其中一种";
} }
OssFileUploadService ossFileUploadService = SpringContextUtils.getBean(OssFileUploadService.class); OssFileUploadService ossFileUploadService = SpringContextUtils.getBean(OssFileUploadService.class);
if (StringUtils.isBlank(request.getImageUrl()) && StringUtils.isBlank(request.getImageBase64())) { if (StringUtils.isBlank(request.getImageUrl()) && StringUtils.isBlank(request.getImageBase64())) {
log.info("ADetectVideoLivingFaceHandle url and body not null"); log.info("ADetectVideoLivingFaceHandle url and body not null");
return "url 或 base64 不能同时为空"; return "url 或 base64 不能同时为空";
} }
if (StringUtils.isNotBlank(request.getImageBase64())) { if (StringUtils.isNotBlank(request.getImageBase64())) {
try { try {
String url = ossFileUploadService.uploadFileContentByBase64(request.getImageBase64(), request.getVideoSuffix()); String url = ossFileUploadService.uploadFileContentByBase64(request.getImageBase64(), request.getVideoSuffix());

View File

@ -1,6 +1,5 @@
package com.heyu.api.alibaba.request; package com.heyu.api.alibaba.request;
import com.heyu.api.data.dto.BaseRequest;
import lombok.Data; import lombok.Data;
@Data @Data

View File

@ -1,7 +1,7 @@
package com.heyu.api.alibaba.request.imageaudit; package com.heyu.api.alibaba.request.imageaudit;
import com.heyu.api.data.dto.BaseRequest; import com.heyu.api.data.dto.BaseReq;
import lombok.Data; import lombok.Data;
import java.util.List; import java.util.List;
@ -10,7 +10,7 @@ import java.util.List;
* https://next.api.aliyun.com/api/imageaudit/2019-12-30/ScanText * https://next.api.aliyun.com/api/imageaudit/2019-12-30/ScanText
*/ */
@Data @Data
public class AScanTextRequest extends BaseRequest { public class AScanTextRequest extends BaseReq {
/** /**
* 场景 * 场景

View File

@ -5,7 +5,7 @@ import com.alibaba.fastjson.JSONObject;
import com.heyu.api.data.constants.ApiConstants; import com.heyu.api.data.constants.ApiConstants;
import com.heyu.api.data.dto.AccountDTO; import com.heyu.api.data.dto.AccountDTO;
import com.heyu.api.data.dto.BaseRequest; import com.heyu.api.data.dto.BaseReq;
import com.heyu.api.data.dto.RequestLogDTO; import com.heyu.api.data.dto.RequestLogDTO;
import com.heyu.api.data.dto.TokenDTO; import com.heyu.api.data.dto.TokenDTO;
import com.heyu.api.data.service.bussiness.RedisSettingService; import com.heyu.api.data.service.bussiness.RedisSettingService;
@ -120,8 +120,8 @@ public class LogAop {
if (intercept) { if (intercept) {
Object[] argsList = point.getArgs(); Object[] argsList = point.getArgs();
for (Object x : argsList) { for (Object x : argsList) {
if (x instanceof BaseRequest) { if (x instanceof BaseReq) {
token = ((BaseRequest) x).getToken(); token = ((BaseReq) x).getToken();
if (StringUtils.isBlank(token)) { if (StringUtils.isBlank(token)) {
return R.error("token不能为null"); return R.error("token不能为null");
} }

View File

@ -4,14 +4,11 @@ package com.heyu.api.controller.car;
import com.aliyun.ocr20191230.models.RecognizeTaxiInvoiceResponse; import com.aliyun.ocr20191230.models.RecognizeTaxiInvoiceResponse;
import com.aliyun.ocr20191230.models.RecognizeTaxiInvoiceResponseBody; import com.aliyun.ocr20191230.models.RecognizeTaxiInvoiceResponseBody;
import com.heyu.api.alibaba.handle.common.text.ARecognizeTaxiInvoiceHandle; import com.heyu.api.alibaba.handle.common.text.ARecognizeTaxiInvoiceHandle;
import com.heyu.api.alibaba.request.common.text.ARecognizeDrivingLicenseRequest;
import com.heyu.api.alibaba.request.common.text.ARecognizeTaxiInvoiceRequest; import com.heyu.api.alibaba.request.common.text.ARecognizeTaxiInvoiceRequest;
import com.heyu.api.controller.BaseController; import com.heyu.api.controller.BaseController;
import com.heyu.api.data.annotation.NotIntercept; import com.heyu.api.data.annotation.NotIntercept;
import com.heyu.api.data.dto.BaseRequest;
import com.heyu.api.data.utils.ApiR; import com.heyu.api.data.utils.ApiR;
import com.heyu.api.data.utils.R; import com.heyu.api.data.utils.R;
import lombok.Data;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;

View File

@ -0,0 +1,82 @@
package com.heyu.api.controller.video;
import com.aliyun.facebody20191230.models.DetectVideoLivingFaceResponse;
import com.aliyun.facebody20191230.models.DetectVideoLivingFaceResponseBody;
import com.google.protobuf.Api;
import com.heyu.api.alibaba.handle.facebody.ADetectVideoLivingFaceHandle;
import com.heyu.api.alibaba.request.facebody.ADetectVideoLivingFaceRequest;
import com.heyu.api.controller.BaseController;
import com.heyu.api.data.annotation.CacheResult;
import com.heyu.api.data.annotation.NotIntercept;
import com.heyu.api.data.utils.ApiR;
import com.heyu.api.data.utils.R;
import com.heyu.api.request.video.DetectVideoLivingFaceReq;
import com.heyu.api.request.video.RecognizeVideoCharacterReq;
import com.heyu.api.resp.video.DetectVideoLivingFaceResp;
import com.lz.mybatis.plugins.interceptor.RestoreQueryDataScopeInterceptor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
/***
* https://next.api.aliyun.com/api/facebody/2019-12-30/DetectVideoLivingFace?tab=DEMO&lang=JAVA&RegionId=cn-shanghai
*视频活体检测
*
* DetectVideoLivingFace
*
*
*
* 功能描述
* 视频活体检测能力可以检测输入视频中的人脸来自直接拍摄还是翻拍当视频中出现多个人脸时对画面中面积最大的人脸进行判断需要确保待检测人脸五官清晰可见
*
*
*/
@Slf4j
@RestController
@RequestMapping("/video/living")
@NotIntercept
public class DetectVideoLivingFaceController extends BaseController {
@Autowired
private ADetectVideoLivingFaceHandle aDetectVideoLivingFaceHandle;
@RequestMapping("/recognize")
@CacheResult
public R recognize(DetectVideoLivingFaceReq req) {
List<DetectVideoLivingFaceResp> resps = new ArrayList<>();
ADetectVideoLivingFaceRequest request = new ADetectVideoLivingFaceRequest();
request.setImageUrl(req.getVideoURL());
request.setImageBase64(req.getVideoBase64());
request.setVideoSuffix(req.getVideoSuffix());
ApiR<DetectVideoLivingFaceResponse> aR = aDetectVideoLivingFaceHandle.handle(request);
if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) {
List<DetectVideoLivingFaceResponseBody.DetectVideoLivingFaceResponseBodyDataElements> elements = aR.getData().getBody().getData().getElements();
for (DetectVideoLivingFaceResponseBody.DetectVideoLivingFaceResponseBodyDataElements element : elements) {
DetectVideoLivingFaceResp detectVideoLivingFaceResp = new DetectVideoLivingFaceResp();
detectVideoLivingFaceResp.setFaceConfidence(element.getFaceConfidence());
detectVideoLivingFaceResp.setLiveConfidence(element.getLiveConfidence());
resps.add(detectVideoLivingFaceResp);
}
return R.ok().setData(resps);
}
return R.error();
}
}

View File

@ -1,12 +1,12 @@
package com.heyu.api.request; package com.heyu.api.request;
import com.heyu.api.data.dto.BaseRequest; import com.heyu.api.data.dto.BaseReq;
import lombok.Data; import lombok.Data;
@Data @Data
public class CommonReq extends BaseRequest { public class CommonReq extends BaseReq {
/** /**
* 图片的url * 图片的url
*/ */

View File

@ -1,6 +1,6 @@
package com.heyu.api.request.car; package com.heyu.api.request.car;
import com.heyu.api.data.dto.BaseRequest; import com.heyu.api.data.dto.BaseReq;
import lombok.Data; import lombok.Data;
@ -16,7 +16,7 @@ import lombok.Data;
* *
*/ */
@Data @Data
public class RecognizeDriverLicenseReq extends BaseRequest { public class RecognizeDriverLicenseReq extends BaseReq {

View File

@ -1,11 +1,11 @@
package com.heyu.api.request.card; package com.heyu.api.request.card;
import com.heyu.api.data.dto.BaseRequest; import com.heyu.api.data.dto.BaseReq;
import lombok.Data; import lombok.Data;
@Data @Data
public class BusinessLicenseRecognizeRequest extends BaseRequest { public class BusinessLicenseRecognizeRequest extends BaseReq {

View File

@ -1,7 +1,7 @@
package com.heyu.api.request.card; package com.heyu.api.request.card;
import com.heyu.api.data.dto.BaseRequest; import com.heyu.api.data.dto.BaseReq;
import lombok.Data; import lombok.Data;
/*** /***
@ -12,7 +12,7 @@ import lombok.Data;
* *
*/ */
@Data @Data
public class CharacterRecognizeRequest extends BaseRequest { public class CharacterRecognizeRequest extends BaseReq {
/** /**

View File

@ -1,11 +1,11 @@
package com.heyu.api.request.certificate; package com.heyu.api.request.certificate;
import com.heyu.api.data.dto.BaseRequest; import com.heyu.api.data.dto.BaseReq;
import lombok.Data; import lombok.Data;
@Data @Data
public class ApiIdentityCardRequest extends BaseRequest { public class ApiIdentityCardRequest extends BaseReq {
/** /**
* 图片的url * 图片的url

View File

@ -1,11 +1,11 @@
package com.heyu.api.request.certificate; package com.heyu.api.request.certificate;
import com.heyu.api.data.dto.BaseRequest; import com.heyu.api.data.dto.BaseReq;
import lombok.Data; import lombok.Data;
@Data @Data
public class BankCard2MetaRequest extends BaseRequest { public class BankCard2MetaRequest extends BaseReq {
/*** /***
* 银行卡号 * 银行卡号

View File

@ -1,6 +1,6 @@
package com.heyu.api.request.face; package com.heyu.api.request.face;
import com.heyu.api.data.dto.BaseRequest; import com.heyu.api.data.dto.BaseReq;
import lombok.Data; import lombok.Data;
/**** /****
@ -13,7 +13,7 @@ import lombok.Data;
* *
*/ */
@Data @Data
public class CompareFaceReq extends BaseRequest { public class CompareFaceReq extends BaseReq {
/** /**
* 图片的url * 图片的url

View File

@ -1,7 +1,7 @@
package com.heyu.api.request.face; package com.heyu.api.request.face;
import com.heyu.api.data.dto.BaseRequest; import com.heyu.api.data.dto.BaseReq;
import lombok.Data; import lombok.Data;
/*** /***
@ -14,7 +14,7 @@ import lombok.Data;
* *
*/ */
@Data @Data
public class CompareFaceWithMaskReq extends BaseRequest { public class CompareFaceWithMaskReq extends BaseReq {

View File

@ -1,7 +1,6 @@
package com.heyu.api.request.face; package com.heyu.api.request.face;
import com.heyu.api.data.dto.BaseRequest;
import com.heyu.api.request.CommonReq; import com.heyu.api.request.CommonReq;
import lombok.Data; import lombok.Data;

View File

@ -1,7 +1,6 @@
package com.heyu.api.request.face; package com.heyu.api.request.face;
import com.heyu.api.data.dto.BaseRequest;
import com.heyu.api.request.CommonReq; import com.heyu.api.request.CommonReq;
import lombok.Data; import lombok.Data;

View File

@ -1,10 +1,10 @@
package com.heyu.api.request.face; package com.heyu.api.request.face;
import com.heyu.api.data.dto.BaseRequest; import com.heyu.api.data.dto.BaseReq;
import lombok.Data; import lombok.Data;
@Data @Data
public class DetectInfraredLivingFaceReq extends BaseRequest { public class DetectInfraredLivingFaceReq extends BaseReq {

View File

@ -1,7 +1,6 @@
package com.heyu.api.request.face; package com.heyu.api.request.face;
import com.heyu.api.data.dto.BaseRequest;
import com.heyu.api.request.CommonReq; import com.heyu.api.request.CommonReq;
import lombok.Data; import lombok.Data;

View File

@ -1,7 +1,7 @@
package com.heyu.api.request.file; package com.heyu.api.request.file;
import com.heyu.api.data.dto.BaseRequest; import com.heyu.api.data.dto.BaseReq;
import lombok.Data; import lombok.Data;
@ -10,7 +10,7 @@ import lombok.Data;
* https://next.api.aliyun.com/api/ocr/2019-12-30/RecognizePdf * https://next.api.aliyun.com/api/ocr/2019-12-30/RecognizePdf
*/ */
@Data @Data
public class RecognizePdfReq extends BaseRequest { public class RecognizePdfReq extends BaseReq {
/*** /***

View File

@ -1,7 +1,7 @@
package com.heyu.api.request.mobile; package com.heyu.api.request.mobile;
import com.heyu.api.data.dto.BaseRequest; import com.heyu.api.data.dto.BaseReq;
import lombok.Data; import lombok.Data;
/*** /***
@ -10,7 +10,7 @@ import lombok.Data;
* 手机号二要素核验 * 手机号二要素核验
*/ */
@Data @Data
public class Mobile2MetaVerificationRequest extends BaseRequest { public class Mobile2MetaVerificationRequest extends BaseReq {
/*** /***

View File

@ -1,7 +1,7 @@
package com.heyu.api.request.mobile; package com.heyu.api.request.mobile;
import com.heyu.api.data.dto.BaseRequest; import com.heyu.api.data.dto.BaseReq;
import lombok.Data; import lombok.Data;
/*** /***
@ -10,7 +10,7 @@ import lombok.Data;
* 手机号三要素核验 * 手机号三要素核验
*/ */
@Data @Data
public class Mobile3MetaVerificationRequest extends BaseRequest { public class Mobile3MetaVerificationRequest extends BaseReq {
/** /**
* 请求订单编号 * 请求订单编号

View File

@ -0,0 +1,52 @@
package com.heyu.api.request.video;
import com.heyu.api.data.dto.BaseReq;
import lombok.Data;
/***
* https://next.api.aliyun.com/api/facebody/2019-12-30/DetectVideoLivingFace?tab=DEMO&lang=JAVA&RegionId=cn-shanghai
*
*视频活体检测
*
* DetectVideoLivingFace
*
*
*
*/
@Data
public class DetectVideoLivingFaceReq extends BaseReq {
/***
* 视频 URL 地址推荐使用上海地域的 OSS 链接对于文件在本地或者非上海地域 OSS 链接的情况请参见文件 URL 处理
*
* 示例值:
* http://viapi-test.oss-cn-shanghai.aliyuncs.com/viapi-3.0domepic/videoenhan/RecognizeVideoCharacter/xxxx.mp4
*/
private String videoURL;
/**
* 视频的base64
*/
private String videoBase64;
/**
* 如果是传的是base64 则需要加视频后端
* <p>
* MP4视频文件mp4
* MPEG视频文件mpeg, mpg
* OGG视频文件ogv
* WebM视频文件webm
* AVI视频文件avi
*/
private String videoSuffix;
}

View File

@ -1,12 +1,11 @@
package com.heyu.api.request.video; package com.heyu.api.request.video;
import com.heyu.api.data.dto.BaseRequest; import com.heyu.api.data.dto.BaseReq;
import com.heyu.api.data.dto.BaseResp;
import lombok.Data; import lombok.Data;
@Data @Data
public class RecognizeVideoCharacterReq extends BaseRequest { public class RecognizeVideoCharacterReq extends BaseReq {
/*** /***

View File

@ -1,7 +1,6 @@
package com.heyu.api.resp.face; package com.heyu.api.resp.face;
import com.heyu.api.data.dto.BaseRequest;
import com.heyu.api.data.dto.BaseResp; import com.heyu.api.data.dto.BaseResp;
import lombok.Data; import lombok.Data;

View File

@ -1,7 +1,6 @@
package com.heyu.api.resp.tax; package com.heyu.api.resp.tax;
import com.heyu.api.data.dto.BaseRequest;
import com.heyu.api.data.dto.BaseResp; import com.heyu.api.data.dto.BaseResp;
import lombok.Data; import lombok.Data;

View File

@ -0,0 +1,31 @@
package com.heyu.api.resp.video;
import com.heyu.api.data.dto.BaseResp;
import lombok.Data;
import java.awt.datatransfer.FlavorEvent;
@Data
public class DetectVideoLivingFaceResp extends BaseResp {
/***
* 活体的置信度取值范围为 0~1
*
* 示例值:
* 0.72464925050735474
*/
private Float liveConfidence;
/***
* 人脸的置信度取值范围为 0~1
*
* 示例值:
* 0.84644949436187744
*/
private Float faceConfidence;
}