Преглед изворни кода

// 分账

release_toaliyun_real
xhxu пре 3 година
родитељ
комит
f8c3021a16
3 измењених фајлова са 25 додато и 15 уклоњено
  1. +7
    -6
      mallinkSchedule/src/main/java/com/iformall/schedule/SharingOrderRedoSchedule.java
  2. +1
    -1
      mallinkService/src/main/java/com/iformall/service/WxProfitSharingOrderService.java
  3. +17
    -8
      mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingOrderServiceImpl.java

+ 7
- 6
mallinkSchedule/src/main/java/com/iformall/schedule/SharingOrderRedoSchedule.java Прегледај датотеку

@@ -66,12 +66,13 @@ public class SharingOrderRedoSchedule {
// wxPayOrder.updateTenantInfo(sharingOrder); // wxPayOrder.updateTenantInfo(sharingOrder);
// wxPayOrder.setId(sharingOrder.getOrderId()); // wxPayOrder.setId(sharingOrder.getOrderId());
// wxPayOrder = wxPayOrderMapper.selectOne(new QueryWrapper(wxPayOrder)); // wxPayOrder = wxPayOrderMapper.selectOne(new QueryWrapper(wxPayOrder));
// if (null == wxPayOrder) {
// logger.error("分账重试失败:" + EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getMessage()
// + " ID:" +sharingOrder.getId()
// + " RES: wxPayOrder is null." );
// }
ResultData result = wxProfitSharingOrderService.redoSharingOrder(sharingOrder);
WxPayOrder wxPayOrder = wxPayOrderMapper.selectById(sharingOrder.getOrderId(),sharingOrder.getTenantId());
if (null == wxPayOrder) {
logger.error("分账重试失败:" + EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getMessage()
+ " ID:" +sharingOrder.getId()
+ " RES: wxPayOrder is null." );
}
ResultData result = wxProfitSharingOrderService.redoSharingOrder(sharingOrder,wxPayOrder);
if (result.code != ResultData.SUCCESS) { if (result.code != ResultData.SUCCESS) {
logger.error("分账重试失败:" + EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getMessage() logger.error("分账重试失败:" + EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getMessage()
+ " ID:" +sharingOrder.getId() + " ID:" +sharingOrder.getId()


+ 1
- 1
mallinkService/src/main/java/com/iformall/service/WxProfitSharingOrderService.java Прегледај датотеку

@@ -26,7 +26,7 @@ public interface WxProfitSharingOrderService {
/** /**
* 分账重试 * 分账重试
*/ */
ResultData redoSharingOrder(WxProfitSharingOrder sharingOrder);
ResultData redoSharingOrder(WxProfitSharingOrder sharingOrder,WxPayOrder payOrder);


/** /**
* 分账完结重试 * 分账完结重试


+ 17
- 8
mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingOrderServiceImpl.java Прегледај датотеку

@@ -140,13 +140,13 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ


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


if(!EnumProfitSharingOrderStatus.shareStatus().contains(sharingOrder.getSharingStatus())){ if(!EnumProfitSharingOrderStatus.shareStatus().contains(sharingOrder.getSharingStatus())){
return new ResultData(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(),"分账状态不允许"); return new ResultData(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(),"分账状态不允许");
} }


PayShareAdapterService payShareAdapterService = payServiceFactory.getPayShareAdapterService(sharingOrder.getPayVendor(),sharingOrder.getPayVersion());
PayShareAdapterService payShareAdapterService = payServiceFactory.getPayShareAdapterService(payOrder.getPayVendor(),payOrder.getPayVersion());
Date currentDate = new Date(); Date currentDate = new Date();
PayShareResult shareResult = null; PayShareResult shareResult = null;


@@ -157,7 +157,13 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ
return new ResultData(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(),"未获取到达人佣金"); return new ResultData(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(),"未获取到达人佣金");
} }


WxComposeChildOrderShare wxComposeChildOrderShare = JSONObject.parseObject(sharingOrder.getPointDeduction(), WxComposeChildOrderShare.class);
WxComposeChildOrderShare wxComposeChildOrderShare = null;
if(sharingOrder.getSingleOrderId() != null){
wxComposeChildOrderShare = payOrder.getChildOrderShare(sharingOrder.getSingleOrderId());
}else{
wxComposeChildOrderShare = payOrder.getSingleChildOrderShare();
}

wxComposeChildOrderShare.setCpsCommission(cpsCommission); wxComposeChildOrderShare.setCpsCommission(cpsCommission);
//添加分账账号: 系统抽点,销售提成,商场扣点,平台(微信,抖音)抽佣 //添加分账账号: 系统抽点,销售提成,商场扣点,平台(微信,抖音)抽佣
int systemAmount = wxComposeChildOrderShare.getSystemAmount();//系统抽点 int systemAmount = wxComposeChildOrderShare.getSystemAmount();//系统抽点
@@ -170,6 +176,9 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ


JSONArray receivers = new JSONArray();//分账参数json JSONArray receivers = new JSONArray();//分账参数json
//todo //todo
// 1.总分模式下 不分账(只分给各个抽成方)如果各个抽成方为0 则直接解冻
// 2.总分模式下 分账 (分账给商家及各个抽成方)
// 3.直连模式下 不分账和分账一样(只分账给各个抽成方)如果各种抽成金额为0 则直接解冻
if(systemAmount > 0){ if(systemAmount > 0){
//todo 查询系统抽点到账帐号 jsonArray.add() //todo 查询系统抽点到账帐号 jsonArray.add()
} }
@@ -181,7 +190,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ
//需要判断当前订单收款帐号非商场抽点到账帐号 //需要判断当前订单收款帐号非商场抽点到账帐号
} }
WxProfitSharingReceiver receiver = payShareAdapterService.getReceiver(sharingOrder,sharingOrder.getMerchantId(),null,sharingOrder.getMchType()); WxProfitSharingReceiver receiver = payShareAdapterService.getReceiver(sharingOrder,sharingOrder.getMerchantId(),null,sharingOrder.getMchType());
if(EnumPayMchType.TOTAL.getCode().equals(sharingOrder.getMchType())){
if(EnumPayMchType.TOTAL.getCode().equals(payOrder.getMchType()) && EnumPayShare.YES.getCode().equals(payOrder.getShare())){
JSONObject jo = new JSONObject(); JSONObject jo = new JSONObject();
jo.put("type",payShareAdapterService.getShareAccount(receiver.getReceiverType()).getMessage()); jo.put("type",payShareAdapterService.getShareAccount(receiver.getReceiverType()).getMessage());
jo.put("account",receiver.getReceiverAccount()); jo.put("account",receiver.getReceiverAccount());
@@ -191,7 +200,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ
receivers.add(jo); receivers.add(jo);
} }


EnumPayWay enumPayWay = EnumPayWay.getEnum(sharingOrder.getPayVendor());
EnumPayWay enumPayWay = EnumPayWay.getEnum(payOrder.getPayVendor());
EnumAppPlat enumPlat = enumPayWay.getPlat(); EnumAppPlat enumPlat = enumPayWay.getPlat();


WxAppinfo cAppInfo = wxAppinfoService.getCAppInfo(sharingOrder, enumPlat); WxAppinfo cAppInfo = wxAppinfoService.getCAppInfo(sharingOrder, enumPlat);
@@ -226,14 +235,14 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ
updSharingOrder.setUpdateTime(currentDate); updSharingOrder.setUpdateTime(currentDate);
wxProfitSharingOrderMapper.updateById(updSharingOrder); wxProfitSharingOrderMapper.updateById(updSharingOrder);


if(EnumPayMchType.DIRECT.getCode().equals(sharingOrder.getMchType())){
if(EnumPayMchType.DIRECT.getCode().equals(payOrder.getMchType()) || EnumPayShare.NO.getCode().equals(payOrder.getShare())){
//如果是直连 把分给商户的钱记录下来 //如果是直连 把分给商户的钱记录下来
JSONObject jo = new JSONObject(); JSONObject jo = new JSONObject();
jo.put("type",payShareAdapterService.getShareAccount(receiver.getReceiverType()).getMessage()); jo.put("type",payShareAdapterService.getShareAccount(receiver.getReceiverType()).getMessage());
jo.put("account",receiver.getReceiverAccount()); jo.put("account",receiver.getReceiverAccount());
jo.put("amount", receiver.getSharingAmount()); jo.put("amount", receiver.getSharingAmount());
jo.put("merchantId",receiver.getMerchantId()); jo.put("merchantId",receiver.getMerchantId());
jo.put("description",receiver.getId().toString()); //为重试做准备
jo.put("description",receiver.getId().toString());
receivers.add(jo); receivers.add(jo);
} }
try{ try{
@@ -314,7 +323,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ
} }


//实际调用分账 //实际调用分账
ResultData resultData = redoSharingOrder(record);
ResultData resultData = redoSharingOrder(record,payOrder);
return resultData; return resultData;
} }




Loading…
Откажи
Сачувај