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 cad8a8ffd..db34ebfb0 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingOrderServiceImpl.java @@ -150,12 +150,17 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ return wxAppinfo; } - private WxMerchant getByMerchantAdmin(TenantEntity tenantEntity,EnumMerchantAdmin merchantAdmin){ + private WxProfitSharingReceiver getByMerchantAdmin(TenantEntity tenantEntity,PayShareAdapterService payShareAdapterService,Long payMerchantId, + EnumMerchantAdmin merchantAdmin,Integer ttPayWay,Integer mchType){ WxMerchant merchantQ = new WxMerchant(); merchantQ.updateTenantInfo(tenantEntity); merchantQ.setIsAdmin(merchantAdmin.getCode()); merchantQ.setStatus(EnumMerchantStatus.VALID.getCode()); - return wxMerchantService.findListOne(merchantQ); + WxMerchant merchant = wxMerchantService.findListOne(merchantQ); + if(merchant != null && !merchant.getId().equals(payMerchantId)){ + return payShareAdapterService.getReceiver(tenantEntity, merchant.getId(), ttPayWay, mchType); + } + return null; } private int getMallSumRate(TenantEntity tenantEntity,Long orderId){ @@ -179,9 +184,21 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ if(!EnumProfitSharingOrderStatus.shareStatus().contains(sharingOrder.getSharingStatus())){ return new ResultData(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(),"分账状态不允许"); } + Date currentDate = new Date(); + if(EnumPayWay.PAY_WAY_WECHAT.getCode().equals(payOrder.getPayVendor()) + && DateUtils.daysBetween(payOrder.getCreateTime(),currentDate) > 30){ + WxProfitSharingOrder updSharingOrder = new WxProfitSharingOrder(); + updSharingOrder.updateTenantInfo(sharingOrder); + updSharingOrder.setId(sharingOrder.getId()); + updSharingOrder.setSharingStatus(EnumProfitSharingOrderStatus.PROFIT_SHARING_FAILED.getCode()); + updSharingOrder.setErrorMsg("微信支付超30天无法分账"); + updSharingOrder.setUpdateTime(currentDate); + wxProfitSharingOrderMapper.updateById(updSharingOrder); + return new ResultData(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(),"微信支付超30天无法分账"); + } PayShareAdapterService payShareAdapterService = payServiceFactory.getPayShareAdapterService(payOrder.getPayVendor(),payOrder.getPayVersion()); - Date currentDate = new Date(); + PayShareResult shareResult = null; //获取达人佣金 @@ -225,43 +242,43 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ //销售抽点 int sellerAmount = PayUtils.getPayRate(wxComposeChildOrderShare.getRealPayMent(), payAccount.getSellRate(), false); wxComposeChildOrderShare.setSellerAmount(sellerAmount); + boolean isSeller = false; if(sellerAmount > 0){ - WxMerchant sellMerchant = getByMerchantAdmin(payOrder,EnumMerchantAdmin.PRIVATE_SELL); - if(sellMerchant != null){ - WxProfitSharingReceiver receiver = payShareAdapterService.getReceiver(payOrder, sellMerchant.getId(), 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("description",receiver.getId()); - jo.put("isPrivate",EnumYesOrNo.YES.getCode()); - receivers.add(jo); - } + WxProfitSharingReceiver receiver = getByMerchantAdmin(payOrder,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("description",receiver.getId()); + jo.put("isPrivate",EnumYesOrNo.YES.getCode()); + receivers.add(jo); + }else{ + isSeller = true; } } //系统抽成 // int systemAmount = PayUtils.getPayRate(wxComposeChildOrderShare.getRealPayMent(), payAccount.getSystemRate(), false); int systemAmount = selSysAmount - sellerAmount; wxComposeChildOrderShare.setSystemAmount(systemAmount); - if(sellerAmount > 0 && receivers.isEmpty()){ + if(isSeller){ systemAmount += systemAmount; } + boolean isSystem = false; if(systemAmount > 0){ - WxMerchant sysMerchant = getByMerchantAdmin(payOrder,EnumMerchantAdmin.PRIVATE_SYSTEM); - if(sysMerchant != null){ - WxProfitSharingReceiver receiver = payShareAdapterService.getReceiver(payOrder, sysMerchant.getId(), 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("description",receiver.getId()); - jo.put("isPrivate",EnumYesOrNo.YES.getCode()); - receivers.add(jo); - } + WxProfitSharingReceiver receiver = getByMerchantAdmin(payOrder,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("description",receiver.getId()); + jo.put("isPrivate",EnumYesOrNo.YES.getCode()); + receivers.add(jo); + }else{ + isSystem = true; } } //总分佣 @@ -270,26 +287,26 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ wxComposeChildOrderShare.setServiceAmount(serviceAmount); //商场分成 int mallAmount = wxComposeChildOrderShare.getRateAmount(); - if(systemAmount > 0 && receivers.isEmpty()){ + if(isSystem){ mallAmount += systemAmount; } + boolean isMall = false; if(mallAmount > 0){ - WxMerchant adminMerchant = getByMerchantAdmin(payOrder,EnumMerchantAdmin.PUBLIC_ADMIN); - if(adminMerchant != null && !wxComposeChildOrderShare.getMerchantId().equals(adminMerchant.getId())){ - WxProfitSharingReceiver receiver = payShareAdapterService.getReceiver(payOrder, adminMerchant.getId(), 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("description",receiver.getId()); - jo.put("isPrivate",EnumYesOrNo.YES.getCode()); - receivers.add(jo); - } + WxProfitSharingReceiver receiver = getByMerchantAdmin(payOrder,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("description",receiver.getId()); + jo.put("isPrivate",EnumYesOrNo.YES.getCode()); + receivers.add(jo); + }else{ + isMall = true; } } - if(mallAmount > 0 && receivers.isEmpty()){ + if(isMall){ surplus += mallAmount; } }else{