| @@ -150,12 +150,17 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ | |||||
| return wxAppinfo; | 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(); | WxMerchant merchantQ = new WxMerchant(); | ||||
| merchantQ.updateTenantInfo(tenantEntity); | merchantQ.updateTenantInfo(tenantEntity); | ||||
| merchantQ.setIsAdmin(merchantAdmin.getCode()); | merchantQ.setIsAdmin(merchantAdmin.getCode()); | ||||
| merchantQ.setStatus(EnumMerchantStatus.VALID.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){ | private int getMallSumRate(TenantEntity tenantEntity,Long orderId){ | ||||
| @@ -179,9 +184,21 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ | |||||
| 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(),"分账状态不允许"); | ||||
| } | } | ||||
| 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()); | PayShareAdapterService payShareAdapterService = payServiceFactory.getPayShareAdapterService(payOrder.getPayVendor(),payOrder.getPayVersion()); | ||||
| Date currentDate = new Date(); | |||||
| PayShareResult shareResult = null; | PayShareResult shareResult = null; | ||||
| //获取达人佣金 | //获取达人佣金 | ||||
| @@ -225,43 +242,43 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ | |||||
| //销售抽点 | //销售抽点 | ||||
| int sellerAmount = PayUtils.getPayRate(wxComposeChildOrderShare.getRealPayMent(), payAccount.getSellRate(), false); | int sellerAmount = PayUtils.getPayRate(wxComposeChildOrderShare.getRealPayMent(), payAccount.getSellRate(), false); | ||||
| wxComposeChildOrderShare.setSellerAmount(sellerAmount); | wxComposeChildOrderShare.setSellerAmount(sellerAmount); | ||||
| boolean isSeller = false; | |||||
| if(sellerAmount > 0){ | 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 = PayUtils.getPayRate(wxComposeChildOrderShare.getRealPayMent(), payAccount.getSystemRate(), false); | ||||
| int systemAmount = selSysAmount - sellerAmount; | int systemAmount = selSysAmount - sellerAmount; | ||||
| wxComposeChildOrderShare.setSystemAmount(systemAmount); | wxComposeChildOrderShare.setSystemAmount(systemAmount); | ||||
| if(sellerAmount > 0 && receivers.isEmpty()){ | |||||
| if(isSeller){ | |||||
| systemAmount += systemAmount; | systemAmount += systemAmount; | ||||
| } | } | ||||
| boolean isSystem = false; | |||||
| if(systemAmount > 0){ | 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); | wxComposeChildOrderShare.setServiceAmount(serviceAmount); | ||||
| //商场分成 | //商场分成 | ||||
| int mallAmount = wxComposeChildOrderShare.getRateAmount(); | int mallAmount = wxComposeChildOrderShare.getRateAmount(); | ||||
| if(systemAmount > 0 && receivers.isEmpty()){ | |||||
| if(isSystem){ | |||||
| mallAmount += systemAmount; | mallAmount += systemAmount; | ||||
| } | } | ||||
| boolean isMall = false; | |||||
| if(mallAmount > 0){ | 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; | surplus += mallAmount; | ||||
| } | } | ||||
| }else{ | }else{ | ||||