| @@ -62,16 +62,16 @@ public class SharingOrderRedoSchedule { | |||||
| if (null != list) { | if (null != list) { | ||||
| list.stream().forEach(sharingOrder->{ | list.stream().forEach(sharingOrder->{ | ||||
| try { | try { | ||||
| WxPayOrder wxPayOrder = new WxPayOrder(); | |||||
| 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 wxPayOrder = new WxPayOrder(); | |||||
| // 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); | |||||
| if (result.code != ResultData.SUCCESS) { | if (result.code != ResultData.SUCCESS) { | ||||
| logger.error("分账重试失败:" + EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getMessage() | logger.error("分账重试失败:" + EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getMessage() | ||||
| + " ID:" +sharingOrder.getId() | + " ID:" +sharingOrder.getId() | ||||
| @@ -132,36 +132,36 @@ public class SharingOrderRedoSchedule { | |||||
| } | } | ||||
| @Async | |||||
| // @Scheduled(cron = "0 0 2 * * ?") // 每天凌晨02:00分账重试 | |||||
| @Scheduled(cron = "0 10 */1 * * ?") // 测试 | |||||
| public void sharingOrderHanderSchedule() { | |||||
| List<WxMall> malls = getMalls(); | |||||
| for (WxMall mall: malls) { | |||||
| WxProfitSharingOrder wxProfitSharingOrder = new WxProfitSharingOrder(); | |||||
| wxProfitSharingOrder.setTenantId(mall.getTenantId()); | |||||
| wxProfitSharingOrder.setSharingStatus(EnumProfitSharingOrderStatus.PROFIT_SHARING_UNKNOWN.getCode()); | |||||
| List<WxProfitSharingOrder> list = wxProfitSharingOrderMapper.findList(wxProfitSharingOrder); | |||||
| if (null != list) { | |||||
| list.stream().forEach(sharingOrder->{ | |||||
| try { | |||||
| ResultData result = wxProfitSharingOrderService.handerSharingOrder(sharingOrder); | |||||
| if (result.code != ResultData.SUCCESS) { | |||||
| logger.error("处理分账数据失败:" + EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getMessage() | |||||
| + " ID:" +sharingOrder.getId() | |||||
| + " RES:" + result.message); | |||||
| } | |||||
| } catch (Exception e){ | |||||
| logger.error("处理分账数据失败:" + EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getMessage() | |||||
| + " ID:" +sharingOrder.getId() | |||||
| + " MSG:" + e.getMessage()); | |||||
| } | |||||
| }); | |||||
| } | |||||
| } | |||||
| } | |||||
| // @Async | |||||
| //// @Scheduled(cron = "0 0 2 * * ?") // 每天凌晨02:00分账重试 | |||||
| // @Scheduled(cron = "0 10 */1 * * ?") // 测试 | |||||
| // public void sharingOrderHanderSchedule() { | |||||
| // List<WxMall> malls = getMalls(); | |||||
| // for (WxMall mall: malls) { | |||||
| // WxProfitSharingOrder wxProfitSharingOrder = new WxProfitSharingOrder(); | |||||
| // wxProfitSharingOrder.setTenantId(mall.getTenantId()); | |||||
| // wxProfitSharingOrder.setSharingStatus(EnumProfitSharingOrderStatus.PROFIT_SHARING_UNKNOWN.getCode()); | |||||
| // List<WxProfitSharingOrder> list = wxProfitSharingOrderMapper.findList(wxProfitSharingOrder); | |||||
| // if (null != list) { | |||||
| // list.stream().forEach(sharingOrder->{ | |||||
| // try { | |||||
| // ResultData result = wxProfitSharingOrderService.handerSharingOrder(sharingOrder); | |||||
| // if (result.code != ResultData.SUCCESS) { | |||||
| // logger.error("处理分账数据失败:" + EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getMessage() | |||||
| // + " ID:" +sharingOrder.getId() | |||||
| // + " RES:" + result.message); | |||||
| // } | |||||
| // | |||||
| // } catch (Exception e){ | |||||
| // logger.error("处理分账数据失败:" + EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getMessage() | |||||
| // + " ID:" +sharingOrder.getId() | |||||
| // + " MSG:" + e.getMessage()); | |||||
| // } | |||||
| // }); | |||||
| // } | |||||
| // | |||||
| // | |||||
| // } | |||||
| // | |||||
| // } | |||||
| } | } | ||||
| @@ -54,5 +54,5 @@ public interface WxProfitSharingOrderService { | |||||
| // void updatetttttttttttttt(String tenantId); | // void updatetttttttttttttt(String tenantId); | ||||
| ResultData handerSharingOrder(WxProfitSharingOrder sharingOrder); | |||||
| // ResultData handerSharingOrder(WxProfitSharingOrder sharingOrder); | |||||
| } | } | ||||
| @@ -1718,21 +1718,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { | |||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| logger.error("核销记账失败"+e.getMessage(),e); | logger.error("核销记账失败"+e.getMessage(),e); | ||||
| } | } | ||||
| }else{ | |||||
| WxProfitSharingReceiver psReceiver = payServiceFactory.getPayShareAdapterService(wxPayOrder.getPayVendor(),couponOrder.getPayVersion()) | |||||
| .getReceiver(wxPayOrder,merchantId,wxPayOrder.getTtPayWay(),wxPayOrder.getMchType()); | |||||
| if (psReceiver == null) { | |||||
| try { | |||||
| // 查询不到分账帐号,往账户里面记帐 | |||||
| if (couponOrder.getCouponPrice() > 0) { | |||||
| recordAfterVerified(couponOrder, merchantId); | |||||
| } | |||||
| } catch (Exception e) { | |||||
| logger.error("核销记账失败"+e.getMessage(),e); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| WxOrder order = wxOrderService.getById(couponOrder.getOrderId(), wxPayOrder.getTenantId()); | WxOrder order = wxOrderService.getById(couponOrder.getOrderId(), wxPayOrder.getTenantId()); | ||||
| if (null == order) { | if (null == order) { | ||||
| @@ -1166,30 +1166,29 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { | |||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| logger.error("收银台结算记录失败,{}", e.getMessage()); | logger.error("收银台结算记录失败,{}", e.getMessage()); | ||||
| } | } | ||||
| } else { | |||||
| // 延迟10秒后分账 | |||||
| new Thread(() -> { | |||||
| TenantEntity tenantEntity = record; | |||||
| Long orderId = record.getOrderId(); | |||||
| Long payOrderId = record.getId(); | |||||
| logger.info("收银台订单分账休眠10s: composeOrderId: {}, payOrderId: {}, {}", orderId, payOrderId, tenantEntity); | |||||
| try { | |||||
| Thread.currentThread().sleep(10000); | |||||
| } catch (Exception e) { | |||||
| logger.error("sleep error: " + e.getMessage()); | |||||
| } | |||||
| // 支付分账 | |||||
| logger.info("收银台订单分账开始: composeOrderId: {}, payOrderId: {}", orderId, payOrderId); | |||||
| try { | |||||
| wxOrderService.shareForMicroPay(tenantEntity, orderId, payOrderId); | |||||
| } catch (MallinkException e) { | |||||
| logger.error("收银台订单分账失败: orderId: {}, payOrderId: {}", orderId, payOrderId); | |||||
| logger.error("收银台订单分账失败: " + e.getMessage()); | |||||
| } | |||||
| logger.info("收银台订单分账结束: orderId: {}, payOrderId: {}", orderId, payOrderId); | |||||
| }).start(); | |||||
| } | } | ||||
| // 延迟10秒后分账 | |||||
| new Thread(() -> { | |||||
| TenantEntity tenantEntity = record; | |||||
| Long orderId = record.getOrderId(); | |||||
| Long payOrderId = record.getId(); | |||||
| logger.info("收银台订单分账休眠10s: composeOrderId: {}, payOrderId: {}, {}", orderId, payOrderId, tenantEntity); | |||||
| try { | |||||
| Thread.currentThread().sleep(10000); | |||||
| } catch (Exception e) { | |||||
| logger.error("sleep error: " + e.getMessage()); | |||||
| } | |||||
| // 支付分账 | |||||
| logger.info("收银台订单分账开始: composeOrderId: {}, payOrderId: {}", orderId, payOrderId); | |||||
| try { | |||||
| wxOrderService.shareForMicroPay(tenantEntity, orderId, payOrderId); | |||||
| } catch (MallinkException e) { | |||||
| logger.error("收银台订单分账失败: orderId: {}, payOrderId: {}", orderId, payOrderId); | |||||
| logger.error("收银台订单分账失败: " + e.getMessage()); | |||||
| } | |||||
| logger.info("收银台订单分账结束: orderId: {}, payOrderId: {}", orderId, payOrderId); | |||||
| }).start(); | |||||
| } | } | ||||
| @Override | @Override | ||||
| @@ -169,6 +169,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ | |||||
| int shareAmount = wxComposeChildOrderShare.getShareAmount() - cpsCommission;//分给商户的钱 | int shareAmount = wxComposeChildOrderShare.getShareAmount() - cpsCommission;//分给商户的钱 | ||||
| JSONArray receivers = new JSONArray();//分账参数json | JSONArray receivers = new JSONArray();//分账参数json | ||||
| //todo | |||||
| if(systemAmount > 0){ | if(systemAmount > 0){ | ||||
| //todo 查询系统抽点到账帐号 jsonArray.add() | //todo 查询系统抽点到账帐号 jsonArray.add() | ||||
| } | } | ||||
| @@ -258,11 +259,12 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ | |||||
| return new ResultData(shareResult.getData()); | return new ResultData(shareResult.getData()); | ||||
| } | } | ||||
| @Override | @Override | ||||
| // @Transactional(isolation=Isolation.SERIALIZABLE, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class}) | // @Transactional(isolation=Isolation.SERIALIZABLE, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class}) | ||||
| public ResultData createSharingOrder(WxSharingOrderDto sharingOrderDto,WxPayOrder payOrder) { | public ResultData createSharingOrder(WxSharingOrderDto sharingOrderDto,WxPayOrder payOrder) { | ||||
| PayShareAdapterService payShareAdapterService = payServiceFactory.getPayShareAdapterService(payOrder.getPayVendor(),payOrder.getPayVersion()); | |||||
| // PayShareAdapterService payShareAdapterService = payServiceFactory.getPayShareAdapterService(payOrder.getPayVendor(),payOrder.getPayVersion()); | |||||
| //创建分账订单 | //创建分账订单 | ||||
| WxComposeChildOrderShare childOrderShare = null; | WxComposeChildOrderShare childOrderShare = null; | ||||
| if(sharingOrderDto.getSingleOrderId() != null){ | if(sharingOrderDto.getSingleOrderId() != null){ | ||||
| @@ -615,15 +617,15 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ | |||||
| // }); | // }); | ||||
| // } | // } | ||||
| @Override | |||||
| public ResultData handerSharingOrder(WxProfitSharingOrder sharingOrder) { | |||||
| WxPayOrder payOrder = wxPayOrderMapper.selectById(sharingOrder.getOrderId(), sharingOrder.getTenantId()); | |||||
| if(payOrder != null && EnumPayStatus.PAY_STATUS_SUCCESS.getCode().equals(payOrder.getPayOrderStatus())){ | |||||
| PayShareAdapterService payShareAdapterService = payServiceFactory.getPayShareAdapterService(payOrder.getPayVendor(),payOrder.getPayVersion()); | |||||
| return payShareAdapterService.handerSharingOrder(payOrder,sharingOrder); | |||||
| }else{ | |||||
| return new ResultData(ErrorCode.PAY_ORDER_NOT_FOUND); | |||||
| } | |||||
| } | |||||
| // @Override | |||||
| // public ResultData handerSharingOrder(WxProfitSharingOrder sharingOrder) { | |||||
| // WxPayOrder payOrder = wxPayOrderMapper.selectById(sharingOrder.getOrderId(), sharingOrder.getTenantId()); | |||||
| // if(payOrder != null && EnumPayStatus.PAY_STATUS_SUCCESS.getCode().equals(payOrder.getPayOrderStatus())){ | |||||
| // PayShareAdapterService payShareAdapterService = payServiceFactory.getPayShareAdapterService(payOrder.getPayVendor(),payOrder.getPayVersion()); | |||||
| // return payShareAdapterService.handerSharingOrder(payOrder,sharingOrder); | |||||
| // }else{ | |||||
| // return new ResultData(ErrorCode.PAY_ORDER_NOT_FOUND); | |||||
| // } | |||||
| // } | |||||
| } | } | ||||
| @@ -155,10 +155,11 @@ public class WxMiniAppPayAdapterService extends BaseWxPayV2AdapterService implem | |||||
| futureDate.setTime(currentDate.getTime() + 15 * 60 * 1000); | futureDate.setTime(currentDate.getTime() + 15 * 60 * 1000); | ||||
| wxPayOrderSP.setTime_expire(Utility.getDataFormatStringYYYYMMDDHHmmss(futureDate)); // 15分钟后结束 | wxPayOrderSP.setTime_expire(Utility.getDataFormatStringYYYYMMDDHHmmss(futureDate)); // 15分钟后结束 | ||||
| wxPayOrderSP.setSign_type("HMAC-SHA256"); | wxPayOrderSP.setSign_type("HMAC-SHA256"); | ||||
| wxPayOrderSP.setProfit_sharing(null); | |||||
| if (isShare == EnumPayShare.YES) { | |||||
| wxPayOrderSP.setProfit_sharing("Y"); | |||||
| } | |||||
| wxPayOrderSP.setProfit_sharing("Y"); | |||||
| // wxPayOrderSP.setProfit_sharing(null); | |||||
| // if (isShare == EnumPayShare.YES) { | |||||
| // wxPayOrderSP.setProfit_sharing("Y"); | |||||
| // } | |||||
| Map<String, String> payOrderMap = BeanUtils.toStringMap(wxPayOrderSP); | Map<String, String> payOrderMap = BeanUtils.toStringMap(wxPayOrderSP); | ||||
| wxPayOrderSP.setSign(WxPayment.createSignHMAC(payOrderMap, payAccount.getApiKey())); | wxPayOrderSP.setSign(WxPayment.createSignHMAC(payOrderMap, payAccount.getApiKey())); | ||||
| return wxPayOrderSP; | return wxPayOrderSP; | ||||
| @@ -130,10 +130,11 @@ public class WxMiniMaPayAdapterService extends BaseWxPayV2AdapterService impleme | |||||
| futureDate.setTime(currentDate.getTime() + 15 * 60 * 1000); | futureDate.setTime(currentDate.getTime() + 15 * 60 * 1000); | ||||
| wxPayOrderSP.setTime_expire(Utility.getDataFormatStringYYYYMMDDHHmmss(futureDate)); // 15分钟后结束 | wxPayOrderSP.setTime_expire(Utility.getDataFormatStringYYYYMMDDHHmmss(futureDate)); // 15分钟后结束 | ||||
| wxPayOrderSP.setSign_type("HMAC-SHA256"); | wxPayOrderSP.setSign_type("HMAC-SHA256"); | ||||
| wxPayOrderSP.setProfit_sharing(null); | |||||
| if (isShare == EnumPayShare.YES) { | |||||
| wxPayOrderSP.setProfit_sharing("Y"); | |||||
| } | |||||
| wxPayOrderSP.setProfit_sharing("Y"); | |||||
| // wxPayOrderSP.setProfit_sharing(null); | |||||
| // if (isShare == EnumPayShare.YES) { | |||||
| // wxPayOrderSP.setProfit_sharing("Y"); | |||||
| // } | |||||
| Map<String, String> payOrderMap = BeanUtils.toStringMap(wxPayOrderSP); | Map<String, String> payOrderMap = BeanUtils.toStringMap(wxPayOrderSP); | ||||
| wxPayOrderSP.setSign(WxPayment.createSignHMAC(payOrderMap, payAccount.getApiKey())); | wxPayOrderSP.setSign(WxPayment.createSignHMAC(payOrderMap, payAccount.getApiKey())); | ||||
| return wxPayOrderSP; | return wxPayOrderSP; | ||||
| @@ -52,15 +52,6 @@ public interface PayShareAdapterService { | |||||
| */ | */ | ||||
| WxProfitSharingReceiver getReceiver(TenantEntity tenantEntity, Long merchantId, Integer ttPayWay,Integer mchType); | WxProfitSharingReceiver getReceiver(TenantEntity tenantEntity, Long merchantId, Integer ttPayWay,Integer mchType); | ||||
| /** | |||||
| * 创建分账记录 | |||||
| * @param sharingOrderDto | |||||
| * @param mchType | |||||
| * @param share | |||||
| * @return | |||||
| */ | |||||
| WxProfitSharingOrder createSharingOrder(WxSharingOrderDto sharingOrderDto, WxPayOrder payOrder); | |||||
| /** | /** | ||||
| * 无分账接收方分账 ,钱直接分给小程序方 调用API分账 | * 无分账接收方分账 ,钱直接分给小程序方 调用API分账 | ||||
| * @param appInfo | * @param appInfo | ||||
| @@ -141,8 +132,4 @@ public interface PayShareAdapterService { | |||||
| */ | */ | ||||
| int getOfficialCommission(WxOrder o, WxPayAccount payAccount); | int getOfficialCommission(WxOrder o, WxPayAccount payAccount); | ||||
| ResultData handerSharingOrder(WxPayOrder payOrder, WxProfitSharingOrder sharingOrder); | |||||
| } | } | ||||
| @@ -301,115 +301,6 @@ public class TtPayShareService extends PayShareBaseAdapterService{ | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| @Override | |||||
| public ResultData handerSharingOrder(WxPayOrder payOrder, WxProfitSharingOrder sharingOrder) { | |||||
| // if(!EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getCode().equals(sharingOrder.getType()) | |||||
| // && !EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE_FINISH.getCode().equals(sharingOrder.getType())){ | |||||
| // return new ResultData(ErrorCode.SYS_PARAMETER_TYPE_ERROR.getCode(),"抖音暂不支持多次分账"); | |||||
| // } | |||||
| WxCouponOrder couponOrder = new WxCouponOrder(); | |||||
| couponOrder.updateTenantInfo(payOrder); | |||||
| couponOrder.setComposeOrderId(payOrder.getId()); | |||||
| List<WxCouponOrder> list = wxCouponOrderMapper.findList(couponOrder); | |||||
| if(list.stream().filter(co->(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode().equals(co.getCouponOrderStatus()))).count() > 0){ | |||||
| return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),"存在未核销的券"); | |||||
| } | |||||
| if(EnumPayMchType.DIRECT.getCode().equals(payOrder.getMchType())){ | |||||
| WxProfitSharingOrder updSharingOrder = new WxProfitSharingOrder(); | |||||
| updSharingOrder.setId(sharingOrder.getId()); | |||||
| updSharingOrder.updateTenantInfo(payOrder); | |||||
| updSharingOrder.setSharingStatus(EnumProfitSharingOrderStatus.PROFIT_SHARING_APPLY_FAILED.getCode()); | |||||
| updSharingOrder.setErrorMsg("待分账重试"); | |||||
| updSharingOrder.setUpdateTime(new Date()); | |||||
| wxProfitSharingOrderMapper.updateById(updSharingOrder); | |||||
| return new ResultData(); | |||||
| } | |||||
| if(EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getCode().equals(sharingOrder.getType())){ | |||||
| WxOrder order = new WxOrder(); | |||||
| order.updateTenantInfo(payOrder); | |||||
| order.setComposeOrderId(payOrder.getId()); | |||||
| List<WxOrder> list1 = wxOrderMapper.findList(order); | |||||
| if(list1.size() != list.size()){ | |||||
| return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),"订单与卷码不匹配"); | |||||
| } | |||||
| if(list1.stream().filter(o->(EnumOrderCpsStatus.ORDER_DEF_CPS.getCode().equals(o.getCpsStatus()))).count() > 0){ | |||||
| return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),"存在未同步cps的订单"); | |||||
| } | |||||
| JSONArray receivers = new JSONArray(); | |||||
| Map<Long,WxCouponOrder> map = list.stream().collect(Collectors.toMap(WxCouponOrder::getOrderId, co -> co)); | |||||
| for (WxOrder o:list1) { | |||||
| WxCouponOrder co = map.get(o.getId()); | |||||
| WxProfitSharingReceiver receiver = getReceiver(payOrder, co.getBMerchantId(), payOrder.getTtPayWay(),payOrder.getMchType()); | |||||
| if(receiver != null){ | |||||
| WxComposeChildOrderShare childOrderShare = payOrder.getChildOrderShare(o.getId()); | |||||
| int darenTakeAmount = 0; | |||||
| if(EnumOrderCpsStatus.ORDER_IS_CPS.getCode().equals(o.getCpsStatus())){ | |||||
| OrderCps orderCps = orderCpsMapper.selectById(o.getId(), payOrder.getTenantId()); | |||||
| darenTakeAmount = orderCps.getCommissionAmount(); | |||||
| } | |||||
| JSONObject jo = new JSONObject(); | |||||
| jo.put("type",this.getShareAccount(receiver.getReceiverType()).getMessage()); | |||||
| jo.put("account",receiver.getReceiverAccount()); | |||||
| jo.put("amount", childOrderShare.getShareAmount() - darenTakeAmount); | |||||
| jo.put("rateAmount", childOrderShare.getRateAmount()); | |||||
| jo.put("realRateAmount", childOrderShare.getRealRateAmount()); | |||||
| jo.put("commissionAmount", childOrderShare.getCommissionAmount()); | |||||
| jo.put("darenTakeAmount", darenTakeAmount); | |||||
| //jo.put("description",receiver.getReceiverComments()); //改为存ID, | |||||
| jo.put("description",receiver.getId().toString()); //为重试做准备 | |||||
| receivers.add(jo); | |||||
| } | |||||
| } | |||||
| WxProfitSharingOrder updSharingOrder = new WxProfitSharingOrder(); | |||||
| updSharingOrder.setId(sharingOrder.getId()); | |||||
| updSharingOrder.updateTenantInfo(payOrder); | |||||
| updSharingOrder.setSharingStatus(EnumProfitSharingOrderStatus.PROFIT_SHARING_APPLY_FAILED.getCode()); | |||||
| updSharingOrder.setErrorMsg("待分账重试"); | |||||
| if(!receivers.isEmpty()){ | |||||
| updSharingOrder.setReceivers(receivers.toJSONString()); | |||||
| } | |||||
| updSharingOrder.setUpdateTime(new Date()); | |||||
| wxProfitSharingOrderMapper.updateById(updSharingOrder); | |||||
| return new ResultData(); | |||||
| } | |||||
| return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),"数据异常-----end"); | |||||
| } | |||||
| @Override | |||||
| public WxProfitSharingOrder createSharingOrder(WxSharingOrderDto sharingOrderDto, WxPayOrder payOrder) { | |||||
| WxProfitSharingOrder record = new WxProfitSharingOrder(); | |||||
| record.updateTenantInfo(sharingOrderDto); | |||||
| record.setOrderId(sharingOrderDto.getOrderId()); | |||||
| record.setSingleOrderId(sharingOrderDto.getSingleOrderId()); | |||||
| record = wxProfitSharingOrderMapper.selectOne(new QueryWrapper(record)); | |||||
| if (record == null) { | |||||
| //创建分账订单 | |||||
| Date currentDate = new Date(); | |||||
| record = new WxProfitSharingOrder(); | |||||
| final IdWorker idworker = IdWorker.get(); | |||||
| record.setId(idworker.nextId()); | |||||
| record.updateTenantInfo(sharingOrderDto); | |||||
| record.setTransactionId(sharingOrderDto.getTransactionId()); | |||||
| record.setOrderId(sharingOrderDto.getOrderId()); | |||||
| record.setSingleOrderId(sharingOrderDto.getSingleOrderId()); | |||||
| record.setSingleOrderAmount(sharingOrderDto.getSingleOrderAmount()); | |||||
| record.setPayAmount(sharingOrderDto.getPayAmount()); | |||||
| record.setMerchantId(sharingOrderDto.getMerchantId()); | |||||
| record.setPayMerchantId(sharingOrderDto.getPayMerchantId()); | |||||
| record.setPayMerchantMchId(sharingOrderDto.getPayMerchantMchId()); | |||||
| record.setSharingStatus(this.getSharingOrderInitialStatus()); | |||||
| record.setCreateTime(currentDate); | |||||
| record.setUpdateTime(currentDate); | |||||
| record.setPayTimeStart(sharingOrderDto.getPayTimeStart()); | |||||
| record.setPayTimeEnd(sharingOrderDto.getPayTimeEnd()); | |||||
| record.setType(sharingOrderDto.getType()); | |||||
| wxProfitSharingOrderMapper.insert(record); | |||||
| } | |||||
| return record; | |||||
| } | |||||
| @Override | @Override | ||||
| public WxProfitSharingReceiver getReceiver(TenantEntity tenantEntity, Long merchantId, Integer ttPayWay,Integer mchType) { | public WxProfitSharingReceiver getReceiver(TenantEntity tenantEntity, Long merchantId, Integer ttPayWay,Integer mchType) { | ||||
| if(merchantId == null || merchantId.equals(0L)){ | if(merchantId == null || merchantId.equals(0L)){ | ||||
| @@ -155,24 +155,6 @@ public class WxPayShareSFTService extends PayShareBaseAdapterService{ | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| @Override | |||||
| public ResultData handerSharingOrder(WxPayOrder payOrder, WxProfitSharingOrder sharingOrder) { | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_TYPE_ERROR.getCode(),"微信分账无需处理"); | |||||
| } | |||||
| @Override | |||||
| public WxProfitSharingOrder createSharingOrder(WxSharingOrderDto sharingOrderDto, WxPayOrder payOrder) { | |||||
| if(EnumPayMchType.DIRECT.getCode().equals(payOrder.getMchType())){ | |||||
| throw new MallinkException(ErrorCode.SYS_PARAMETER_TYPE_ERROR.getCode(),"微信直连模式待开发"); | |||||
| } | |||||
| if(EnumYesOrNo.NO.getCode().equals(payOrder.getShare())){ | |||||
| throw new MallinkException(ErrorCode.SYS_PARAMETER_TYPE_ERROR.getCode(),"微信不分账"); | |||||
| } | |||||
| return null; | |||||
| } | |||||
| @Override | @Override | ||||
| public WxProfitSharingReceiver getReceiver(TenantEntity tenantEntity, Long merchantId, Integer ttPayWay,Integer mchType) { | public WxProfitSharingReceiver getReceiver(TenantEntity tenantEntity, Long merchantId, Integer ttPayWay,Integer mchType) { | ||||
| return null; | return null; | ||||
| @@ -344,58 +344,6 @@ public class WxPayShareService extends PayShareBaseAdapterService{ | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| @Override | |||||
| public ResultData handerSharingOrder(WxPayOrder payOrder, WxProfitSharingOrder sharingOrder) { | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_TYPE_ERROR.getCode(),"微信分账无需处理"); | |||||
| } | |||||
| @Override | |||||
| public WxProfitSharingOrder createSharingOrder(WxSharingOrderDto sharingOrderDto,WxPayOrder payOrder) { | |||||
| if(EnumPayMchType.DIRECT.getCode().equals(payOrder.getMchType())){ | |||||
| throw new MallinkException(ErrorCode.SYS_PARAMETER_TYPE_ERROR.getCode(),"微信支付2.0直连模式待开发"); | |||||
| } | |||||
| if(EnumYesOrNo.NO.getCode().equals(payOrder.getShare())){ | |||||
| throw new MallinkException(ErrorCode.SYS_PARAMETER_TYPE_ERROR.getCode(),"微信未开启分账"); | |||||
| } | |||||
| //是否已创建分账订单 | |||||
| WxProfitSharingOrder record = new WxProfitSharingOrder(); | |||||
| record.updateTenantInfo(sharingOrderDto); | |||||
| record.setOrderId(sharingOrderDto.getOrderId()); | |||||
| record.setSingleOrderId(sharingOrderDto.getSingleOrderId()); | |||||
| record = wxProfitSharingOrderMapper.selectOne(new QueryWrapper(record)); | |||||
| if (record == null) { | |||||
| //创建分账订单 | |||||
| Date currentDate = new Date(); | |||||
| record = new WxProfitSharingOrder(); | |||||
| final IdWorker idworker = IdWorker.get(); | |||||
| record.setId(idworker.nextId()); | |||||
| record.updateTenantInfo(sharingOrderDto); | |||||
| record.setTransactionId(sharingOrderDto.getTransactionId()); | |||||
| record.setOrderId(sharingOrderDto.getOrderId()); | |||||
| record.setSingleOrderId(sharingOrderDto.getSingleOrderId()); | |||||
| record.setSingleOrderAmount(sharingOrderDto.getSingleOrderAmount()); | |||||
| record.setPayAmount(sharingOrderDto.getPayAmount()); | |||||
| record.setMerchantId(sharingOrderDto.getMerchantId()); | |||||
| record.setSharingStatus(this.getSharingOrderInitialStatus()); | |||||
| record.setCreateTime(currentDate); | |||||
| record.setUpdateTime(currentDate); | |||||
| record.setPayTimeStart(sharingOrderDto.getPayTimeStart()); | |||||
| record.setPayTimeEnd(sharingOrderDto.getPayTimeEnd()); | |||||
| record.setType(sharingOrderDto.getType()); | |||||
| record.setPayMerchantId(sharingOrderDto.getPayMerchantId()); | |||||
| record.setPayMerchantMchId(sharingOrderDto.getPayMerchantMchId()); | |||||
| wxProfitSharingOrderMapper.insert(record); | |||||
| } | |||||
| WxProfitSharingReceiver psReceiver = getReceiver(sharingOrderDto, sharingOrderDto.getMerchantId(), null,payOrder.getMchType()); | |||||
| if (null != psReceiver) { | |||||
| List<WxProfitSharingReceiver> psReceiverList = new ArrayList<WxProfitSharingReceiver>(); | |||||
| psReceiverList.add(psReceiver); | |||||
| record.setReceivers(calReceiversAmount(sharingOrderDto, psReceiverList)); | |||||
| wxProfitSharingOrderMapper.updateById(record); | |||||
| } | |||||
| return record; | |||||
| } | |||||
| @Override | @Override | ||||
| public WxProfitSharingReceiver getReceiver(TenantEntity tenantEntity, Long merchantId, Integer ttPayWay,Integer mchType) { | public WxProfitSharingReceiver getReceiver(TenantEntity tenantEntity, Long merchantId, Integer ttPayWay,Integer mchType) { | ||||
| @@ -75,66 +75,7 @@ public class WxPayShareV3Service extends PayShareBaseAdapterService{ | |||||
| Integer realRateAmount = OrderHelper.getRealRateAmount(payAmount, payAccount); | Integer realRateAmount = OrderHelper.getRealRateAmount(payAmount, payAccount); | ||||
| return new PayShareCalculateAmount(payAmount,mallCharge,realRateAmount,0,systemAmount); | return new PayShareCalculateAmount(payAmount,mallCharge,realRateAmount,0,systemAmount); | ||||
| } | } | ||||
| @Override | |||||
| public WxProfitSharingOrder createSharingOrder(WxSharingOrderDto sharingOrderDto, WxPayOrder payOrder) { | |||||
| if(EnumYesOrNo.NO.getCode().equals(payOrder.getShare())){ | |||||
| throw new MallinkException(ErrorCode.SYS_PARAMETER_TYPE_ERROR.getCode(),"微信分账未开启"); | |||||
| } | |||||
| //是否已创建分账订单 | |||||
| WxProfitSharingOrder record = new WxProfitSharingOrder(); | |||||
| record.updateTenantInfo(sharingOrderDto); | |||||
| record.setOrderId(sharingOrderDto.getOrderId()); | |||||
| record.setSingleOrderId(sharingOrderDto.getSingleOrderId()); | |||||
| record = wxProfitSharingOrderMapper.selectOne(new QueryWrapper(record)); | |||||
| if (record == null) { | |||||
| //创建分账订单 | |||||
| Date currentDate = new Date(); | |||||
| record = new WxProfitSharingOrder(); | |||||
| final IdWorker idworker = IdWorker.get(); | |||||
| record.setId(idworker.nextId()); | |||||
| record.updateTenantInfo(sharingOrderDto); | |||||
| record.setTransactionId(sharingOrderDto.getTransactionId()); | |||||
| record.setOrderId(sharingOrderDto.getOrderId()); | |||||
| record.setSingleOrderId(sharingOrderDto.getSingleOrderId()); | |||||
| record.setSingleOrderAmount(sharingOrderDto.getSingleOrderAmount()); | |||||
| record.setPayAmount(sharingOrderDto.getPayAmount()); | |||||
| record.setMerchantId(sharingOrderDto.getMerchantId()); | |||||
| //直连模式, | |||||
| if (payOrder.getMchType() == EnumPayMchType.DIRECT.getCode()) { | |||||
| if (null == sharingOrderDto.getPayMerchantId()) { | |||||
| throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"直连模式当前订单的收款商户查询为空"); | |||||
| } | |||||
| if (StringUtils.isBlank(sharingOrderDto.getPayMerchantMchId())) { | |||||
| throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"直连模式当前订单的收款商户特约商户号进件信息查询为空"); | |||||
| } | |||||
| record.setPayMerchantId(sharingOrderDto.getPayMerchantId()); | |||||
| record.setPayMerchantMchId(sharingOrderDto.getPayMerchantMchId()); | |||||
| } | |||||
| record.setSharingStatus(this.getSharingOrderInitialStatus()); | |||||
| record.setCreateTime(currentDate); | |||||
| record.setUpdateTime(currentDate); | |||||
| record.setPayTimeStart(sharingOrderDto.getPayTimeStart()); | |||||
| record.setPayTimeEnd(sharingOrderDto.getPayTimeEnd()); | |||||
| record.setType(sharingOrderDto.getType()); | |||||
| wxProfitSharingOrderMapper.insert(record); | |||||
| } | |||||
| //总分模式 | |||||
| if (payOrder.getMchType() == EnumPayMchType.TOTAL.getCode()) { | |||||
| WxProfitSharingReceiver psReceiver = getReceiver(sharingOrderDto, sharingOrderDto.getMerchantId(), null,payOrder.getMchType()); | |||||
| if (null != psReceiver) { | |||||
| List<WxProfitSharingReceiver> psReceiverList = new ArrayList<WxProfitSharingReceiver>(); | |||||
| psReceiverList.add(psReceiver); | |||||
| record.setReceivers(calV3ReceiversAmount(sharingOrderDto, psReceiverList)); | |||||
| wxProfitSharingOrderMapper.updateById(record); | |||||
| } | |||||
| //直连的方式 | |||||
| }else if (payOrder.getMchType() == EnumPayMchType.DIRECT.getCode()) { | |||||
| } | |||||
| return record; | |||||
| } | |||||
| @Override | @Override | ||||
| public WxProfitSharingReceiver getReceiver(TenantEntity tenantEntity, Long merchantId, Integer ttPayWay,Integer mchType) { | public WxProfitSharingReceiver getReceiver(TenantEntity tenantEntity, Long merchantId, Integer ttPayWay,Integer mchType) { | ||||
| @@ -370,10 +311,6 @@ public class WxPayShareV3Service extends PayShareBaseAdapterService{ | |||||
| public int getOfficialCommission(WxOrder o, WxPayAccount payAccount) { | public int getOfficialCommission(WxOrder o, WxPayAccount payAccount) { | ||||
| return 0; | return 0; | ||||
| } | } | ||||
| @Override | |||||
| public ResultData handerSharingOrder(WxPayOrder payOrder, WxProfitSharingOrder sharingOrder) { | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_TYPE_ERROR.getCode(),"微信分账无需处理"); | |||||
| } | |||||
| } | } | ||||