From 4519d204fcebe9490e276853b562640f77830f92 Mon Sep 17 00:00:00 2001 From: xhxu Date: Fri, 9 Dec 2022 15:10:00 +0800 Subject: [PATCH] //sharing --- .../schedule/SharingOrderRedoSchedule.java | 2 +- .../service/WxProfitSharingOrderService.java | 2 +- .../impl/WxCouponOrderServiceImpl.java | 9 ++---- .../impl/WxProfitSharingOrderServiceImpl.java | 28 +++++++++++++------ 4 files changed, 24 insertions(+), 17 deletions(-) diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/SharingOrderRedoSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/SharingOrderRedoSchedule.java index 52d36612c..095de9480 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/SharingOrderRedoSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/SharingOrderRedoSchedule.java @@ -72,7 +72,7 @@ public class SharingOrderRedoSchedule { + " ID:" +sharingOrder.getId() + " RES: wxPayOrder is null." ); } - ResultData result = wxProfitSharingOrderService.redoSharingOrder(mall,sharingOrder,wxPayOrder); + 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 7f95e0ae9..5784a3c7a 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxProfitSharingOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxProfitSharingOrderService.java @@ -27,7 +27,7 @@ public interface WxProfitSharingOrderService { /** * 分账重试 */ - ResultData redoSharingOrder(TenantEntity mallTenantEntity,WxProfitSharingOrder sharingOrder,WxPayOrder payOrder); + ResultData redoSharingOrder(WxProfitSharingOrder sharingOrder,WxPayOrder payOrder); /** * 分账完结重试 diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java index d9d2fec7c..66df36d18 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -1791,17 +1791,14 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { logger.error("券订单"+couponOrder.getId()+"未查询到支付订单."); throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"券订单"+couponOrder.getId()+"未查询到支付订单."); } - if(EnumPayShare.NO.getCode().equals(wxPayOrder.getShare())){ + if(EnumPayMchType.TOTAL.getCode().equals(wxPayOrder.getMchType()) + && EnumPayShare.NO.getCode().equals(wxPayOrder.getShare())){ + //总分并且不分账 记账 try { // 订单购买时未分账 核销记账,并且往账户里面记帐 if (couponOrder.getCouponPrice() > 0) { recordAfterVerified(couponOrder, wxMerchant); } - Date time = DateUtils.stringToDate("2022-09-22 23:00:00", "yyyy-MM-dd HH:mm:ss"); - if(EnumPayWay.PAY_WAY_WECHAT.getCode().equals(wxPayOrder.getPayVendor()) - && wxPayOrder.getCreateTime().before(time)){ - return; - } } catch (Exception e) { logger.error("核销记账失败"+e.getMessage(),e); } 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 38c8a356a..dc59cfdc6 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingOrderServiceImpl.java @@ -179,11 +179,14 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ @Override // @Transactional(isolation=Isolation.SERIALIZABLE, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class}) - public ResultData redoSharingOrder(TenantEntity mallTenantEntity,WxProfitSharingOrder sharingOrder,WxPayOrder payOrder) { + public ResultData redoSharingOrder(WxProfitSharingOrder sharingOrder,WxPayOrder payOrder) { if(!EnumProfitSharingOrderStatus.shareStatus().contains(sharingOrder.getSharingStatus())){ return new ResultData(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(),"分账状态不允许"); } + + WxMerchant merchant = wxMerchantService.getById(sharingOrder.getMerchantId()); + Date currentDate = new Date(); if(EnumPayWay.PAY_WAY_WECHAT.getCode().equals(payOrder.getPayVendor()) && DateUtils.daysBetween(payOrder.getCreateTime(),currentDate) > 30){ @@ -194,6 +197,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ updSharingOrder.setErrorMsg("微信支付超30天无法分账"); updSharingOrder.setUpdateTime(currentDate); wxProfitSharingOrderMapper.updateById(updSharingOrder); + return new ResultData(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(),"微信支付超30天无法分账"); } @@ -218,7 +222,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ EnumPayWay enumPayWay = EnumPayWay.getEnum(payOrder.getPayVendor()); EnumAppPlat enumPlat = enumPayWay.getPlat(); - WxAppinfo cAppInfo = wxAppinfoService.getCAppInfo(mallTenantEntity, enumPlat); + WxAppinfo cAppInfo = wxAppinfoService.getCAppInfo(sharingOrder, enumPlat); WxPayAccount payAccount = wxPayAccountMapper.selectById(cAppInfo.getPayId()); WxComposeChildOrderShare wxComposeChildOrderShare = null; @@ -244,13 +248,14 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ wxComposeChildOrderShare.setSellerAmount(sellerAmount); boolean isSeller = false; if(sellerAmount > 0){ - WxProfitSharingReceiver receiver = getByMerchantAdmin(mallTenantEntity,payShareAdapterService,wxComposeChildOrderShare.getMerchantId(),EnumMerchantAdmin.PRIVATE_SELL,payOrder.getTtPayWay(), payOrder.getMchType()); + WxProfitSharingReceiver receiver = getByMerchantAdmin(sharingOrder,payShareAdapterService,wxComposeChildOrderShare.getMerchantId(),EnumMerchantAdmin.PRIVATE_SELL,payOrder.getTtPayWay(), payOrder.getMchType()); if(receiver != null){ JSONObject jo = new JSONObject(); jo.put("type",payShareAdapterService.getShareAccount(receiver.getReceiverType()).getMessage()); jo.put("account",receiver.getReceiverAccount()); jo.put("amount", sellerAmount); jo.put("merchantId",receiver.getMerchantId()); + jo.put("bTenantId",receiver.getTenantId()); jo.put("description",receiver.getId()); jo.put("isPrivate",EnumYesOrNo.YES.getCode()); receivers.add(jo); @@ -267,13 +272,14 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ } boolean isSystem = false; if(systemAmount > 0){ - WxProfitSharingReceiver receiver = getByMerchantAdmin(mallTenantEntity,payShareAdapterService,wxComposeChildOrderShare.getMerchantId(),EnumMerchantAdmin.PRIVATE_SYSTEM,payOrder.getTtPayWay(), payOrder.getMchType()); + WxProfitSharingReceiver receiver = getByMerchantAdmin(sharingOrder,payShareAdapterService,wxComposeChildOrderShare.getMerchantId(),EnumMerchantAdmin.PRIVATE_SYSTEM,payOrder.getTtPayWay(), payOrder.getMchType()); if(receiver != null){ JSONObject jo = new JSONObject(); jo.put("type",payShareAdapterService.getShareAccount(receiver.getReceiverType()).getMessage()); jo.put("account",receiver.getReceiverAccount()); jo.put("amount", systemAmount); jo.put("merchantId",receiver.getMerchantId()); + jo.put("bTenantId",receiver.getTenantId()); jo.put("description",receiver.getId()); jo.put("isPrivate",EnumYesOrNo.YES.getCode()); receivers.add(jo); @@ -292,13 +298,14 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ } boolean isMall = false; if(mallAmount > 0){ - WxProfitSharingReceiver receiver = getByMerchantAdmin(mallTenantEntity,payShareAdapterService,wxComposeChildOrderShare.getMerchantId(),EnumMerchantAdmin.PUBLIC_ADMIN,payOrder.getTtPayWay(), payOrder.getMchType()); + WxProfitSharingReceiver receiver = getByMerchantAdmin(sharingOrder,payShareAdapterService,wxComposeChildOrderShare.getMerchantId(),EnumMerchantAdmin.PUBLIC_ADMIN,payOrder.getTtPayWay(), payOrder.getMchType()); if(receiver != null){ JSONObject jo = new JSONObject(); jo.put("type",payShareAdapterService.getShareAccount(receiver.getReceiverType()).getMessage()); jo.put("account",receiver.getReceiverAccount()); jo.put("amount", mallAmount); jo.put("merchantId",receiver.getMerchantId()); + jo.put("bTenantId",receiver.getTenantId()); jo.put("description",receiver.getId()); jo.put("isPrivate",EnumYesOrNo.YES.getCode()); receivers.add(jo); @@ -315,13 +322,14 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ //商户所得 int shareAmount = wxComposeChildOrderShare.getShareAmount() + surplus; - WxProfitSharingReceiver receiver = payShareAdapterService.getReceiver(mallTenantEntity,sharingOrder.getMerchantId(),payOrder.getTtPayWay(),payOrder.getMchType()); + WxProfitSharingReceiver receiver = payShareAdapterService.getReceiver(merchant,sharingOrder.getMerchantId(),payOrder.getTtPayWay(),payOrder.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()); jo.put("amount", shareAmount); jo.put("merchantId",receiver.getMerchantId()); + jo.put("bTenantId",receiver.getTenantId()); jo.put("description",receiver.getId()); receivers.add(jo); } @@ -363,6 +371,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ jo.put("account",payAccount.getSubMchId()); jo.put("amount", shareAmount); jo.put("merchantId",0); + jo.put("bTenantId",payOrder.getTenantId()); jo.put("description",0); receivers.add(jo); }else if(EnumPayMchType.DIRECT.getCode().equals(payOrder.getMchType())){ @@ -372,6 +381,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ jo.put("account",receiver.getReceiverAccount()); jo.put("amount", shareAmount); jo.put("merchantId",receiver.getMerchantId()); + jo.put("bTenantId",receiver.getTenantId()); jo.put("description",receiver.getId()); receivers.add(jo); } @@ -385,7 +395,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ result.setId(idworker.nextId()); result.updateTenantInfo(sharingOrder); result.setMerchantId(Long.valueOf(o.getString("merchantId"))); - result.setBTenantId(mallTenantEntity.getTenantId()); + result.setBTenantId(o.getString("bTenantId")); result.setSharingOrderId(sharingOrder.getId()); result.setSharingReceiverId(Long.valueOf(o.getString("description"))); result.setPayAmount(o.getInteger("amount")); @@ -397,7 +407,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ wxProfitSharingResultMapper.insert(result); }); }catch(Exception e){ - logger.info("记账失败"+sharingOrder.getId()); + logger.info("记录结果失败"+sharingOrder.getId()); } return new ResultData(shareResult); @@ -461,7 +471,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ } //实际调用分账 - ResultData resultData = redoSharingOrder(mallTenantEntity,record,payOrder); + ResultData resultData = redoSharingOrder(record,payOrder); return resultData; }