From 46d8be54788d02be32f06769bb62a36c3eac105a Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 31 Aug 2023 15:19:30 +0800 Subject: [PATCH] //scheme --- .../controller/ProductOrderController.java | 59 ++++++++++++++-- .../com/iformall/domain/po/ProductOrder.java | 3 + .../com/iformall/service/SchemeService.java | 28 ++++++++ .../service/impl/QrCodeServiceImpl.java | 2 + .../service/impl/SchemeServiceImpl.java | 70 +++++++++++++++++++ .../pay/service/pay/PayAdapterService.java | 11 ++- .../miniApp/TtMiniAppPayAdapterService.java | 5 ++ .../pay/wx/BaseWxPayAdapterService.java | 19 +++++ .../pay/wx/sft/h5/WxH5PaySFTService.java | 5 ++ .../appPay/WxMiniAppPaySFTAdapterService.java | 7 +- .../service/pay/wx/v2/h5/WxH5PayService.java | 5 ++ .../appPay/WxMiniAppPayAdapterService.java | 5 ++ .../maPay/WxMiniMaPayAdapterService.java | 5 ++ .../appPay/WxMiniAppPayV3AdapterService.java | 7 +- .../iformall/sm/AiDigitalAvatarHelper.java | 28 ++++---- 15 files changed, 236 insertions(+), 23 deletions(-) create mode 100644 suimangService/src/main/java/com/iformall/service/SchemeService.java create mode 100644 suimangService/src/main/java/com/iformall/service/impl/SchemeServiceImpl.java diff --git a/suimangCApi/src/main/java/com/iformall/controller/ProductOrderController.java b/suimangCApi/src/main/java/com/iformall/controller/ProductOrderController.java index b6a135c..f88c334 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/ProductOrderController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/ProductOrderController.java @@ -11,13 +11,18 @@ import com.iformall.domain.dto.OrderSaveDto; import com.iformall.domain.po.*; import com.iformall.domain.po.base.BaseEntity; import com.iformall.domain.po.sm.PersonPhoto; -import com.iformall.enums.EnumComposeOrder; -import com.iformall.enums.EnumProductOrderPayVendor; -import com.iformall.enums.EnumProductOrderStatus; +import com.iformall.enums.*; +import com.iformall.exception.MallinkException; import com.iformall.service.*; import com.iformall.service.pay.PayServiceFactory; import com.iformall.service.pay.entity.PayExtraParam; import com.iformall.service.pay.service.pay.PayAdapterService; +import com.iformall.sm.AiDigitalAvatarHelper; +import com.iformall.sm.ShareImgParam; +import com.iformall.sm.ShareImgResult; +import com.iformall.utils.Base64Util; +import com.iformall.utils.Constant; +import com.iformall.utils.DateUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -30,6 +35,7 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Map; @@ -58,6 +64,9 @@ public class ProductOrderController extends BaseController { @Autowired PayServiceFactory payServiceFactory; + @Autowired + SchemeService schemeService; + @ApiOperation(value = "创建订单", notes = "") @PostMapping("createOrder") public ResultData createOrder(@RequestBody ProductOrder record) { @@ -217,13 +226,53 @@ public class ProductOrderController extends BaseController { @PostMapping("getPayUrl") public ResultData getPayUrl(@RequestBody ProductOrder record) { logger.debug("[" + getIpAddr() + "] ProductOrderController::getPayUrl"); + if(StringUtils.isBlank(record.getAppId())){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "appId 不能为空"); + } + WxAppinfo wxAppinfo = wxAppinfoService.getOnlyByAppIdFromRedis(record.getAppId()); + if(wxAppinfo == null){ + return new ResultData(ErrorCode.APP_ID_NOT_FOUND); + } + + if(record.getUserId() == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"用户编号为空"); + } + WxCUserBasicInfo basicUser = wxCUserBasicInfoService.getById(record.getUserId()); + if(basicUser == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"未查询到用户"); + } - return new ResultData(); + if(record.getProductId() == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"商品编号为空"); + } + Product product = productService.getById(record.getProductId()); + if(product == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"未查询到商品"); + } + + if(!wxAppinfo.getProjectType().equals(product.getProjectType())){ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"商品数据异常"); + } + + try { + EnumProject project = EnumProject.getEnum(wxAppinfo.getProjectType()); + EnumAppPlat plat = EnumAppPlat.getByCode(wxAppinfo.getPlat()); + String productScheme = Constant.mainPageUrl; + String sceneParam = "t:dt_p:"+record.getProductId()+"_u:"+record.getUserId(); + Date timeAfterDays = DateUtils.getTimeAfterDays(1, new Date()); + Long expireTime = timeAfterDays.getTime()/1000; + return schemeService.generateScheme(project,plat,productScheme,sceneParam,expireTime); + } catch (MallinkException e) { + return new ResultData(e.getErrorCode(), e.getMessage()); + }catch (Exception e) { + this.logger.error(e.getMessage(), e); + return new ResultData(ErrorCode.SYS_SERVER_ERROR); + } } @AuthIgnore - @ApiOperation(value = "创建支付(不验证)", notes = "") + @ApiOperation(value = "创建支付(不验证用户)", notes = "") @PostMapping("pay") public ResultData pay(@RequestBody ProductOrder record) { logger.debug("[" + getIpAddr() + "] ProductOrderController::pay"); diff --git a/suimangService/src/main/java/com/iformall/domain/po/ProductOrder.java b/suimangService/src/main/java/com/iformall/domain/po/ProductOrder.java index 7fceb8a..d980f32 100644 --- a/suimangService/src/main/java/com/iformall/domain/po/ProductOrder.java +++ b/suimangService/src/main/java/com/iformall/domain/po/ProductOrder.java @@ -67,6 +67,9 @@ public class ProductOrder extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="支付渠道",name="payWay") private Integer payWay; + + @TableField(exist = false) + private String appId; @TableField(exist = false) protected List statusS; diff --git a/suimangService/src/main/java/com/iformall/service/SchemeService.java b/suimangService/src/main/java/com/iformall/service/SchemeService.java new file mode 100644 index 0000000..bdc2891 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/service/SchemeService.java @@ -0,0 +1,28 @@ +package com.iformall.service; + +import com.iformall.common.ResultData; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.enums.EnumAppPlat; +import com.iformall.enums.EnumProject; +import com.iformall.exception.MallinkException; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestBody; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Map; + +@Service +public interface SchemeService { + + /** + * 获取scheme码 + * @param project + * @param plat + * @param pageUrl + * @param sceneParam + * @return + */ + ResultData generateScheme(EnumProject project,EnumAppPlat plat,String pageUrl, String sceneParam,Long expireTime); + +} diff --git a/suimangService/src/main/java/com/iformall/service/impl/QrCodeServiceImpl.java b/suimangService/src/main/java/com/iformall/service/impl/QrCodeServiceImpl.java index 57dd5b2..af088ba 100644 --- a/suimangService/src/main/java/com/iformall/service/impl/QrCodeServiceImpl.java +++ b/suimangService/src/main/java/com/iformall/service/impl/QrCodeServiceImpl.java @@ -33,7 +33,9 @@ import java.util.*; */ @Service public class QrCodeServiceImpl implements QrCodeService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + @Autowired private WxAppinfoService wxAppinfoService; @Autowired diff --git a/suimangService/src/main/java/com/iformall/service/impl/SchemeServiceImpl.java b/suimangService/src/main/java/com/iformall/service/impl/SchemeServiceImpl.java new file mode 100644 index 0000000..129112e --- /dev/null +++ b/suimangService/src/main/java/com/iformall/service/impl/SchemeServiceImpl.java @@ -0,0 +1,70 @@ +package com.iformall.service.impl; + +import com.iformall.common.ErrorCode; +import com.iformall.common.Result; +import com.iformall.common.ResultData; +import com.iformall.domain.po.WxAppinfo; +import com.iformall.domain.po.WxPayAccount; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.enums.EnumAppPlat; +import com.iformall.enums.EnumProject; +import com.iformall.exception.MallinkException; +import com.iformall.file.aliyun.AliyunOSS; +import com.iformall.service.QrCodeService; +import com.iformall.service.SchemeService; +import com.iformall.service.WxAppinfoService; +import com.iformall.service.WxPayAccountService; +import com.iformall.service.pay.PayServiceFactory; +import com.iformall.utils.QRCodeUtils; +import me.chanjar.weixin.common.error.WxErrorException; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.Map; + +/** + * @author + */ +@Service +public class SchemeServiceImpl implements SchemeService { + + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private WxAppinfoService wxAppinfoService; + @Autowired + private WxPayAccountService wxPayAccountService; + @Autowired + private PayServiceFactory payServiceFactory; + + + @Override + public ResultData generateScheme(EnumProject project, EnumAppPlat plat, String pageUrl, String sceneParam, Long expireTime) { + WxAppinfo appinfo = wxAppinfoService.getProjectCAppInfoFromRedis(project.getCode(),plat.getCode()); + if(appinfo == null){ + logger.error("获取scheme码{}未找到对应的小程序"); + return new ResultData(ErrorCode.APP_ID_NOT_FOUND.getCode(),"未找到程序应用"); + } + + try { + String scheme = payServiceFactory.getQrcodeService(appinfo.getPlat()).getScheme(appinfo, pageUrl, sceneParam,expireTime); + return new ResultData(scheme); + } catch (WxErrorException e) { + logger.error("获取scheme码 error1" + e.getMessage()); + return new ResultData(ErrorCode.DEVICE_QRCODE_GET_FAILED.getCode(),e.getMessage()); + } catch (Exception e) { + logger.error("获取scheme码 error2" + e); + logger.error(e.getMessage()); + return new ResultData(ErrorCode.SYS_SERVER_ERROR); + } + } +} diff --git a/suimangService/src/main/java/com/iformall/service/pay/service/pay/PayAdapterService.java b/suimangService/src/main/java/com/iformall/service/pay/service/pay/PayAdapterService.java index 22bb558..84b4beb 100644 --- a/suimangService/src/main/java/com/iformall/service/pay/service/pay/PayAdapterService.java +++ b/suimangService/src/main/java/com/iformall/service/pay/service/pay/PayAdapterService.java @@ -102,12 +102,19 @@ public interface PayAdapterService { public PayAdapterResult payOrderPush(String openId,WxAppinfo appInfo, WxBatchOrder batchOrder,WxPayOrder payOrder) throws Exception; /** - * 获取二维码 - * @param param + * 获取二维码 + * @param sceneParam * @return */ public File getQrcode(WxAppinfo appinfo,String pageUrl,int type,String sceneParam) throws Exception; + /** + * 获取scheme码 + * @param sceneParam + * @return + */ + public String getScheme(WxAppinfo appinfo,String pageUrl,String sceneParam,Long expireTime) throws Exception; + /** * 无需创建支付单返回 * @param record diff --git a/suimangService/src/main/java/com/iformall/service/pay/service/pay/douyin/v1/miniApp/TtMiniAppPayAdapterService.java b/suimangService/src/main/java/com/iformall/service/pay/service/pay/douyin/v1/miniApp/TtMiniAppPayAdapterService.java index a19c58e..e727fca 100644 --- a/suimangService/src/main/java/com/iformall/service/pay/service/pay/douyin/v1/miniApp/TtMiniAppPayAdapterService.java +++ b/suimangService/src/main/java/com/iformall/service/pay/service/pay/douyin/v1/miniApp/TtMiniAppPayAdapterService.java @@ -491,6 +491,11 @@ public class TtMiniAppPayAdapterService extends BaseTtPayAdapterService implemen return super.getQrCode(appinfo, pageUrl, type, sceneParam); } + @Override + public String getScheme(WxAppinfo appinfo, String pageUrl, String sceneParam, Long expireTime) throws Exception { + return null; + } + @Override public PayAdapterResult noCreatePay(WxPayOrder record, WxComposeOrder composeOrder, List childOrders) { PayAdapterResult par = new PayAdapterResult(); diff --git a/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/BaseWxPayAdapterService.java b/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/BaseWxPayAdapterService.java index 7a9c1e8..5118e01 100644 --- a/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/BaseWxPayAdapterService.java +++ b/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/BaseWxPayAdapterService.java @@ -5,6 +5,7 @@ import java.util.Date; import java.util.HashMap; import java.util.Map; +import cn.binarywang.wx.miniapp.bean.scheme.WxMaGenerateSchemeRequest; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -103,6 +104,24 @@ public class BaseWxPayAdapterService { return codeFile; } } + + protected String generateScheme(WxAppinfo appinfo,String pageUrl,String sceneParam,Long expireTime) throws WxErrorException { + boolean isFmOpen = false; + WxMaService wxMaService; + if(isFmOpen) { + wxMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(appinfo.getAppId()); + } else { + wxMaService = maUtil.getWeappService(appinfo); + } + WxMaGenerateSchemeRequest request = WxMaGenerateSchemeRequest.newBuilder() + .jumpWxa(WxMaGenerateSchemeRequest.JumpWxa.newBuilder().path(pageUrl).query(sceneParam).build()) + .isExpire(true) + .expireType(0) + .expireTime(expireTime) + .build(); + + return wxMaService.getWxMaSchemeService().generate(request); + } JSONObject errorMapClose = JSON.parseObject("{" + "\"ORDERPAID\":{\"detail\":\"订单已支付\",\"reason\":\"订单已支付,不能发起关单\",\"resolution\":\"订单已支付,不能发起关单,请当作已支付的正常交易\"}," + diff --git a/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/sft/h5/WxH5PaySFTService.java b/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/sft/h5/WxH5PaySFTService.java index 1a9bcb0..3351e33 100644 --- a/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/sft/h5/WxH5PaySFTService.java +++ b/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/sft/h5/WxH5PaySFTService.java @@ -84,6 +84,11 @@ public class WxH5PaySFTService extends BaseWxPaySFTAdapterService implements CDr return null; } + @Override + public String getScheme(WxAppinfo appinfo, String pageUrl, String sceneParam, Long expireTime) throws Exception { + return null; + } + @Override public PayAdapterResult noCreatePay(WxPayOrder record, WxComposeOrder composeOrder, List childOrders) { throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR); diff --git a/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/sft/miniApp/appPay/WxMiniAppPaySFTAdapterService.java b/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/sft/miniApp/appPay/WxMiniAppPaySFTAdapterService.java index 3895606..5c58ea6 100644 --- a/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/sft/miniApp/appPay/WxMiniAppPaySFTAdapterService.java +++ b/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/sft/miniApp/appPay/WxMiniAppPaySFTAdapterService.java @@ -326,7 +326,12 @@ public class WxMiniAppPaySFTAdapterService extends BaseWxPaySFTAdapterService i return super.getQrCode(appinfo, pageUrl, type, sceneParam); } - @Override + @Override + public String getScheme(WxAppinfo appinfo, String pageUrl, String sceneParam, Long expireTime) throws Exception { + return null; + } + + @Override public PayAdapterResult noCreatePay(WxPayOrder record, WxComposeOrder composeOrder, List childOrders) { throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR); } diff --git a/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/h5/WxH5PayService.java b/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/h5/WxH5PayService.java index a2c2902..7887349 100644 --- a/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/h5/WxH5PayService.java +++ b/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/h5/WxH5PayService.java @@ -80,6 +80,11 @@ public class WxH5PayService extends BaseWxPayV2AdapterService implements CDrivi return null; } + @Override + public String getScheme(WxAppinfo appinfo, String pageUrl, String sceneParam, Long expireTime) throws Exception { + return null; + } + @Override public PayAdapterResult noCreatePay(WxPayOrder record, WxComposeOrder composeOrder, List childOrders) { throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR); diff --git a/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/appPay/WxMiniAppPayAdapterService.java b/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/appPay/WxMiniAppPayAdapterService.java index b01ef51..bd12c6f 100644 --- a/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/appPay/WxMiniAppPayAdapterService.java +++ b/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/appPay/WxMiniAppPayAdapterService.java @@ -296,6 +296,11 @@ public class WxMiniAppPayAdapterService extends BaseWxPayV2AdapterService implem return super.getQrCode(appinfo, pageUrl, type, sceneParam); } + @Override + public String getScheme(WxAppinfo appinfo, String pageUrl, String sceneParam, Long expireTime) throws Exception { + return null; + } + @Override public PayAdapterResult noCreatePay(WxPayOrder record, WxComposeOrder composeOrder, List childOrders) { throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR); diff --git a/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/maPay/WxMiniMaPayAdapterService.java b/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/maPay/WxMiniMaPayAdapterService.java index 119c142..1ce6371 100644 --- a/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/maPay/WxMiniMaPayAdapterService.java +++ b/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/maPay/WxMiniMaPayAdapterService.java @@ -292,6 +292,11 @@ public class WxMiniMaPayAdapterService extends BaseWxPayV2AdapterService impleme return super.getQrCode(appinfo, pageUrl, type, sceneParam); } + @Override + public String getScheme(WxAppinfo appinfo, String pageUrl, String sceneParam, Long expireTime) throws Exception { + return null; + } + @Override public PayAdapterResult noCreatePay(WxPayOrder record, WxComposeOrder composeOrder, List childOrders) { throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR); diff --git a/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/miniApp/appPay/WxMiniAppPayV3AdapterService.java b/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/miniApp/appPay/WxMiniAppPayV3AdapterService.java index ffe5754..072d9fb 100644 --- a/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/miniApp/appPay/WxMiniAppPayV3AdapterService.java +++ b/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/miniApp/appPay/WxMiniAppPayV3AdapterService.java @@ -450,7 +450,12 @@ public class WxMiniAppPayV3AdapterService extends BaseWxPayV3AdapterService impl return super.getQrCode(appinfo, pageUrl, type, sceneParam); } - @Override + @Override + public String getScheme(WxAppinfo appinfo, String pageUrl, String sceneParam,Long expireTime) throws Exception { + return super.generateScheme(appinfo, pageUrl, sceneParam,expireTime); + } + + @Override public PayAdapterResult noCreatePay(WxPayOrder record, WxComposeOrder composeOrder, List childOrders) { throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR); } diff --git a/suimangService/src/main/java/com/iformall/sm/AiDigitalAvatarHelper.java b/suimangService/src/main/java/com/iformall/sm/AiDigitalAvatarHelper.java index 19a037f..628fdda 100644 --- a/suimangService/src/main/java/com/iformall/sm/AiDigitalAvatarHelper.java +++ b/suimangService/src/main/java/com/iformall/sm/AiDigitalAvatarHelper.java @@ -70,7 +70,7 @@ public class AiDigitalAvatarHelper { // param.setCallback_url("https://phototest.metavatar.cc/C/callback/create/photo"); param.setCallback_url(callbackUrl + "/callback/create/photo"); // log.info("生成照片start request:" + param.getBg_img()); -// String response = HttpUtil.doAiVideoPost("http://nas.pucao.cn:2005/make_face", JSONObject.toJSONString(param)); +// String response = HttpUtil.doAiVideoPost("http://http://111.198.0.15:22200/make_face", JSONObject.toJSONString(param)); String response = HttpUtil.doAiVideoPost(digital_avatar + "/make_face", JSONObject.toJSONString(param)); log.info("生成照片end response:"); @@ -183,21 +183,21 @@ public class AiDigitalAvatarHelper { } public static void main(String[] args) { - AiCheckPhotoParam param = new AiCheckPhotoParam(); - String img = Base64Util.imageUrlToBase64("https://suimang.oss-accelerate.aliyuncs.com/builtin/personmould/16760216806604820_cSHoijDX_grace_1080.jpg"); - param.setImg(img); - AiCheckPhotoResult result = AiDigitalAvatarHelper.checkPhoto(param); - System.out.println(result); - - -// DigitalAvatarParam param = new DigitalAvatarParam(); -// param.setBg_img("style_threeface"); +// AiCheckPhotoParam param = new AiCheckPhotoParam(); // String img = Base64Util.imageUrlToBase64("https://suimang.oss-accelerate.aliyuncs.com/builtin/personmould/16760216806604820_cSHoijDX_grace_1080.jpg"); -// param.setImg_lift(img); -// param.setImg_middle(img); -// param.setImg_right(img); -// DigitalAvatarResult result = AiDigitalAvatarHelper.digitalAvatarPhoto(param,100001l); +// param.setImg(img); +// AiCheckPhotoResult result = AiDigitalAvatarHelper.checkPhoto(param); // System.out.println(result); + + + DigitalAvatarParam param = new DigitalAvatarParam(); + param.setBg_img("素白"); + String img = Base64Util.imageUrlToBase64("https://suimang.oss-accelerate.aliyuncs.com/capi/2023-08-31/91f69a7fdac146159d2408baaad26619.jpg?x-oss-process=image/resize,w_10000/quality,q_60"); + param.setImg_lift(img); + param.setImg_middle("None"); + param.setImg_right("None"); + DigitalAvatarResult result = AiDigitalAvatarHelper.digitalAvatarPhoto(param,100001l); + System.out.println(result); }