From 11e495a15a46372c4f05f3bb56f544df9ecf9de9 Mon Sep 17 00:00:00 2001 From: shenzhidan Date: Wed, 29 Jul 2026 16:52:12 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BC=98=E5=8C=96=E4=BA=BA=E8=84=B8=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E5=A4=A7=E5=8D=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../primeport/command/DaHuaPersonSyncExe.java | 58 ++++++++++--------- 1 file changed, 31 insertions(+), 27 deletions(-) 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 4bbfc78..59d3547 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,10 +1,7 @@ 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.gbscommon.utils.Base64Util; import com.zcloud.primeport.domain.gateway.DaHuaGateway; import com.zcloud.primeport.domain.gateway.PersonApplyGateway; import com.zcloud.primeport.domain.model.DaHuaPersonSyncCmd; @@ -12,8 +9,9 @@ import com.zcloud.primeport.domain.model.PersonApplyE; 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 lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.util.ArrayList; @@ -24,8 +22,9 @@ import java.util.Map; /** * 相关方人员同步大华平台。 */ +@Slf4j @Component -@AllArgsConstructor +@RequiredArgsConstructor public class DaHuaPersonSyncExe { private static final int RELATED_PARTY = 3; @@ -33,8 +32,8 @@ public class DaHuaPersonSyncExe { private final DaHuaGateway daHuaGateway; private final PersonApplyGateway personApplyGateway; - @DubboReference - private ZcloudUserFacade zcloudUserFacade; + @Value("${file.url:}") + private String fileUrl; /** * 相关方人员审核通过后,按证件号判断新增或更新大华人员。 @@ -126,39 +125,44 @@ public class DaHuaPersonSyncExe { DaHuaPersonSyncCmd.PersonBiosignature face = new DaHuaPersonSyncCmd.PersonBiosignature(); face.setType(3); face.setIndex(1); - // userFaceUrl 是用户中心的文件路径,先通过 Dubbo 获取 Base64,交给网关上传到大华 + // userFaceUrl 是文件服务器相对路径,读取图片并转换为 Base64 后交给大华网关。 face.setBase64Data(resolveFaceBase64(faceUrl)); cmd.setPersonBiosignatures(Collections.singletonList(face)); return cmd; } /** - * 通过用户中心把本系统头像路径转换为图片 Base64。 + * 根据文件服务地址读取相关方人员头像并转换为图片 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; + if (fileUrl == null || fileUrl.trim().isEmpty()) { + throw new BizException("文件访问地址未配置"); + } + String baseUrl = fileUrl.trim(); + String relativePath = faceUrl.trim(); + String imageUrl = baseUrl.endsWith("/") + ? baseUrl + removeLeadingSlash(relativePath) + : baseUrl + "/" + removeLeadingSlash(relativePath); 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(); + String faceBase64 = Base64Util.urlToBase64(imageUrl); + if (faceBase64 == null || faceBase64.trim().isEmpty()) { + throw new BizException("相关方人员头像转换失败"); } + return faceBase64; + } catch (BizException e) { + throw e; + } catch (Exception e) { + log.error("获取相关方人员头像失败, imageUrl={}", imageUrl, e); + throw new BizException("获取相关方人员头像失败"); } - throw new BizException("相关方人员头像转换失败"); + } + + private String removeLeadingSlash(String path) { + return path.startsWith("/") ? path.substring(1) : path; } private String decodeUserCard(String userCard) {