Kaynağa Gözat

//scheme

private_deployment
xhxu 1 yıl önce
ebeveyn
işleme
46d8be5478
15 değiştirilmiş dosya ile 236 ekleme ve 23 silme
  1. +54
    -5
      suimangCApi/src/main/java/com/iformall/controller/ProductOrderController.java
  2. +3
    -0
      suimangService/src/main/java/com/iformall/domain/po/ProductOrder.java
  3. +28
    -0
      suimangService/src/main/java/com/iformall/service/SchemeService.java
  4. +2
    -0
      suimangService/src/main/java/com/iformall/service/impl/QrCodeServiceImpl.java
  5. +70
    -0
      suimangService/src/main/java/com/iformall/service/impl/SchemeServiceImpl.java
  6. +9
    -2
      suimangService/src/main/java/com/iformall/service/pay/service/pay/PayAdapterService.java
  7. +5
    -0
      suimangService/src/main/java/com/iformall/service/pay/service/pay/douyin/v1/miniApp/TtMiniAppPayAdapterService.java
  8. +19
    -0
      suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/BaseWxPayAdapterService.java
  9. +5
    -0
      suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/sft/h5/WxH5PaySFTService.java
  10. +6
    -1
      suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/sft/miniApp/appPay/WxMiniAppPaySFTAdapterService.java
  11. +5
    -0
      suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/h5/WxH5PayService.java
  12. +5
    -0
      suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/appPay/WxMiniAppPayAdapterService.java
  13. +5
    -0
      suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/maPay/WxMiniMaPayAdapterService.java
  14. +6
    -1
      suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/miniApp/appPay/WxMiniAppPayV3AdapterService.java
  15. +14
    -14
      suimangService/src/main/java/com/iformall/sm/AiDigitalAvatarHelper.java

+ 54
- 5
suimangCApi/src/main/java/com/iformall/controller/ProductOrderController.java Dosyayı Görüntüle

@@ -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");


+ 3
- 0
suimangService/src/main/java/com/iformall/domain/po/ProductOrder.java Dosyayı Görüntüle

@@ -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<Integer> statusS;


+ 28
- 0
suimangService/src/main/java/com/iformall/service/SchemeService.java Dosyayı Görüntüle

@@ -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);

}

+ 2
- 0
suimangService/src/main/java/com/iformall/service/impl/QrCodeServiceImpl.java Dosyayı Görüntüle

@@ -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


+ 70
- 0
suimangService/src/main/java/com/iformall/service/impl/SchemeServiceImpl.java Dosyayı Görüntüle

@@ -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);
}
}
}

+ 9
- 2
suimangService/src/main/java/com/iformall/service/pay/service/pay/PayAdapterService.java Dosyayı Görüntüle

@@ -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


+ 5
- 0
suimangService/src/main/java/com/iformall/service/pay/service/pay/douyin/v1/miniApp/TtMiniAppPayAdapterService.java Dosyayı Görüntüle

@@ -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<WxOrder> childOrders) {
PayAdapterResult par = new PayAdapterResult();


+ 19
- 0
suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/BaseWxPayAdapterService.java Dosyayı Görüntüle

@@ -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\":\"订单已支付,不能发起关单,请当作已支付的正常交易\"}," +


+ 5
- 0
suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/sft/h5/WxH5PaySFTService.java Dosyayı Görüntüle

@@ -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<WxOrder> childOrders) {
throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR);


+ 6
- 1
suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/sft/miniApp/appPay/WxMiniAppPaySFTAdapterService.java Dosyayı Görüntüle

@@ -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<WxOrder> childOrders) {
throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR);
}


+ 5
- 0
suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/h5/WxH5PayService.java Dosyayı Görüntüle

@@ -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<WxOrder> childOrders) {
throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR);


+ 5
- 0
suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/appPay/WxMiniAppPayAdapterService.java Dosyayı Görüntüle

@@ -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<WxOrder> childOrders) {
throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR);


+ 5
- 0
suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/maPay/WxMiniMaPayAdapterService.java Dosyayı Görüntüle

@@ -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<WxOrder> childOrders) {
throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR);


+ 6
- 1
suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/miniApp/appPay/WxMiniAppPayV3AdapterService.java Dosyayı Görüntüle

@@ -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<WxOrder> childOrders) {
throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR);
}


+ 14
- 14
suimangService/src/main/java/com/iformall/sm/AiDigitalAvatarHelper.java Dosyayı Görüntüle

@@ -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);
}




Yükleniyor…
İptal
Kaydet