| @@ -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{ | |||