From f8c3021a16a8255ad9a6b79ee91efcd5d87a1059 Mon Sep 17 00:00:00 2001 From: xhxu Date: Tue, 6 Sep 2022 17:09:37 +0800 Subject: [PATCH] =?UTF-8?q?//=20=E5=88=86=E8=B4=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../schedule/SharingOrderRedoSchedule.java | 13 +++++----- .../service/WxProfitSharingOrderService.java | 2 +- .../impl/WxProfitSharingOrderServiceImpl.java | 25 +++++++++++++------ 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/SharingOrderRedoSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/SharingOrderRedoSchedule.java index 4be867ee9..095de9480 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/SharingOrderRedoSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/SharingOrderRedoSchedule.java @@ -66,12 +66,13 @@ public class SharingOrderRedoSchedule { // wxPayOrder.updateTenantInfo(sharingOrder); // wxPayOrder.setId(sharingOrder.getOrderId()); // 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) { logger.error("分账重试失败:" + EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getMessage() + " ID:" +sharingOrder.getId() diff --git a/mallinkService/src/main/java/com/iformall/service/WxProfitSharingOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxProfitSharingOrderService.java index 74ce3be3e..8ef9eedda 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxProfitSharingOrderService.java +++ b/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); /** * 分账完结重试 diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingOrderServiceImpl.java index 1bfb9536f..a753c9085 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingOrderServiceImpl.java @@ -140,13 +140,13 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ @Override @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())){ 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(); PayShareResult shareResult = null; @@ -157,7 +157,13 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ 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); //添加分账账号: 系统抽点,销售提成,商场扣点,平台(微信,抖音)抽佣 int systemAmount = wxComposeChildOrderShare.getSystemAmount();//系统抽点 @@ -170,6 +176,9 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ JSONArray receivers = new JSONArray();//分账参数json //todo +// 1.总分模式下 不分账(只分给各个抽成方)如果各个抽成方为0 则直接解冻 +// 2.总分模式下 分账 (分账给商家及各个抽成方) +// 3.直连模式下 不分账和分账一样(只分账给各个抽成方)如果各种抽成金额为0 则直接解冻 if(systemAmount > 0){ //todo 查询系统抽点到账帐号 jsonArray.add() } @@ -181,7 +190,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ //需要判断当前订单收款帐号非商场抽点到账帐号 } 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(); jo.put("type",payShareAdapterService.getShareAccount(receiver.getReceiverType()).getMessage()); jo.put("account",receiver.getReceiverAccount()); @@ -191,7 +200,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ receivers.add(jo); } - EnumPayWay enumPayWay = EnumPayWay.getEnum(sharingOrder.getPayVendor()); + EnumPayWay enumPayWay = EnumPayWay.getEnum(payOrder.getPayVendor()); EnumAppPlat enumPlat = enumPayWay.getPlat(); WxAppinfo cAppInfo = wxAppinfoService.getCAppInfo(sharingOrder, enumPlat); @@ -226,14 +235,14 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ updSharingOrder.setUpdateTime(currentDate); 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(); jo.put("type",payShareAdapterService.getShareAccount(receiver.getReceiverType()).getMessage()); jo.put("account",receiver.getReceiverAccount()); jo.put("amount", receiver.getSharingAmount()); jo.put("merchantId",receiver.getMerchantId()); - jo.put("description",receiver.getId().toString()); //为重试做准备 + jo.put("description",receiver.getId().toString()); receivers.add(jo); } try{ @@ -314,7 +323,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ } //实际调用分账 - ResultData resultData = redoSharingOrder(record); + ResultData resultData = redoSharingOrder(record,payOrder); return resultData; }