From 00de04fd9826d5f4718a3527205741b65cfeb642 Mon Sep 17 00:00:00 2001 From: shenzhidan Date: Wed, 29 Jul 2026 11:03:56 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=B8=8A=E4=BC=A0=E4=BA=BA=E8=84=B8=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../primeport/command/DaHuaPersonSyncExe.java | 40 ++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/web-app/src/main/java/com/zcloud/primeport/command/DaHuaPersonSyncExe.java b/web-app/src/main/java/com/zcloud/primeport/command/DaHuaPersonSyncExe.java index fad793b..4bbfc78 100644 --- a/web-app/src/main/java/com/zcloud/primeport/command/DaHuaPersonSyncExe.java +++ b/web-app/src/main/java/com/zcloud/primeport/command/DaHuaPersonSyncExe.java @@ -1,6 +1,10 @@ package com.zcloud.primeport.command; import com.alibaba.cola.exception.BizException; +import com.alibaba.cola.dto.MultiResponse; +import com.zcloud.gbscommon.zclouduser.facade.ZcloudUserFacade; +import com.zcloud.gbscommon.zclouduser.request.ZcloudUserImgQry; +import com.zcloud.gbscommon.zclouduser.response.ZcloudUserImgBase64Co; import com.zcloud.primeport.domain.gateway.DaHuaGateway; import com.zcloud.primeport.domain.gateway.PersonApplyGateway; import com.zcloud.primeport.domain.model.DaHuaPersonSyncCmd; @@ -9,6 +13,7 @@ import com.zcloud.primeport.domain.model.XgfApplyPersonE; import com.zcloud.primeport.dto.PersonApplyUpdateCmd; import jodd.util.Base64; import lombok.AllArgsConstructor; +import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.stereotype.Component; import java.util.ArrayList; @@ -28,6 +33,9 @@ public class DaHuaPersonSyncExe { private final DaHuaGateway daHuaGateway; private final PersonApplyGateway personApplyGateway; + @DubboReference + private ZcloudUserFacade zcloudUserFacade; + /** * 相关方人员审核通过后,按证件号判断新增或更新大华人员。 */ @@ -118,11 +126,41 @@ public class DaHuaPersonSyncExe { DaHuaPersonSyncCmd.PersonBiosignature face = new DaHuaPersonSyncCmd.PersonBiosignature(); face.setType(3); face.setIndex(1); - face.setPath(faceUrl); + // userFaceUrl 是用户中心的文件路径,先通过 Dubbo 获取 Base64,交给网关上传到大华 + face.setBase64Data(resolveFaceBase64(faceUrl)); cmd.setPersonBiosignatures(Collections.singletonList(face)); return cmd; } + /** + * 通过用户中心把本系统头像路径转换为图片 Base64。 + * 大华人员接口的 path 必须是大华图片上传接口返回的 fileUrl,不能直接使用本系统路径。 + */ + private String resolveFaceBase64(String faceUrl) { + if (faceUrl == null || faceUrl.trim().isEmpty()) { + throw new BizException("相关方人员头像不能为空"); + } + ZcloudUserImgQry qry = new ZcloudUserImgQry(); + qry.setUrlList(Collections.singletonList(faceUrl)); + MultiResponse response; + try { + response = zcloudUserFacade.listBase64ByUrl(qry); + } catch (Exception e) { + throw new BizException("获取相关方人员头像失败"); + } + if (response == null || response.getData() == null) { + throw new BizException("获取相关方人员头像失败"); + } + for (ZcloudUserImgBase64Co image : response.getData()) { + if (image != null && faceUrl.equals(image.getUserAvatarUrl()) + && image.getUserAvatarBase64() != null + && !image.getUserAvatarBase64().trim().isEmpty()) { + return image.getUserAvatarBase64(); + } + } + throw new BizException("相关方人员头像转换失败"); + } + private String decodeUserCard(String userCard) { try { return Base64.decodeToString(userCard);