fix:女生认证

This commit is contained in:
dzc committed 2026-01-07 16:05:54 +08:00
1 parent e060b00c98
commit d3582ed54a
4 files changed
+64 -11

No files matched your search

@@ -16,7 +16,12 @@ import com.aliyun.teautil.models.RuntimeOptions;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Arrays;
import java.util.Base64;
import java.util.List;
/**
@@ -34,20 +39,43 @@ public class ThirdFaceVerifyServiceImpl implements ThirdFaceVerifyService {
private static final List<String> endpoints = Arrays.asList("cloudauth.cn-shanghai.aliyuncs.com", "cloudauth.cn-beijing.aliyuncs.com");
public static String convertImageUrlToBase64(String imageUrl) {
try {
URL url = new URL(imageUrl);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try (InputStream is = url.openStream()) {
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = is.read(buffer)) != -1) {
baos.write(buffer, 0, bytesRead);
}
}
byte[] imageBytes = baos.toByteArray();
return Base64.getEncoder().encodeToString(imageBytes);
} catch (Exception e) {
log.error("|人脸识别|,图片转换url-image to base64 错误:{}", e.getMessage());
return null;
}
}
/**
* 人脸识别
*/
@Override
public ThirdFaceVerifyResVO faceVerify(ThirdFaceVerifyReqVO dto) {
String base64Image = convertImageUrlToBase64(dto.getFaceVerifyUrl());
InitFaceVerifyRequest request = new InitFaceVerifyRequest();
request.setSceneId(thirdAlConfig.getFaceSceneId());
request.setProductCode("PV_FV");
request.setModel("MOVE_ACTION");
request.setModel("LIVENESS");
// 参数
request.setOuterOrderNo(dto.getCode());
request.setUserId(String.valueOf(dto.getFaceVerifyUserId()));
request.setMetaInfo(dto.getMetaInfoJson());
request.setFaceContrastPictureUrl(dto.getFaceVerifyUrl());
// request.setFaceContrastPictureUrl(dto.getFaceVerifyUrl());
request.setFaceContrastPicture(base64Image);
// 配置
request.setCallbackToken(thirdAlConfig.getFaceVerifyCallbackToken());
request.setCallbackUrl(thirdAlConfig.getFaceVerifyCallbackUrl() + "/admin-api/third-callback/face-verify");
@@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.common.util.date.DateUtils;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
import cn.iocoder.yudao.module.member.client.service.ChatApi;
import cn.iocoder.yudao.module.member.client.service.ThirdFaceVerifyService;
import cn.iocoder.yudao.module.member.client.vo.thirdfaceverify.ThirdFindFaceVerifyReqVo;
import cn.iocoder.yudao.module.member.client.vo.thirdfaceverify.ThirdFindFaceVerifyResVo;
@@ -55,6 +56,9 @@ public class ThirdCallbackController {
@Resource
private MemberRecentTagService memberRecentTagService;
@Resource
private ChatApi chatApi;
@GetMapping("/face-verify")
@Operation(summary = "人脸认证回调")
@PermitAll
@@ -94,19 +98,26 @@ public class ThirdCallbackController {
log.error("人脸认证回调,主动查询,第三方接口无响应");
return;
}
String message = "";
ComAuthDO updateObj = new ComAuthDO();
updateObj.setFailReason(faceVerifyRes.getErrorMessage());
if (faceVerifyRes.isPassed()) {
updateObj.setAuthStatus(MemberComAuthStatusEnum.CHECK_PASS.getType());
memberRecentTagService.setPersonTag(auth.getAuthMemberId(), true);
message = "您好,您已通过人脸识别认证。";
}
if (faceVerifyRes.isNotPassed()) {
updateObj.setAuthStatus(MemberComAuthStatusEnum.CHECK_FAIL.getType());
message = "您好,您未通过人脸识别认证,请重新认证。";
}
updateObj.setId(auth.getId());
updateObj.setAuthTime(LocalDateTime.now());
updateObj.setFailReason("验证失败");
authMapper.updateById(updateObj);
chatApi.messageUserSendText(auth.getAuthMemberId(), message);
TenantContextHolder.clear();
});
}
@@ -240,8 +240,8 @@ pf4j:
pluginsDir: ../plugins
chat:
base-url: http://127.0.0.1:8888
# base-url: http://chatsever.zianxin.com
# base-url: http://127.0.0.1:8888
base-url: http://chatsever.zianxin.com
app-key: 4H2HkBLygMsxaQKO
app-secret: JIizm84av3TK5xaQdsng7X5mqLPjbeQ0
@@ -250,10 +250,17 @@ tx-map:
app-key: GGCBZ-SVPWT-IO6XL-LHZ3I-YPMBS-O6B6D
app-secret: uYWt4DalxHgFnk6d9ul2KLdPVM1ABD9m
#al-config:
# access-key-id: LTAI5tJ7sSxB96XaY9T3Vq3D
# access-key-secret: EVXWFTS2SB6UkjUVFLhTDBfIvIXgI3
# face-scene-id: 1000016045
# face-verify-callback-url: https://dzc001.fy.takin.cc
# face-verify-callback-token: uVuYOzoiQBWPp4A5kPgTddZlKWoSQlzc
al-config:
access-key-id: LTAI5tJ7sSxB96XaY9T3Vq3D
access-key-secret: EVXWFTS2SB6UkjUVFLhTDBfIvIXgI3
face-scene-id: 1000016045
access-key-id: LTAI5tBrkf3ynA5CMLb4TYbo
access-key-secret: u3Za5XigBfRXo0iJHSbPgOSZTDVN3C
face-scene-id: 1000016556
face-verify-callback-url: https://dzc001.fy.takin.cc
face-verify-callback-token: uVuYOzoiQBWPp4A5kPgTddZlKWoSQlzc
@@ -241,11 +241,18 @@ tx-map:
app-key: GGCBZ-SVPWT-IO6XL-LHZ3I-YPMBS-O6B6D
app-secret: uYWt4DalxHgFnk6d9ul2KLdPVM1ABD9m
#al-config:
# access-key-id: LTAI5tJ7sSxB96XaY9T3Vq3D
# access-key-secret: EVXWFTS2SB6UkjUVFLhTDBfIvIXgI3
# face-scene-id: 1000016045
# face-verify-callback-url: https://chatapi.zianxin.com
# face-verify-callback-token: uVuYOzoiQBWPp4A5kPgTddZlKWoSQlzc
al-config:
access-key-id: LTAI5tJ7sSxB96XaY9T3Vq3D
access-key-secret: EVXWFTS2SB6UkjUVFLhTDBfIvIXgI3
face-scene-id: 1000016045
face-verify-callback-url: https://chatapi.zianxin.com
access-key-id: LTAI5tBrkf3ynA5CMLb4TYbo
access-key-secret: u3Za5XigBfRXo0iJHSbPgOSZTDVN3C
face-scene-id: 1000016556
face-verify-callback-url: https://dzc001.fy.takin.cc
face-verify-callback-token: uVuYOzoiQBWPp4A5kPgTddZlKWoSQlzc
brokerage: