| @@ -221,13 +221,14 @@ public class CouponOrderExpiringSchedule { | |||||
| wxSharingOrderDto.setPayTimeEnd(wxPayOrder.getPayTimeEnd()); | wxSharingOrderDto.setPayTimeEnd(wxPayOrder.getPayTimeEnd()); | ||||
| wxSharingOrderDto.updateTenantInfo(wxPayOrder); | wxSharingOrderDto.updateTenantInfo(wxPayOrder); | ||||
| wxSharingOrderDto.setTransactionId(wxPayOrder.getTransactionId()); | wxSharingOrderDto.setTransactionId(wxPayOrder.getTransactionId()); | ||||
| if (wxPayOrder.getChildOrderShare(co.getOrderId()).getRateAmount() != null) { | |||||
| // 实际分账金额为 分账金额 + 通道费差 | |||||
| wxSharingOrderDto.setShareAmount(wxPayOrder.getChildOrderShare(co.getOrderId()).getShareAmount()+wxPayOrder.getChildOrderShare(co.getOrderId()).getRateAmount()); | |||||
| } else { | |||||
| // 未设置通道费差 | |||||
| wxSharingOrderDto.setShareAmount(wxPayOrder.getChildOrderShare(co.getOrderId()).getShareAmount()); | |||||
| } | |||||
| // if (wxPayOrder.getChildOrderShare(co.getOrderId()).getRateAmount() != null) { | |||||
| // // 实际分账金额为 分账金额 + 通道费差 | |||||
| // wxSharingOrderDto.setShareAmount(wxPayOrder.getChildOrderShare(co.getOrderId()).getShareAmount()+wxPayOrder.getChildOrderShare(co.getOrderId()).getRateAmount()); | |||||
| // } else { | |||||
| // // 未设置通道费差 | |||||
| // wxSharingOrderDto.setShareAmount(wxPayOrder.getChildOrderShare(co.getOrderId()).getShareAmount()); | |||||
| // } | |||||
| wxSharingOrderDto.setShareAmount(wxPayOrder.getPayAmount()); | |||||
| wxProfitSharingOrderService.finishSharingOrder(wxSharingOrderDto,wxPayOrder.getPayVendor(),wxPayOrder.getShare()); | wxProfitSharingOrderService.finishSharingOrder(wxSharingOrderDto,wxPayOrder.getPayVendor(),wxPayOrder.getShare()); | ||||
| } | } | ||||
| @@ -91,6 +91,26 @@ public class SharingOrderRedoSchedule { | |||||
| }); | }); | ||||
| } | } | ||||
| wxProfitSharingOrder.setType(EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE_FINISH.getCode()); | |||||
| wxProfitSharingOrder.setSharingStatus(EnumProfitSharingOrderStatus.PROFIT_SHARING_APPLY_FAILED.getCode()); | |||||
| list = wxProfitSharingOrderMapper.findList(wxProfitSharingOrder); | |||||
| if (null != list) { | |||||
| list.stream().forEach(sharingOrder->{ | |||||
| try { | |||||
| ResultData result = wxProfitSharingOrderService.redoFinishSharingOrder(sharingOrder); | |||||
| if (result.code != ResultData.SUCCESS) { | |||||
| logger.error("分账重试失败:" + EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE_FINISH.getMessage() | |||||
| + " ID:" +sharingOrder.getId() | |||||
| + " RES:" + result.message); | |||||
| } | |||||
| } catch (Exception e){ | |||||
| logger.error("分账重试失败:" + EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE_FINISH.getMessage() | |||||
| + " ID:" +sharingOrder.getId() | |||||
| + " MSG:" + e.getMessage()); | |||||
| } | |||||
| }); | |||||
| } | |||||
| } | } | ||||
| @@ -9,7 +9,7 @@ public enum EnumProfitSharingOrderType { | |||||
| PROFIT_SHARING_MULTI_FINISH(2, "多次分账完结"), | PROFIT_SHARING_MULTI_FINISH(2, "多次分账完结"), | ||||
| PROFIT_SHARING_SINGLE_FINISH(3, "单次分账完结"), | PROFIT_SHARING_SINGLE_FINISH(3, "单次分账完结"), | ||||
| PROFIT_SHARING_DOUYIN_SINGLE(10, "抖音自主分账"),//不分账无法解冻资金 | |||||
| // PROFIT_SHARING_DOUYIN_SINGLE(10, "抖音自主分账"),//不分账无法解冻资金 | |||||
| ; | ; | ||||
| public static EnumProfitSharingOrderType getEnum(Integer code) { | public static EnumProfitSharingOrderType getEnum(Integer code) { | ||||
| @@ -28,6 +28,11 @@ public interface WxProfitSharingOrderService { | |||||
| */ | */ | ||||
| ResultData redoSharingOrder(WxProfitSharingOrder sharingOrder); | ResultData redoSharingOrder(WxProfitSharingOrder sharingOrder); | ||||
| /** | |||||
| * 分账完结重试 | |||||
| */ | |||||
| ResultData redoFinishSharingOrder(WxProfitSharingOrder sharingOrder); | |||||
| /** | /** | ||||
| * 查询分账订单 | * 查询分账订单 | ||||
| */ | */ | ||||
| @@ -223,6 +223,31 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ | |||||
| return new ResultData(shareResult.getData()); | return new ResultData(shareResult.getData()); | ||||
| } | } | ||||
| @Override | |||||
| public ResultData redoFinishSharingOrder(WxProfitSharingOrder sharingOrder) { | |||||
| if (!sharingOrder.getType().equals(EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE_FINISH.getCode())) { | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_ERROR); | |||||
| } | |||||
| WxProfitShareAppInoDto dto = getAppinfo(sharingOrder); | |||||
| WxAppinfo appInfo = dto.getAppinfo(); | |||||
| WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId()); | |||||
| PayShareResult shareResult = payServiceFactory.getPayShareAdapterService(dto.getPayWay()).noReciverShare(appInfo,payAccount,sharingOrder,sharingOrder.getTransactionId(),sharingOrder.getPayAmount()); | |||||
| if (!shareResult.isSuccess()) { | |||||
| sharingOrder.setSharingStatus(shareResult.getCode()); | |||||
| sharingOrder.setErrorMsg("REDO:"+shareResult.getMsg()); | |||||
| sharingOrder.setUpdateTime(new Date()); | |||||
| wxProfitSharingOrderMapper.updateById(sharingOrder); | |||||
| return new ResultData(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(),sharingOrder.getErrorMsg()); | |||||
| } | |||||
| sharingOrder.setSharingOrderNo(shareResult.getShareOrderNo()); | |||||
| sharingOrder.setSharingStatus(EnumProfitSharingOrderStatus.PROFIT_SHARING_ACCEPTED.getCode()); | |||||
| sharingOrder.setErrorMsg("REDO:重试分账成功"); | |||||
| sharingOrder.setUpdateTime(new Date()); | |||||
| wxProfitSharingOrderMapper.updateById(sharingOrder); | |||||
| 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,Integer payWay,Integer share) { | public ResultData createSharingOrder(WxSharingOrderDto sharingOrderDto,Integer payWay,Integer share) { | ||||
| @@ -265,10 +290,11 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ | |||||
| sharingOrderDto.setType(EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE_FINISH.getCode()); | sharingOrderDto.setType(EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE_FINISH.getCode()); | ||||
| if (sharingOrderDto.getType().equals(EnumProfitSharingOrderType.PROFIT_SHARING_MULTI.getCode())) | if (sharingOrderDto.getType().equals(EnumProfitSharingOrderType.PROFIT_SHARING_MULTI.getCode())) | ||||
| return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_UNKNOWN); | return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_UNKNOWN); | ||||
| if(sharingOrderDto.getRateAmount() != null) { | |||||
| // 分账完结 | |||||
| sharingOrderDto.setShareAmount(sharingOrderDto.getPayAmount()+sharingOrderDto.getRateAmount()); | |||||
| } | |||||
| // if(sharingOrderDto.getRateAmount() != null) { | |||||
| // // 分账完结 | |||||
| // sharingOrderDto.setShareAmount(sharingOrderDto.getPayAmount()+sharingOrderDto.getRateAmount()); | |||||
| // } | |||||
| sharingOrderDto.setShareAmount(sharingOrderDto.getPayAmount()); | |||||
| return finishSharingOrder(sharingOrderDto,payWay,share); | return finishSharingOrder(sharingOrderDto,payWay,share); | ||||
| } | } | ||||
| //计算分账账户合法性 | //计算分账账户合法性 | ||||
| @@ -59,7 +59,7 @@ public class TtPayShareService extends PayShareBaseAdapterService{ | |||||
| if (settleResult.isSuccess()) { | if (settleResult.isSuccess()) { | ||||
| return new PayShareResult(true, null,"success", settleResult,settleResult.getSettleNo()); | return new PayShareResult(true, null,"success", settleResult,settleResult.getSettleNo()); | ||||
| }else{ | }else{ | ||||
| return new PayShareResult(false, EnumProfitSharingOrderStatus.PROFIT_SHARING_REQ_FAILED.getCode(),settleResult.getMsg(), null,null); | |||||
| return new PayShareResult(false, EnumProfitSharingOrderStatus.PROFIT_SHARING_APPLY_FAILED.getCode(),settleResult.getMsg(), null,null); | |||||
| } | } | ||||
| } | } | ||||
| @@ -533,6 +533,7 @@ public final class Utility { | |||||
| } | } | ||||
| public static Date getDateFromString(String timeEnd) throws ParseException { | public static Date getDateFromString(String timeEnd) throws ParseException { | ||||
| timeEnd = timeEnd.replaceAll("[[\\s-:punct:]]",""); | |||||
| SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); | SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); | ||||
| return sdf.parse(timeEnd); | return sdf.parse(timeEnd); | ||||
| } | } | ||||