Przeglądaj źródła

//分账

release_toaliyun_real
xhxu 4 lat temu
rodzic
commit
2f377e5bb1
13 zmienionych plików z 467 dodań i 372 usunięć
  1. +200
    -0
      mallinkAdmin/src/main/resources/db/migration/V2022031500001__pay_order.sql
  2. +2
    -4
      mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java
  3. +1
    -19
      mallinkSchedule/src/main/java/com/iformall/schedule/SharingOrderRedoSchedule.java
  4. +2
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java
  5. +3
    -3
      mallinkService/src/main/java/com/iformall/douyin/pay/preOrder/DouYinCreatePreOrder.java
  6. +2
    -4
      mallinkService/src/main/java/com/iformall/service/WxProfitSharingOrderService.java
  7. +161
    -161
      mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java
  8. +41
    -64
      mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java
  9. +2
    -3
      mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java
  10. +20
    -83
      mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingOrderServiceImpl.java
  11. +2
    -3
      mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java
  12. +1
    -1
      mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/miniApp/TtMiniAppPayAdapterService.java
  13. +30
    -27
      mallinkService/src/main/java/com/iformall/service/pay/service/share/douyin/TtPayShareService.java

+ 200
- 0
mallinkAdmin/src/main/resources/db/migration/V2022031500001__pay_order.sql Wyświetl plik

@@ -0,0 +1,200 @@
-- ALTER TABLE `mallink`.`wx_pay_order_0`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_1`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_2`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_3`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_4`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_5`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_6`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_7`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_8`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_9`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_10`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_11`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_12`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_13`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_14`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_15`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_16`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_17`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_18`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_19`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_20`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_21`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_22`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_23`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_24`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_25`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_26`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_27`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_28`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_29`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_30`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_31`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_32`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_33`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_34`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_35`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_36`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_37`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_38`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_39`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_40`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_41`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_42`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_43`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_44`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_45`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_46`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_47`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_48`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_49`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_50`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_51`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_52`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_53`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_54`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_55`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_56`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_57`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_58`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_59`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_60`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_61`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_62`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_63`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_64`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_65`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_66`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_67`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_68`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_69`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_70`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_71`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_72`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_73`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_74`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_75`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_76`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_77`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_78`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_79`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_80`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_81`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_82`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_83`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_84`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_85`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_86`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_87`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_88`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_89`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_90`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_91`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_92`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_93`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_94`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_95`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_96`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_97`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_98`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;
-- ALTER TABLE `mallink`.`wx_pay_order_99`
-- ADD COLUMN `store_id` varchar(50) COMMENT '收款账户 (抖音分账用)' AFTER `rate_amount`;

+ 2
- 4
mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java Wyświetl plik

@@ -210,7 +210,7 @@ public class CouponOrderExpiringSchedule {
wxPayOrder.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode());
wxPayOrder = wxPayOrderMapper.selectOne(new QueryWrapper(wxPayOrder));

if (wxPayOrder != null && wxPayOrder.getShare().equals(EnumPayShare.YES.getCode())) {
if (wxPayOrder != null) {
WxSharingOrderDto wxSharingOrderDto = new WxSharingOrderDto();
wxSharingOrderDto.setCUserId(wxPayOrder.getCUserId());
wxSharingOrderDto.setMerchantId(0L);
@@ -228,9 +228,7 @@ public class CouponOrderExpiringSchedule {
// 未设置通道费差
wxSharingOrderDto.setShareAmount(wxPayOrder.getChildOrderShare(co.getOrderId()).getShareAmount());
}
wxProfitSharingOrderService.finishSharingOrder(wxSharingOrderDto,wxPayOrder.getPayVendor());
}else if (wxPayOrder != null){
wxProfitSharingOrderService.finishDouyinSharingOrder(wxPayOrder);
wxProfitSharingOrderService.finishSharingOrder(wxSharingOrderDto,wxPayOrder.getPayVendor(),wxPayOrder.getShare());
}

} catch (MallinkException e) {


+ 1
- 19
mallinkSchedule/src/main/java/com/iformall/schedule/SharingOrderRedoSchedule.java Wyświetl plik

@@ -91,25 +91,7 @@ public class SharingOrderRedoSchedule {
});
}

wxProfitSharingOrder.setType(EnumProfitSharingOrderType.PROFIT_SHARING_DOUYIN_SINGLE.getCode());
wxProfitSharingOrder.setSharingStatus(EnumProfitSharingOrderStatus.PROFIT_SHARING_APPLY_FAILED.getCode());
list = wxProfitSharingOrderMapper.findList(wxProfitSharingOrder);
if (null != list) {
list.stream().forEach(sharingOrder->{
try {
ResultData result = wxProfitSharingOrderService.redoDouyinSharingOrder(sharingOrder);
if (result.code != ResultData.SUCCESS) {
logger.error("分账重试失败:" + EnumProfitSharingOrderType.PROFIT_SHARING_DOUYIN_SINGLE.getMessage()
+ " ID:" +sharingOrder.getId()
+ " RES:" + result.message);
}
} catch (Exception e){
logger.error("分账重试失败:" + EnumProfitSharingOrderType.PROFIT_SHARING_DOUYIN_SINGLE.getMessage()
+ " ID:" +sharingOrder.getId()
+ " MSG:" + e.getMessage());
}
});
}

}

}

+ 2
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java Wyświetl plik

@@ -63,6 +63,8 @@ public class WxPayOrder extends TenantEntity {
private Integer shareAmount;
@io.swagger.annotations.ApiModelProperty(value="通道费差(购买时刻的通道费差,分账完结时使用)",name="rateAmount")
private Integer rateAmount;
// @io.swagger.annotations.ApiModelProperty(value="收款账户 (抖音分账用)",name="storeId")
// private String storeId;
@io.swagger.annotations.ApiModelProperty(value="子订单分账金额json",name="childOrderShare")
private String childOrderShare;


+ 3
- 3
mallinkService/src/main/java/com/iformall/douyin/pay/preOrder/DouYinCreatePreOrder.java Wyświetl plik

@@ -24,7 +24,7 @@ public class DouYinCreatePreOrder {
private String thirdpartyId;//第三方平台服务商 id,非服务商模式留空 【非必填】
private Integer disableMsg;//是否屏蔽担保支付的推送消息,1-屏蔽 0-非屏蔽,接入 POI 必传 【非必填】
private String msgPage;//担保支付消息跳转页 【非必填】
private String storeUid;//多门店模式下,门店 uid 【非必填】
private String storeId;//收款门店商户编号。多门店模式下,为门店进件时拿到的商户编号
public Map toRequestMap() {
Map map = new HashMap();
@@ -50,8 +50,8 @@ public class DouYinCreatePreOrder {
if(StringUtils.isNotBlank(msgPage)){
map.put("msg_page", msgPage);
}
if(StringUtils.isNotBlank(storeUid)){
map.put("store_uid", storeUid);
if(StringUtils.isNotBlank(storeId)){
map.put("store_id", storeId);
}
map.put("sign", DouYinPayHelper.getSign(map));


+ 2
- 4
mallinkService/src/main/java/com/iformall/service/WxProfitSharingOrderService.java Wyświetl plik

@@ -21,13 +21,12 @@ public interface WxProfitSharingOrderService {
/**
* 创建分账订单
*/
ResultData createSharingOrder(WxSharingOrderDto wxSharingOrderDto,Integer payway);
ResultData createSharingOrder(WxSharingOrderDto wxSharingOrderDto,Integer payway,Integer share);

/**
* 分账重试
*/
ResultData redoSharingOrder(WxProfitSharingOrder sharingOrder);
ResultData redoDouyinSharingOrder(WxProfitSharingOrder sharingOrder);

/**
* 查询分账订单
@@ -37,8 +36,7 @@ public interface WxProfitSharingOrderService {
/**
* 结束分账订单
*/
ResultData finishSharingOrder(WxSharingOrderDto sharingOrderDto,Integer payway);
ResultData finishDouyinSharingOrder(WxPayOrder wxPayOrder);
ResultData finishSharingOrder(WxSharingOrderDto sharingOrderDto,Integer payway,Integer share);


PageInfo<WxProfitSharingOrderVo> listAsPage(WxProfitSharingOrderQueryVo order, Integer pageNum, Integer pageSize);


+ 161
- 161
mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java Wyświetl plik

@@ -279,7 +279,7 @@ public class WxCardSpendServiceImpl implements WxCardSpendService {
// }
// }
// } else {
// 有价储值卡消费时,如果未启用分账,金额也记入补贴表,可能会导致查询错误, TODO
// 有价储值卡消费时,如果未启用分账,金额也记入补贴表,可能会导致查询错误,
if (cardInfo.getSaleAmount() > 0) {
if (payment > 0) {
try {
@@ -450,13 +450,13 @@ public class WxCardSpendServiceImpl implements WxCardSpendService {
cardInfo1.setUpdateDate(new Date());
wxCardInfoMapper.updateById(cardInfo1);

// 分账完结
WxSharingOrderDto shareOrder = new WxSharingOrderDto();
shareOrder.setCUserId(couponOrder.getOwnerId());
shareOrder.updateTenantInfo(wxCardInfo);
shareOrder.setMerchantId(0L); // 卡完结,默认给0
shareOrder.setTransactionId(cardInfo.getTransactionId());
cardShareFinished(cardInfo, shareOrder,couponOrder.getPayVendor());
// 卡不分账完结
// WxSharingOrderDto shareOrder = new WxSharingOrderDto();
// shareOrder.setCUserId(couponOrder.getOwnerId());
// shareOrder.updateTenantInfo(wxCardInfo);
// shareOrder.setMerchantId(0L); // 卡完结,默认给0
// shareOrder.setTransactionId(cardInfo.getTransactionId());
// cardShareFinished(cardInfo, shareOrder,couponOrder.getPayVendor());
} catch (MallinkException e) {
logger.error("微信分账: " + e.getMessage());
throw new MallinkException(e.getErrorCode(), e.getMessage());
@@ -477,91 +477,91 @@ public class WxCardSpendServiceImpl implements WxCardSpendService {
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public void shareForCardPay(TenantEntity tenantEntity, Long cardId, Long orderId, Long cardSpendId,Integer payWay) {
// 微信已分账检查次数
int psNum = 0;
try {
WxCardSpend cardSpendQ = new WxCardSpend();
cardSpendQ.updateTenantInfo(tenantEntity);
cardSpendQ.setCardId(cardId);
psNum = wxCardSpendMapper.selectCount(new QueryWrapper(cardSpendQ));
if (psNum > 20) {
logger.error("微信分账已超过限制次数-20次");
throw new MallinkException(ErrorCode.PROFIT_SHARING_NUM_UP_LIMIT);
}
} catch (MallinkException e) {
logger.error(e.getMessage());
throw new MallinkException(e.getErrorCode(), e.getMessage());
} catch (Exception e) {
logger.error(e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL);
}
// 分账时间检查
WxCouponOrder couponOrder = wxCouponOrderMapper.selectById(cardId,tenantEntity.getTenantId());
if (couponOrder.getExpiredTime().before(new Date())) {
throw new MallinkException(ErrorCode.PROFIT_SHARING_TIME_EXPIRED);
}
// 微信分账
try {
WxCardSpend cardSpend = new WxCardSpend();
cardSpend.updateTenantInfo(tenantEntity);
cardSpend.setId(cardSpendId);
cardSpend.setCardId(cardId);
cardSpend.setOrderId(orderId);
cardSpend = wxCardSpendMapper.selectOne(new QueryWrapper(cardSpend));
if (cardSpend != null && cardSpend.getRealPayment() <= 0) {
logger.error("微信分账金额为0, 无法再分");
return;
}
WxCardInfo cardInfo = wxCardInfoMapper.selectById(cardSpend.getCardId());
WxOrder wxOrder = wxOrderMapper.selectById(orderId,cardInfo.getTenantId());
WxMerchant merchant = wxMerchantMapper.selectById(cardSpend.getMerchantId());
if (cardSpend != null && cardInfo != null && merchant != null) {
// 分账
WxSharingOrderDto shareOrder = new WxSharingOrderDto();
shareOrder.setCUserId(cardSpend.getOwnerId());
shareOrder.setMerchantId(cardSpend.getMerchantId());
shareOrder.setType(EnumProfitSharingOrderType.PROFIT_SHARING_MULTI.getCode());
shareOrder.setPayAmount(cardSpend.getPayment());
shareOrder.setOrderId(cardSpendId);
shareOrder.setPayTimeStart(cardSpend.getCreateDate());
shareOrder.setPayTimeEnd(cardSpend.getUpdateDate());
shareOrder.updateTenantInfo(tenantEntity);
shareOrder.setTransactionId(cardInfo.getTransactionId());
shareOrder.setShareAmount(cardSpend.getRealPayment());
ResultData resultData = profitSharingOrderService.createSharingOrder(shareOrder,payWay);
if (resultData.code != Result.SUCCESS) {
// 分账异常
logger.error(resultData.message);
throw new MallinkException(resultData.code, resultData.message);
}
// 卡消费记录状态更新
{
WxCardSpend updateRecord = new WxCardSpend();
updateRecord.setId(cardSpend.getId());
updateRecord.setPayStatus(EnumCardSpendStatus.PS_SHARED.getCode());
updateRecord.setUpdateDate(new Date());
wxCardSpendMapper.updateById(updateRecord);
}
if (cardSpend.getCardRemainAmount().equals(0)
|| psNum == 20) {
// 卡余额为0,或者卡已分账20次,发起分账完结
if (cardSpend.getCardRemainRealAmount() > 0) {
// 卡已被抵扣,但是分账还有余额
shareOrder.setMerchantId(0L); // 卡完结,填0
cardShareFinished(cardInfo, shareOrder,couponOrder.getPayVendor());
}
}
} else {
logger.error("微信分账: 未找到payorder or merchant at orderid-" + orderId);
}
} catch (MallinkException e) {
logger.error("微信分账: " + e.getMessage());
throw new MallinkException(e.getErrorCode(), e.getMessage());
}
// int psNum = 0;
// try {
// WxCardSpend cardSpendQ = new WxCardSpend();
// cardSpendQ.updateTenantInfo(tenantEntity);
// cardSpendQ.setCardId(cardId);
// psNum = wxCardSpendMapper.selectCount(new QueryWrapper(cardSpendQ));
// if (psNum > 20) {
// logger.error("微信分账已超过限制次数-20次");
// throw new MallinkException(ErrorCode.PROFIT_SHARING_NUM_UP_LIMIT);
// }
// } catch (MallinkException e) {
// logger.error(e.getMessage());
// throw new MallinkException(e.getErrorCode(), e.getMessage());
// } catch (Exception e) {
// logger.error(e.getMessage());
// throw new MallinkException(ErrorCode.DB_FAIL);
// }
// // 分账时间检查
// WxCouponOrder couponOrder = wxCouponOrderMapper.selectById(cardId,tenantEntity.getTenantId());
// if (couponOrder.getExpiredTime().before(new Date())) {
// throw new MallinkException(ErrorCode.PROFIT_SHARING_TIME_EXPIRED);
// }
//
// // 微信分账
// try {
// WxCardSpend cardSpend = new WxCardSpend();
// cardSpend.updateTenantInfo(tenantEntity);
// cardSpend.setId(cardSpendId);
// cardSpend.setCardId(cardId);
// cardSpend.setOrderId(orderId);
// cardSpend = wxCardSpendMapper.selectOne(new QueryWrapper(cardSpend));
// if (cardSpend != null && cardSpend.getRealPayment() <= 0) {
// logger.error("微信分账金额为0, 无法再分");
// return;
// }
// WxCardInfo cardInfo = wxCardInfoMapper.selectById(cardSpend.getCardId());
// WxOrder wxOrder = wxOrderMapper.selectById(orderId,cardInfo.getTenantId());
// WxMerchant merchant = wxMerchantMapper.selectById(cardSpend.getMerchantId());
//
// if (cardSpend != null && cardInfo != null && merchant != null) {
// // 分账
// WxSharingOrderDto shareOrder = new WxSharingOrderDto();
// shareOrder.setCUserId(cardSpend.getOwnerId());
// shareOrder.setMerchantId(cardSpend.getMerchantId());
// shareOrder.setType(EnumProfitSharingOrderType.PROFIT_SHARING_MULTI.getCode());
// shareOrder.setPayAmount(cardSpend.getPayment());
// shareOrder.setOrderId(cardSpendId);
// shareOrder.setPayTimeStart(cardSpend.getCreateDate());
// shareOrder.setPayTimeEnd(cardSpend.getUpdateDate());
// shareOrder.updateTenantInfo(tenantEntity);
// shareOrder.setTransactionId(cardInfo.getTransactionId());
// shareOrder.setShareAmount(cardSpend.getRealPayment());
// ResultData resultData = profitSharingOrderService.createSharingOrder(shareOrder,payWay);
// if (resultData.code != Result.SUCCESS) {
// // 分账异常
// logger.error(resultData.message);
// throw new MallinkException(resultData.code, resultData.message);
// }
//
// // 卡消费记录状态更新
// {
// WxCardSpend updateRecord = new WxCardSpend();
// updateRecord.setId(cardSpend.getId());
// updateRecord.setPayStatus(EnumCardSpendStatus.PS_SHARED.getCode());
// updateRecord.setUpdateDate(new Date());
// wxCardSpendMapper.updateById(updateRecord);
// }
//
//
// if (cardSpend.getCardRemainAmount().equals(0)
// || psNum == 20) {
// // 卡余额为0,或者卡已分账20次,发起分账完结
// if (cardSpend.getCardRemainRealAmount() > 0) {
// // 卡已被抵扣,但是分账还有余额
// shareOrder.setMerchantId(0L); // 卡完结,填0
// cardShareFinished(cardInfo, shareOrder,couponOrder.getPayVendor());
// }
// }
// } else {
// logger.error("微信分账: 未找到payorder or merchant at orderid-" + orderId);
// }
// } catch (MallinkException e) {
// logger.error("微信分账: " + e.getMessage());
// throw new MallinkException(e.getErrorCode(), e.getMessage());
// }
}


@@ -572,53 +572,53 @@ public class WxCardSpendServiceImpl implements WxCardSpendService {
* @param shareOrder
*/
private void cardShareFinished(WxCardInfo cardInfo, WxSharingOrderDto shareOrder,Integer payWay) {
Date curDate = new Date();
// card spend 添加一条 记录]
final IdWorker idWorker = IdWorker.get();
WxCardSpend cardSpend = new WxCardSpend();
cardSpend.updateTenantInfo(cardInfo);
cardSpend.setId(idWorker.nextId());
cardSpend.setCardId(cardInfo.getId());
cardSpend.setOrderId(null);
cardSpend.setDeductionAmount(0);
cardSpend.setPayment(cardInfo.getRemainingShareFeeAmount());
cardSpend.setRealPayment(cardInfo.getRemainingShareFeeAmount());
cardSpend.setCardBeforeAmount(cardInfo.getRemainingAmount());
cardSpend.setCardRemainAmount(0);
cardSpend.setCardBeforeRealAmount(cardInfo.getRemainingShareFeeAmount());
cardSpend.setCardRemainRealAmount(0);
cardSpend.setCreateDate(curDate);
cardSpend.setUpdateDate(curDate);
try {
wxCardSpendMapper.insert(cardSpend);
} catch (Exception e) {
logger.error("card spend insert error");
return;
}
// card info 更新 分账 余额
WxCardInfo cardInfo1 = new WxCardInfo();
cardInfo1.setId(cardInfo.getId());
cardInfo1.setRemainingShareFeeAmount(0);
cardInfo1.setUpdateDate(curDate);
try {
wxCardInfoMapper.updateById(cardInfo1);
} catch (Exception e) {
logger.error("card info remaining error");
return;
}
// 分账完结
shareOrder.setOrderId(cardSpend.getId());
shareOrder.setPayAmount(0);
shareOrder.setOrderId(cardSpend.getId());
if (cardInfo.getRateAmount() != null) {
// 分账实际金额 = 分账实际剩余金额 + 通道费差
shareOrder.setShareAmount(cardInfo.getRemainingShareFeeAmount() + cardInfo.getRateAmount());
} else {
shareOrder.setShareAmount(cardInfo.getRemainingShareFeeAmount());
}
shareOrder.setType(EnumProfitSharingOrderType.PROFIT_SHARING_MULTI_FINISH.getCode());
profitSharingOrderService.finishSharingOrder(shareOrder,payWay);
// Date curDate = new Date();
// // card spend 添加一条 记录]
// final IdWorker idWorker = IdWorker.get();
// WxCardSpend cardSpend = new WxCardSpend();
// cardSpend.updateTenantInfo(cardInfo);
// cardSpend.setId(idWorker.nextId());
// cardSpend.setCardId(cardInfo.getId());
// cardSpend.setOrderId(null);
// cardSpend.setDeductionAmount(0);
// cardSpend.setPayment(cardInfo.getRemainingShareFeeAmount());
// cardSpend.setRealPayment(cardInfo.getRemainingShareFeeAmount());
// cardSpend.setCardBeforeAmount(cardInfo.getRemainingAmount());
// cardSpend.setCardRemainAmount(0);
// cardSpend.setCardBeforeRealAmount(cardInfo.getRemainingShareFeeAmount());
// cardSpend.setCardRemainRealAmount(0);
// cardSpend.setCreateDate(curDate);
// cardSpend.setUpdateDate(curDate);
// try {
// wxCardSpendMapper.insert(cardSpend);
// } catch (Exception e) {
// logger.error("card spend insert error");
// return;
// }
// // card info 更新 分账 余额
// WxCardInfo cardInfo1 = new WxCardInfo();
// cardInfo1.setId(cardInfo.getId());
// cardInfo1.setRemainingShareFeeAmount(0);
// cardInfo1.setUpdateDate(curDate);
// try {
// wxCardInfoMapper.updateById(cardInfo1);
// } catch (Exception e) {
// logger.error("card info remaining error");
// return;
// }
//
// // 分账完结
// shareOrder.setOrderId(cardSpend.getId());
// shareOrder.setPayAmount(0);
// shareOrder.setOrderId(cardSpend.getId());
// if (cardInfo.getRateAmount() != null) {
// // 分账实际金额 = 分账实际剩余金额 + 通道费差
// shareOrder.setShareAmount(cardInfo.getRemainingShareFeeAmount() + cardInfo.getRateAmount());
// } else {
// shareOrder.setShareAmount(cardInfo.getRemainingShareFeeAmount());
// }
// shareOrder.setType(EnumProfitSharingOrderType.PROFIT_SHARING_MULTI_FINISH.getCode());
// profitSharingOrderService.finishSharingOrder(shareOrder,payWay);
}

@Override
@@ -890,27 +890,27 @@ public class WxCardSpendServiceImpl implements WxCardSpendService {
}
}

// 9. 分账
try {
shareForCardPay(record, record.getCardId(), record.getOrderId(), record.getId(),payWay);
} catch (MallinkException e) {
logger.error(e.getMessage());
if (ErrorCode.PROFIT_SHARING_NUM_UP_LIMIT.getCode() == e.getErrorCode() ||
ErrorCode.PROFIT_SHARING_TIME_EXPIRED.getCode() == e.getErrorCode()) {
// 分账已到20次限制,后面只记录,无法分账
// 分账已过期,后面只记录,无法分账
logger.error("分账已到20次限制,后面只记录,无法分账");
/*
try {
creteMerchantSubsidy(record, curDate, idWorker, coupon, payment);
} catch (Exception ex) {
logger.error("分账已到20次限制,记录到结算表失败");
}
*/
} else {
throw new MallinkException(e.getErrorCode(), e.getMessage());
}
}
// 9. 卡不分账
// try {
// shareForCardPay(record, record.getCardId(), record.getOrderId(), record.getId(),payWay);
// } catch (MallinkException e) {
// logger.error(e.getMessage());
// if (ErrorCode.PROFIT_SHARING_NUM_UP_LIMIT.getCode() == e.getErrorCode() ||
// ErrorCode.PROFIT_SHARING_TIME_EXPIRED.getCode() == e.getErrorCode()) {
// // 分账已到20次限制,后面只记录,无法分账
// // 分账已过期,后面只记录,无法分账
// logger.error("分账已到20次限制,后面只记录,无法分账");
// /*
// try {
// creteMerchantSubsidy(record, curDate, idWorker, coupon, payment);
// } catch (Exception ex) {
// logger.error("分账已到20次限制,记录到结算表失败");
// }
// */
// } else {
// throw new MallinkException(e.getErrorCode(), e.getMessage());
// }
// }

// 成长值
try {


+ 41
- 64
mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java Wyświetl plik

@@ -1557,50 +1557,22 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
@Override
public void actionAfterVerify(WxCouponOrder couponOrder, WxMerchant merchant) {

WxPayAccount wxPayAccountQuery = new WxPayAccount();
wxPayAccountQuery.updateTenantInfo(couponOrder);
WxPayAccount wxPayAccount = wxPayAccountMapper.selectOne(new QueryWrapper<>(wxPayAccountQuery));
if (wxPayAccount != null && wxPayAccount.getShare().equals(EnumPayShare.NO.getCode())) {
try {
// 核销记账,并且往账户里面记帐
if (couponOrder.getCouponPrice() > 0) {
recordAfterVerified(couponOrder, merchant.getId());

//TODO (系统设置不分账抖音也需要分账)抖音先记账, 定时去处理分账业务
WxPayOrder wxPayOrder = new WxPayOrder();
// Long orderId = couponOrder.getOrderId();
// if (!EnumComposeOrder.isSingle(couponOrder.getComposeOrderType())) {
// orderId = couponOrder.getComposeOrderId();
// }
wxPayOrder.updateTenantInfo(couponOrder);
wxPayOrder.setOrderId(couponOrder.getComposeOrderId());
wxPayOrder.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode());
wxPayOrder = wxPayOrderMapper.selectOne(new QueryWrapper(wxPayOrder));

wxProfitSharingOrderService.finishDouyinSharingOrder(wxPayOrder);
}

} catch (Exception e) {
logger.error("核销记账失败"+e.getMessage(),e);
}
} else {
//如果是组合的,则为多次
if (EnumComposeOrder.isSingle(couponOrder.getComposeOrderType())) {
try {
// 核销分账
shareAfterVerify(couponOrder, merchant.getId(),couponOrder.getPayVendor(),false);
} catch (Exception e) {
logger.error("核销记账失败"+e.getMessage(),e);
}
}else {
try {
// 核销分账
shareAfterVerify(couponOrder, merchant.getId(),couponOrder.getPayVendor(),true);
} catch (Exception e) {
logger.error("核销记账失败"+e.getMessage(),e);
}
}
}
//如果是组合的,则为多次
if (EnumComposeOrder.isSingle(couponOrder.getComposeOrderType())) {
try {
// 核销分账
shareAfterVerify(couponOrder, merchant.getId(),couponOrder.getPayVendor(),false);
} catch (Exception e) {
logger.error("核销记账失败"+e.getMessage(),e);
}
}else {
try {
// 核销分账
shareAfterVerify(couponOrder, merchant.getId(),couponOrder.getPayVendor(),true);
} catch (Exception e) {
logger.error("核销记账失败"+e.getMessage(),e);
}
}

try {
// 核销补贴
@@ -1687,6 +1659,11 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
public void shareAfterVerify(WxCouponOrder couponOrder, Long merchantId,Integer payWay,boolean mulityShare) {
// 微信分账
try {
//如果是抖音支付 只能单次分账
if(EnumPayWay.PAY_WAY_TT.getCode().equals(payWay) && mulityShare){
logger.error("抖音支付 只能单次分账: ");
return;
}
WxPayOrder wxPayOrder = new WxPayOrder();
// Long orderId = couponOrder.getOrderId();
//
@@ -1698,25 +1675,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
wxPayOrder.setOrderId(couponOrder.getComposeOrderId());
wxPayOrder.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode());
wxPayOrder = wxPayOrderMapper.selectOne(new QueryWrapper(wxPayOrder));
if (wxPayOrder != null && wxPayOrder.getShare().equals(EnumPayShare.YES.getCode())) {
WxSharingOrderDto wxSharingOrderDto = new WxSharingOrderDto();
wxSharingOrderDto.setCUserId(wxPayOrder.getCUserId());
wxSharingOrderDto.setMerchantId(merchantId);
if (mulityShare) {
wxSharingOrderDto.setType(EnumProfitSharingOrderType.PROFIT_SHARING_MULTI.getCode());
}else {
wxSharingOrderDto.setType(EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getCode());
}
wxSharingOrderDto.setPayAmount(wxPayOrder.getPayAmount());
wxSharingOrderDto.setRateAmount(wxPayOrder.getChildOrderShare(couponOrder.getOrderId()).getRateAmount());
wxSharingOrderDto.setOrderId(wxPayOrder.getId());
wxSharingOrderDto.setPayTimeStart(wxPayOrder.getPayTimeStart());
wxSharingOrderDto.setPayTimeEnd(wxPayOrder.getPayTimeEnd());
wxSharingOrderDto.updateTenantInfo(wxPayOrder);
wxSharingOrderDto.setTransactionId(wxPayOrder.getTransactionId());
wxSharingOrderDto.setShareAmount(wxPayOrder.getChildOrderShare(couponOrder.getOrderId()).getShareAmount());
wxProfitSharingOrderService.createSharingOrder(wxSharingOrderDto,payWay);
}else if(wxPayOrder != null){
if(wxPayOrder != null && EnumPayShare.NO.getCode().equals(wxPayOrder.getShare())){
try {
// 订单购买时未分账 核销记账,并且往账户里面记帐
if (couponOrder.getCouponPrice() > 0) {
@@ -1725,7 +1684,25 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
} catch (Exception e) {
logger.error("核销记账失败"+e.getMessage(),e);
}
}
}else if(wxPayOrder != null){
WxSharingOrderDto wxSharingOrderDto = new WxSharingOrderDto();
wxSharingOrderDto.setCUserId(wxPayOrder.getCUserId());
wxSharingOrderDto.setMerchantId(merchantId);
if (mulityShare) {
wxSharingOrderDto.setType(EnumProfitSharingOrderType.PROFIT_SHARING_MULTI.getCode());
}else {
wxSharingOrderDto.setType(EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getCode());
}
wxSharingOrderDto.setPayAmount(wxPayOrder.getPayAmount());
wxSharingOrderDto.setRateAmount(wxPayOrder.getChildOrderShare(couponOrder.getOrderId()).getRateAmount());
wxSharingOrderDto.setOrderId(wxPayOrder.getId());
wxSharingOrderDto.setPayTimeStart(wxPayOrder.getPayTimeStart());
wxSharingOrderDto.setPayTimeEnd(wxPayOrder.getPayTimeEnd());
wxSharingOrderDto.updateTenantInfo(wxPayOrder);
wxSharingOrderDto.setTransactionId(wxPayOrder.getTransactionId());
wxSharingOrderDto.setShareAmount(wxPayOrder.getChildOrderShare(couponOrder.getOrderId()).getShareAmount());
wxProfitSharingOrderService.createSharingOrder(wxSharingOrderDto,payWay,wxPayOrder.getShare());
}
} catch (Exception e) {
logger.error("微信分账: " + e.getMessage());
}


+ 2
- 3
mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java Wyświetl plik

@@ -2326,8 +2326,7 @@ public class WxOrderServiceImpl implements WxOrderService {
wxOrder = wxOrderMapper.selectOne(new QueryWrapper(wxOrder));
WxMerchantBUser wxMerchantBUser = wxMerchantBUserMapper.selectById(wxOrder.getProductId());

if (wxPayOrder != null && wxMerchantBUser != null &&
wxPayOrder.getShare().equals(EnumPayShare.YES.getCode())) {
if (wxPayOrder != null && wxMerchantBUser != null) {
WxSharingOrderDto sharingOrder = new WxSharingOrderDto();
sharingOrder.setCUserId(wxPayOrder.getCUserId());
sharingOrder.setMerchantId(wxMerchantBUser.getMerchantId());
@@ -2340,7 +2339,7 @@ public class WxOrderServiceImpl implements WxOrderService {
sharingOrder.updateTenantInfo(wxPayOrder);
sharingOrder.setTransactionId(wxPayOrder.getTransactionId());
sharingOrder.setShareAmount(wxPayOrder.getChildOrderShare(orderId).getShareAmount());
ResultData resultData = wxProfitSharingOrderService.createSharingOrder(sharingOrder,payWay.getCode());
wxProfitSharingOrderService.createSharingOrder(sharingOrder,payWay.getCode(),wxPayOrder.getShare());
} else {
logger.error("微信分账: 未找到payorder or merchant at orderid-" + orderId);
}


+ 20
- 83
mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingOrderServiceImpl.java Wyświetl plik

@@ -133,8 +133,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ
WxAppinfo appinfo;
Integer payWay;
if (wxProfitSharingOrder.getType().equals(EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getCode())
|| wxProfitSharingOrder.getType().equals(EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE_FINISH.getCode())
|| wxProfitSharingOrder.getType().equals(EnumProfitSharingOrderType.PROFIT_SHARING_DOUYIN_SINGLE.getCode())){
|| wxProfitSharingOrder.getType().equals(EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE_FINISH.getCode())){
WxPayOrder wxPayOrder = wxPayOrderMapper.selectById(wxProfitSharingOrder.getOrderId(),wxProfitSharingOrder.getTenantId());
if (wxPayOrder == null)
throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND.getCode(),"wxProfitSharingOrder["+wxProfitSharingOrder.getId()+"] 没有payOrder信息.");
@@ -226,41 +225,18 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ

@Override
@Transactional(isolation=Isolation.SERIALIZABLE, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
public ResultData redoDouyinSharingOrder(WxProfitSharingOrder sharingOrder) {

if (!sharingOrder.getType().equals(EnumProfitSharingOrderType.PROFIT_SHARING_DOUYIN_SINGLE.getCode())) {
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR);
}

WxProfitShareAppInoDto dto = getAppinfo(sharingOrder);
WxAppinfo appInfo = dto.getAppinfo();
WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId());
public ResultData createSharingOrder(WxSharingOrderDto sharingOrderDto,Integer payWay,Integer share) {

final IdWorker idworker = IdWorker.get();

PayShareResult shareResult = payServiceFactory.getPayShareAdapterService(dto.getPayWay())
.noReciverShare(appInfo, payAccount,sharingOrder,sharingOrder.getTransactionId(),sharingOrder.getPayAmount());
if (!shareResult.isSuccess()) {
sharingOrder.setSharingStatus(shareResult.getCode());
sharingOrder.setErrorMsg("REDO:"+shareResult.getMsg());
sharingOrder.setUpdateTime(new Date());
wxProfitSharingOrderMapper.updateById(sharingOrder);
return new ResultData(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(),sharingOrder.getErrorMsg());
if ((EnumPayWay.PAY_WAY_WECHAT.getCode().equals(payWay)
|| EnumPayWay.PAY_WAY_WECHAT_MA.getCode().equals(payWay)
|| EnumPayWay.PAY_WAY_WECHAT_WAP.getCode().equals(payWay))
&& EnumPayShare.NO.getCode().equals(share)){
logger.info("微信支付不分账模式下无需分账");
return new ResultData();
}

sharingOrder.setSharingOrderNo(shareResult.getShareOrderNo());
sharingOrder.setSharingStatus(EnumProfitSharingOrderStatus.PROFIT_SHARING_ACCEPTED.getCode());
sharingOrder.setErrorMsg("REDO:重试分账成功");
sharingOrder.setUpdateTime(new Date());
wxProfitSharingOrderMapper.updateById(sharingOrder);
return new ResultData(shareResult.getData());
}


@Override
@Transactional(isolation=Isolation.SERIALIZABLE, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
public ResultData createSharingOrder(WxSharingOrderDto sharingOrderDto,Integer payWay) {
final IdWorker idworker = IdWorker.get();

if (!sharingOrderDto.getType().equals(EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getCode()) &&
!sharingOrderDto.getType().equals(EnumProfitSharingOrderType.PROFIT_SHARING_MULTI.getCode())){
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR);
@@ -289,7 +265,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ
// 分账完结
sharingOrderDto.setShareAmount(sharingOrderDto.getPayAmount()+sharingOrderDto.getRateAmount());
}
return finishSharingOrder(sharingOrderDto,payWay);
return finishSharingOrder(sharingOrderDto,payWay,share);
}
//计算分账账户合法性
if (psReceiverList.size() > 1 &&
@@ -491,12 +467,19 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ
// 分账完结
@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public ResultData finishSharingOrder(WxSharingOrderDto sharingOrderDto,Integer payWay) {
public ResultData finishSharingOrder(WxSharingOrderDto sharingOrderDto,Integer payWay,Integer share) {
final IdWorker idworker = IdWorker.get();

if ((EnumPayWay.PAY_WAY_WECHAT.getCode().equals(payWay)
|| EnumPayWay.PAY_WAY_WECHAT_MA.getCode().equals(payWay)
|| EnumPayWay.PAY_WAY_WECHAT_WAP.getCode().equals(payWay))
&& EnumPayShare.NO.getCode().equals(share)){
logger.info("微信支付不分账模式下无需分账");
return new ResultData();
}

if (!sharingOrderDto.getType().equals(EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE_FINISH.getCode())
&&
!sharingOrderDto.getType().equals(EnumProfitSharingOrderType.PROFIT_SHARING_MULTI_FINISH.getCode())){
&& !sharingOrderDto.getType().equals(EnumProfitSharingOrderType.PROFIT_SHARING_MULTI_FINISH.getCode())){
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR);
}

@@ -539,52 +522,6 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ
return new ResultData(shareResult.getData());
}

@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public ResultData finishDouyinSharingOrder(WxPayOrder wxPayOrder) {
if(wxPayOrder == null || !EnumPayWay.PAY_WAY_TT.getCode().equals(wxPayOrder.getPayVendor())){
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR);
}

WxAppinfo appInfo = getAppinfo(wxPayOrder.getTenantId(),wxPayOrder.getPayVendor());
WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId());

//分账检查是否已创建分账订单
WxProfitSharingOrder record = new WxProfitSharingOrder();
//创建分账订单
Date currentDate = new Date();
final IdWorker idworker = IdWorker.get();
record.setId(idworker.nextId());
record.updateTenantInfo(payAccount);
record.setTransactionId(wxPayOrder.getTransactionId());
record.setPayAmount(wxPayOrder.getPayAmount());
record.setMerchantId(0l);
record.setOrderId(wxPayOrder.getOrderId());
record.setSharingStatus(EnumProfitSharingOrderStatus.PROFIT_SHARING_UNKNOWN.getCode());
record.setCreateTime(currentDate);
record.setUpdateTime(currentDate);
record.setPayTimeStart(wxPayOrder.getPayTimeStart());
record.setPayTimeEnd(wxPayOrder.getPayTimeEnd());
record.setType(EnumProfitSharingOrderType.PROFIT_SHARING_DOUYIN_SINGLE.getCode());
wxProfitSharingOrderMapper.insert(record);

// //分账提交
// PayShareResult shareResult = payServiceFactory.getPayShareAdapterService(wxPayOrder.getPayVendor()).noReciverShare(appInfo,payAccount,record,wxPayOrder.getPayOrderNo(),wxPayOrder.getShareAmount());
// if (!shareResult.isSuccess()) {
// record.setSharingStatus(shareResult.getCode());
// record.setErrorMsg(shareResult.getMsg());
// record.setUpdateTime(new Date());
// wxProfitSharingOrderMapper.updateById(record);
// return new ResultData(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(),record.getErrorMsg());
// }
//
// record.setSharingOrderNo(shareResult.getShareOrderNo());
// record.setSharingStatus(EnumProfitSharingOrderStatus.PROFIT_SHARING_ACCEPTED.getCode());
// record.setUpdateTime(new Date());
// wxProfitSharingOrderMapper.updateById(record);
return new ResultData();
}

@Override
public PageInfo<WxProfitSharingOrderVo> listAsPage(WxProfitSharingOrderQueryVo order, Integer pageIndex, Integer pageSize) {
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxProfitSharingOrderMapper.findOrderList(order));


+ 2
- 3
mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java Wyświetl plik

@@ -186,9 +186,8 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
logger.error("已经核销过的券: couponOrder-" + couponOrderId);
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_USED);
}
//TODO 查询订单状态是否是支付成功的状态,支付成功的状态才能退款。
// 查找支付订单

// 查询订单状态是否是支付成功的状态,支付成功的状态才能退款。
WxPayOrder payOrderQ = new WxPayOrder();
payOrderQ.updateTenantInfo(wxCouponOrder);
payOrderQ.setCUserId(wxOrder.getCUserId());


+ 1
- 1
mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/miniApp/TtMiniAppPayAdapterService.java Wyświetl plik

@@ -43,7 +43,7 @@ public class TtMiniAppPayAdapterService extends BaseTtPayAdapterService implemen
preOrder.setValidTime(15*60);
// preOrder.setNotifyUrl();//回调地址
// preOrder.setThirdpartyId();//第三方服务商ID
// preOrder.setStoreUid(order.getStoreUid());
// preOrder.setStoreId(record.getStoreId());
CreatePreOrderResult preOrderResult = DouYinPayHelper.createPreOrder(preOrder);

if(preOrderResult.isSuccess()){


+ 30
- 27
mallinkService/src/main/java/com/iformall/service/pay/service/share/douyin/TtPayShareService.java Wyświetl plik

@@ -1,6 +1,8 @@
package com.iformall.service.pay.service.share.douyin;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.iformall.common.ErrorCode;
import com.iformall.domain.po.*;
import com.iformall.douyin.pay.DouYinPayHelper;
@@ -17,6 +19,9 @@ import com.iformall.service.pay.service.share.entity.ShareNotifyAdapterResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Slf4j
@@ -60,33 +65,31 @@ public class TtPayShareService extends PayShareBaseAdapterService{

@Override
public PayShareResult haveReciversShare(WxAppinfo appInfo,WxPayAccount payAccount,WxProfitSharingOrder record,String transcationId,JSONArray receivers,EnumProfitSharingOrderType shareType ) throws MallinkException {
// TODO: 2021/11/27 需要处理添加分账帐号

throw new MallinkException(ErrorCode.PROFIT_SHARING_REQUEST_FAILED);

// Settle settle = new Settle();
// settle.setAppId(appInfo.getAppId());
// settle.setSalt(payAccount.getApiKey());
// settle.setOutSettleNo(record.getId().toString());
// settle.setOutOrderNo(transcationId);
// settle.setSettleDesc("自主完结分账");
//// if(order.getSettlementAmount() != null && order.getSettlementAmount().intValue() > 0){
//// List list = new ArrayList<>();
//// Map<String,Object> settleParams = new HashMap<>();
//// settleParams.put("merchant_uid",merchantUid);
//// settleParams.put("amount",order.getPayment()-order.getSettlementAmount());
//// list.add(settleParams);
//// settle.setSettleParams(JSON.toJSONString(list));
//// }
//
// settle.setSettleParams(receivers.toJSONString());
// SettleResult settleResult = DouYinPayHelper.settle(settle);
//
// if (settleResult.isSuccess()) {
// return new PayShareResult(true, null,"success", settleResult,settleResult.getSettleNo());
// }else{
// return new PayShareResult(false, EnumProfitSharingOrderStatus.PROFIT_SHARING_REQ_FAILED.getCode(),settleResult.getMsg(), null,null);
// }

Settle settle = new Settle();
settle.setAppId(appInfo.getAppId());
settle.setSalt(payAccount.getApiKey());
settle.setOutSettleNo(record.getId().toString());
settle.setOutOrderNo(transcationId);
settle.setSettleDesc("自主完结分账");

List list = new ArrayList<>();
for (Object o: receivers) {
JSONObject jo = (JSONObject) o;
Map<String,Object> settleParams = new HashMap<>();
settleParams.put("merchant_uid",jo.getString("account"));
settleParams.put("amount",jo.getInteger("amount"));
list.add(settleParams);
}

settle.setSettleParams(JSON.toJSONString(list));
SettleResult settleResult = DouYinPayHelper.settle(settle);

if (settleResult.isSuccess()) {
return new PayShareResult(true, null,"success", settleResult,settleResult.getSettleNo());
}else{
return new PayShareResult(false, EnumProfitSharingOrderStatus.PROFIT_SHARING_REQ_FAILED.getCode(),settleResult.getMsg(), null,null);
}

}



Ładowanie…
Anuluj
Zapisz