diff --git a/jsowell-admin/src/main/java/com/jsowell/service/SplitBillService.java b/jsowell-admin/src/main/java/com/jsowell/service/SplitBillService.java index 5435a3fa8..1727a01ff 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/SplitBillService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/SplitBillService.java @@ -126,6 +126,11 @@ public class SplitBillService { } + /** + * 重试运营商分账V2 + * @param dto + * @throws BaseAdaPayException + */ public void retryMerchantSplitV2(QueryOrderSplitRecordDTO dto) throws BaseAdaPayException { String startTime = dto.getStartTime(); String endTime = dto.getEndTime(); @@ -147,36 +152,64 @@ public class SplitBillService { } // 判断订单是否已经成功分账, 将未分账的订单进行筛选、汇总 - List unSplitPaymentIdList = adapayService.getSplitInfoByPaymentIdList(paymentIdList); - if (CollectionUtils.isEmpty(unSplitPaymentIdList)) { - log.info("重试运营商分账-所有订单都已经成功分账"); + Map> splitInfoMap = adapayService.getSplitInfoMapByPaymentIdList(paymentIdList); + if (splitInfoMap == null || splitInfoMap.isEmpty()) { return; } - // 将 paymentIdList 与 recordList 进行匹配,筛选出 orderCodeList - List orderCodeList = Lists.newArrayList(); - for (String unSplitPaymentId : unSplitPaymentIdList) { - OrderPaymentDetailVO orderPaymentDetailVO = paymentIdMap.get(unSplitPaymentId); - if (orderPaymentDetailVO != null) { - orderCodeList.add(orderPaymentDetailVO.getOrderCode()); + // 未分帐paymentId列表 + List unSplitPaymentIdList = splitInfoMap.get("unSplitList"); + // 已分帐paymentId列表 + List splitPaymentIdList = splitInfoMap.get("splitList"); + + /* + 如果未分帐paymentId列表不为空,则循环每个paymentId进行debugOrder + */ + if (CollectionUtils.isNotEmpty(unSplitPaymentIdList)) { + // 将 paymentIdList 与 recordList 进行匹配,筛选出 orderCodeList + List orderCodeList = Lists.newArrayList(); + for (String unSplitPaymentId : unSplitPaymentIdList) { + OrderPaymentDetailVO orderPaymentDetailVO = paymentIdMap.get(unSplitPaymentId); + if (orderPaymentDetailVO != null) { + orderCodeList.add(orderPaymentDetailVO.getOrderCode()); + } + } + + // 调用 debugOrder 接口进行重新分账 + for (String orderCode : orderCodeList) { + DebugOrderDTO debugOrderDTO = new DebugOrderDTO(); + debugOrderDTO.setOrderCode(orderCode); + debugOrderDTO.setReSplitFlag(Constants.ONE); + + try { + Map stringObjectMap = tempService.debugOrder(debugOrderDTO); + log.info("重试运营商分账-debugOrder接口调用成功, param:{}, result:{}", debugOrderDTO, stringObjectMap); + } catch (Exception e) { + log.error("重试运营商分账-debugOrder接口调用异常, param:{}", debugOrderDTO, e); + } } } - // 调用 debugOrder 接口进行重新分账 - for (String orderCode : orderCodeList) { - DebugOrderDTO debugOrderDTO = new DebugOrderDTO(); - debugOrderDTO.setOrderCode(orderCode); - debugOrderDTO.setReSplitFlag(Constants.ONE); - - try { - Map stringObjectMap = tempService.debugOrder(debugOrderDTO); - log.info("重试运营商分账-debugOrder接口调用成功, param:{}, result:{}", debugOrderDTO, stringObjectMap); - } catch (Exception e) { - log.error("重试运营商分账-debugOrder接口调用异常, param:{}", debugOrderDTO, e); + /* + 如果已分帐paymentId列表不为空,则循环每个paymentId进行校验OrderSplitRecord数据是否正确 + */ + if (CollectionUtils.isNotEmpty(splitPaymentIdList)) { + // 将 paymentIdList 与 recordList 进行匹配,筛选出 orderCodeList + List orderCodeList = Lists.newArrayList(); + for (String unSplitPaymentId : splitPaymentIdList) { + OrderPaymentDetailVO orderPaymentDetailVO = paymentIdMap.get(unSplitPaymentId); + if (orderPaymentDetailVO != null) { + orderCodeList.add(orderPaymentDetailVO.getOrderCode()); + } + } + for (String orderCode : orderCodeList) { + tempService.checkOrderSplitRecord(orderCode); } } - // 重新计算站点日报和运营商日报 + /* + 重新计算站点日报和运营商日报 + */ // 获取日期区间内所有日期 List dateList = DateUtils.getAllDatesInTheDateRange(startTime, endTime); stationIdSet.parallelStream().forEach(stationId -> { @@ -201,6 +234,5 @@ public class SplitBillService { } } - } } diff --git a/jsowell-admin/src/main/java/com/jsowell/service/TempService.java b/jsowell-admin/src/main/java/com/jsowell/service/TempService.java index 360f1e6e8..24c3afdae 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/TempService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/TempService.java @@ -1422,7 +1422,35 @@ public class TempService { .orderBasicInfo(orderBasicInfo) .build(); - orderBasicInfoService.splittingMethodTemp(afterSettleOrderDTO); + orderBasicInfoService.checkOrUpdateOrderSplitRecord(afterSettleOrderDTO); + } + + /** + * 检查订单分账记录 + * @param orderCode + */ + public void checkOrderSplitRecord(String orderCode) { + // 根据订单号查询订单信息 + OrderBasicInfo orderBasicInfo = orderBasicInfoService.getOrderInfoByOrderCode(orderCode); + OrderDetail orderDetail = orderBasicInfoService.getOrderDetailByOrderCode(orderCode); + + // 组装after参数 + AfterSettleOrderDTO afterSettleOrderDTO = AfterSettleOrderDTO.builder() + .orderCode(orderBasicInfo.getOrderCode()) + .merchantId(orderBasicInfo.getMerchantId()) + .stationId(orderBasicInfo.getStationId()) + .orderPayAmount(orderBasicInfo.getPayAmount()) // 支付金额 + .orderConsumeAmount(orderBasicInfo.getOrderAmount()) // 消费金额 + .orderSettleAmount(orderBasicInfo.getSettleAmount()) // 结算金额 + .orderElectricityAmount(orderDetail.getTotalElectricityAmount()) // 电费金额 + .orderElectricityDiscountAmount(orderDetail.getDiscountElectricityAmount()) // 电费折扣金额 + .orderServiceAmount(orderDetail.getTotalServiceAmount()) // 服务费金额 + .orderServiceDiscountAmount(orderDetail.getDiscountServiceAmount()) // 服务费折扣金额 + .orderRefundAmount(orderBasicInfo.getRefundAmount()) // 退款金额 + .orderBasicInfo(orderBasicInfo) + .build(); + + orderBasicInfoService.checkOrUpdateOrderSplitRecord(afterSettleOrderDTO); } } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderBasicInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderBasicInfoService.java index 5724820fc..2317f13b0 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderBasicInfoService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderBasicInfoService.java @@ -618,4 +618,6 @@ public interface OrderBasicInfoService{ * @return */ List getSplitOrders(QueryOrderSplitRecordDTO dto); + + void checkOrUpdateOrderSplitRecord(AfterSettleOrderDTO afterSettleOrderDTO); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderSplitRecordService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderSplitRecordService.java index 5f79c9dfa..fe75a4477 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderSplitRecordService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderSplitRecordService.java @@ -46,7 +46,21 @@ public interface OrderSplitRecordService { */ void saveOrderSplitRecord(PaymentConfirmParam param, PaymentConfirmResponse response, List stationSplitConfigList, OrderInfoDetailVO orderInfoDetailVO); - void saveOrderSplitRecordTemp(PaymentConfirmParam param, PaymentConfirmInfo response, List splitDataList, OrderInfoDetailVO orderInfoDetailVO); + /** + * 批量保存订单分账记录 + */ + void saveOrderSplitRecord(PaymentConfirmParam param, PaymentConfirmInfo response, List splitDataList, OrderInfoDetailVO orderInfoDetailVO); + + /** + * 生成订单分账记录 + * 用于对比使用 + * @param param + * @param response + * @param splitDataList + * @param orderInfoDetailVO + * @return + */ + List generatedOrderSplitRecordList(PaymentConfirmParam param, PaymentConfirmInfo response, List splitDataList, OrderInfoDetailVO orderInfoDetailVO); List selectByOrderCode(String orderCode); @@ -124,5 +138,10 @@ public interface OrderSplitRecordService { * @return */ int deleteOrderSplitRecord(String orderCode); + + /** + * 根据订单号查询订单分账记录 + */ + List queryOrderSplitRecordByOrderCode(String orderCode); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java index a7637b6f2..a671a2348 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java @@ -2195,7 +2195,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService { } /** - * 此方法只用来更新OrderSplitRecord + * 此方法只用来更新OrderSplitRecord,这个方法不管是否一致都会更新,新方法正在开发,后面换成新方法 * @param afterSettleOrderDTO * @return */ @@ -2285,7 +2285,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService { orderSplitRecordService.deleteOrderSplitRecord(orderCode); // 保存订单分账记录 OrderInfoDetailVO orderInfoDetailVO = getOrderInfoDetailVO(orderCode); - orderSplitRecordService.saveOrderSplitRecordTemp(param, paymentConfirmInfo, splitDataList, orderInfoDetailVO); + orderSplitRecordService.saveOrderSplitRecord(param, paymentConfirmInfo, splitDataList, orderInfoDetailVO); return null; } @@ -5758,5 +5758,99 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService { dto.setEndTime(DateUtils.parseToEndOfDay(dto.getEndTime())); return orderBasicInfoMapper.getSplitOrders(dto); } + + /** + * 校验或更新订单分账信息 + * 此方法重新生成订单分账记录,与数据库中记录对比,如果不一致,则更新 + */ + @Override + public void checkOrUpdateOrderSplitRecord(AfterSettleOrderDTO afterSettleOrderDTO) { + logger.info("处理OrderSplitRecord中值为0的数据, orderCode:{}, 分账金额:{}", + afterSettleOrderDTO.getOrderCode(), afterSettleOrderDTO.getOrderSettleAmount()); + + // 结算金额 + BigDecimal orderSettleAmount = afterSettleOrderDTO.getOrderSettleAmount(); + // 站点id + String stationId = afterSettleOrderDTO.getStationId(); + // 订单编号 + String orderCode = afterSettleOrderDTO.getOrderCode(); + // 订单信息 + OrderBasicInfo orderBasicInfo = afterSettleOrderDTO.getOrderBasicInfo(); + // 保险金额(有默认值 0.00) + BigDecimal insuranceAmount = orderBasicInfo.getInsuranceAmount(); + + // 订单是否需要分账, 结算金额必须大于0 + if (orderSettleAmount == null || orderSettleAmount.compareTo(BigDecimal.ZERO) <= 0) { + logger.info("realTimeOrderSplit-订单[{}]结算金额[{}]必须大于0", afterSettleOrderDTO.getOrderCode(), orderSettleAmount); + return; + } + + // 获取订单待分账信息 + List paymentInfos = getOrderPaymentInfoList(afterSettleOrderDTO); + if (CollectionUtils.isEmpty(paymentInfos)) { + logger.info("realTimeOrderSplit-订单[{}]没有待分账的支付记录", afterSettleOrderDTO.getOrderCode()); + return; + } + + // 根据站点id查询分账配置(如果未配置则初始化) + List stationSplitConfigList = stationSplitConfigService.queryByStationIdWithInit(stationId); + + // 查字典是否开启收取平台支持服务费 1-开启; 0-关闭 + String dictValue = DictUtils.getDictValue("platform_service_flag", "status"); + if (StringUtils.equals(dictValue, Constants.ONE)) { + // 开启收取平台支持服务费, 更新参与分账的账户列表 + updateSplitConfigList(stationId, stationSplitConfigList, orderCode); + } + + // 计算每个参与分账的用户, 应分多少钱 + List splitDataList = calculationSplitDataList(stationSplitConfigList, afterSettleOrderDTO); + List divMemberList = transformDivMemberList(splitDataList); + logger.info("realTimeOrderSplit-订单:{}, 分账信息:{}", orderCode, JSON.toJSONString(splitDataList)); + + // 执行分账 + if (CollectionUtils.isEmpty(divMemberList)) { + logger.info("realTimeOrderSplit-订单[{}]分账信息为空", orderCode); + return; + } + + String paymentId = paymentInfos.get(0).getPaymentId(); // 支付id + String merchantId = afterSettleOrderDTO.getMerchantId(); // 运营商id + // 根据运营商id 查询appId + String appId = pileMerchantInfoService.queryAppIdByMerchantId(merchantId); + PaymentConfirmParam param = PaymentConfirmParam.builder() + .paymentId(paymentId) + .divMemberList(divMemberList) + .confirmAmt(orderSettleAmount.add(insuranceAmount)) // 订单结算金额 + 保险金额 + .orderCode(orderCode) + .wechatAppId(appId) + .build(); + // PaymentConfirmResponse paymentConfirmRequest = adapayService.createPaymentConfirmRequest(param); + + // 查询支付确认id + QueryPaymentConfirmDTO queryPaymentConfirmDTO = new QueryPaymentConfirmDTO(); + queryPaymentConfirmDTO.setPaymentId(paymentId); + queryPaymentConfirmDTO.setWechatAppId(Constants.DEFAULT_APP_ID); + QueryPaymentConfirmDetailResponse response = adapayService.queryPaymentConfirmList(queryPaymentConfirmDTO); + + String paymentConfirmId = response.getPaymentConfirms().get(0).getId(); + + // 查询支付确认id + QueryPaymentConfirmDTO dto = new QueryPaymentConfirmDTO(); + dto.setPaymentConfirmId(paymentConfirmId); + dto.setWechatAppId(Constants.DEFAULT_APP_ID); + // 查询分账信息 + PaymentConfirmInfo paymentConfirmInfo = adapayService.queryPaymentConfirmDetail(dto); + + // 获取计算出来的订单分账记录 + OrderInfoDetailVO orderInfoDetailVO = getOrderInfoDetailVO(orderCode); + List orderSplitRecords = orderSplitRecordService.generatedOrderSplitRecordList(param, paymentConfirmInfo, splitDataList, orderInfoDetailVO); + logger.info("realTimeOrderSplit-订单:{}, 获取计算出来的订单分账记录:{}", orderCode, JSON.toJSONString(orderSplitRecords)); + // 查询数据库中该订单的分账记录 + List splitRecordInfoVOS = orderSplitRecordService.queryOrderSplitRecordByOrderCode(orderCode); + logger.info("realTimeOrderSplit-订单:{}, 数据库中的订单分账记录:{}", orderCode, JSON.toJSONString(splitRecordInfoVOS)); + + // 对比分账记录 + + } } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderSplitRecordServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderSplitRecordServiceImpl.java index f4e90b596..527fd49f3 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderSplitRecordServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderSplitRecordServiceImpl.java @@ -1,6 +1,6 @@ package com.jsowell.pile.service.impl; -import com.alibaba.fastjson2.JSON; +import com.alibaba.druid.support.json.JSONUtils; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.google.common.collect.Lists; @@ -63,6 +63,47 @@ public class OrderSplitRecordServiceImpl implements OrderSplitRecordService { return orderSplitRecordMapper.batchInsert(list); } + /** + * 订单分账记录转换 + */ + private List transformationOrderSplitRecordList(BigDecimal settleAmount, String feeAmt, + String paymentId, String paymentConfirmId, + List splitDataList, OrderInfoDetailVO orderInfoDetailVO) { + // 订单分账记录集合 + List resultList = Lists.newArrayList(); + for (SplitData splitData : splitDataList) { + OrderSplitRecord orderSplitRecord = new OrderSplitRecord(); + orderSplitRecord.setOrderCode(orderInfoDetailVO.getOrderCode()); + orderSplitRecord.setStatus(AdapayStatusEnum.SUCCEEDED.getValue()); + orderSplitRecord.setSettleAmount(settleAmount); + orderSplitRecord.setTradeDate(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, orderInfoDetailVO.getSettlementTime())); // 订单结算日期 yyyy-MM-dd + orderSplitRecord.setMerchantId(orderInfoDetailVO.getMerchantId()); + orderSplitRecord.setStationId(orderInfoDetailVO.getStationId()); + orderSplitRecord.setElectricityAmount(orderInfoDetailVO.getTotalElectricityAmount()); + orderSplitRecord.setServiceAmount(orderInfoDetailVO.getTotalServiceAmount()); + orderSplitRecord.setAdapayMemberId(splitData.getMemberId()); + orderSplitRecord.setPaymentId(paymentId); + orderSplitRecord.setPaymentConfirmId(paymentConfirmId); + orderSplitRecord.setElectricitySplitRatio(splitData.getElecRatio() != null ? splitData.getElecRatio() : BigDecimal.ZERO); + orderSplitRecord.setElectricitySplitAmount(splitData.getElecAmount() != null ? splitData.getElecAmount() : BigDecimal.ZERO); + orderSplitRecord.setServiceSplitRatio(splitData.getServiceRatio() != null ? splitData.getServiceRatio() : BigDecimal.ZERO); + orderSplitRecord.setServiceSplitAmount(splitData.getServiceAmount() != null ? splitData.getServiceAmount() : BigDecimal.ZERO); + orderSplitRecord.setRemark(""); + orderSplitRecord.setDelFlag(DelFlagEnum.NORMAL.getValue()); + orderSplitRecord.setCreateBy(Constants.SYSTEM); + orderSplitRecord.setCreateTime(DateUtils.getNowDate()); + // 如果是手续费承担方, 保存feeAmt, 否则保存0 + if (StringUtils.equals(splitData.getFeeFlag(), Constants.Y)) { + orderSplitRecord.setFeeAmount(new BigDecimal(feeAmt)); + } else { + orderSplitRecord.setFeeAmount(BigDecimal.ZERO); + } + resultList.add(orderSplitRecord); + } + log.info("transformationOrderSplitRecordList-订单分账记录转换完成:{}", JSONUtils.toJSONString(resultList)); + return resultList; + } + @Override public void saveOrderSplitRecord(PaymentConfirmParam param, PaymentConfirmResponse response, List splitDataList, OrderInfoDetailVO orderInfoDetailVO) { // 判断入参 @@ -75,52 +116,22 @@ public class OrderSplitRecordServiceImpl implements OrderSplitRecordService { } String paymentConfirmId = response.getId(); // 支付确认id String feeAmt = response.getFee_amt(); // 手续费 - String orderCode = param.getOrderCode(); // 订单号 BigDecimal settleAmount = param.getConfirmAmt(); // 结算金额 String paymentId = param.getPaymentId(); // 支付id - List list = Lists.newArrayList(); // 订单分账记录集合 - for (SplitData splitData : splitDataList) { - OrderSplitRecord orderSplitRecord = new OrderSplitRecord(); - orderSplitRecord.setOrderCode(orderCode); - orderSplitRecord.setStatus(AdapayStatusEnum.SUCCEEDED.getValue()); - orderSplitRecord.setSettleAmount(settleAmount); -// orderSplitRecord.setTradeDate(DateUtils.getDate()); // 订单结算日期 yyyy-MM-dd - orderSplitRecord.setTradeDate(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, orderInfoDetailVO.getSettlementTime())); // 订单结算日期 yyyy-MM-dd - orderSplitRecord.setMerchantId(orderInfoDetailVO.getMerchantId()); - orderSplitRecord.setStationId(orderInfoDetailVO.getStationId()); - orderSplitRecord.setElectricityAmount(orderInfoDetailVO.getTotalElectricityAmount()); - orderSplitRecord.setServiceAmount(orderInfoDetailVO.getTotalServiceAmount()); - orderSplitRecord.setAdapayMemberId(splitData.getMemberId()); - orderSplitRecord.setPaymentId(paymentId); - orderSplitRecord.setPaymentConfirmId(paymentConfirmId); - orderSplitRecord.setElectricitySplitRatio(splitData.getElecRatio() != null ? splitData.getElecRatio() : BigDecimal.ZERO); - orderSplitRecord.setElectricitySplitAmount(splitData.getElecAmount() != null ? splitData.getElecAmount() : BigDecimal.ZERO); - orderSplitRecord.setServiceSplitRatio(splitData.getServiceRatio() != null ? splitData.getServiceRatio() : BigDecimal.ZERO); - orderSplitRecord.setServiceSplitAmount(splitData.getServiceAmount() != null ? splitData.getServiceAmount() : BigDecimal.ZERO); - orderSplitRecord.setRemark(""); - orderSplitRecord.setDelFlag(DelFlagEnum.NORMAL.getValue()); - orderSplitRecord.setCreateBy(Constants.SYSTEM); - orderSplitRecord.setCreateTime(DateUtils.getNowDate()); - // 如果是手续费承担方, 保存feeAmt, 否则保存0 - if (StringUtils.equals(splitData.getFeeFlag(), Constants.Y)) { - orderSplitRecord.setFeeAmount(new BigDecimal(feeAmt)); - } else { - orderSplitRecord.setFeeAmount(BigDecimal.ZERO); - } - list.add(orderSplitRecord); - } + List list = transformationOrderSplitRecordList(settleAmount, feeAmt, paymentId, paymentConfirmId, splitDataList, orderInfoDetailVO); // 订单分账记录集合 this.batchInsert(list); } /** * 保存订单分账记录。临时保存 + * generated * @param param * @param response * @param splitDataList * @param orderInfoDetailVO */ @Override - public void saveOrderSplitRecordTemp(PaymentConfirmParam param, PaymentConfirmInfo response, List splitDataList, OrderInfoDetailVO orderInfoDetailVO) { + public void saveOrderSplitRecord(PaymentConfirmParam param, PaymentConfirmInfo response, List splitDataList, OrderInfoDetailVO orderInfoDetailVO) { // 判断入参 if (param == null || response == null || CollectionUtils.isEmpty(param.getDivMemberList()) || orderInfoDetailVO == null) { return; @@ -131,44 +142,36 @@ public class OrderSplitRecordServiceImpl implements OrderSplitRecordService { } String paymentConfirmId = response.getId(); // 支付确认id String feeAmt = response.getFeeAmt(); // 手续费 - String orderCode = param.getOrderCode(); // 订单号 BigDecimal settleAmount = param.getConfirmAmt(); // 结算金额 String paymentId = param.getPaymentId(); // 支付id - List list = Lists.newArrayList(); // 订单分账记录集合 - for (SplitData splitData : splitDataList) { - OrderSplitRecord orderSplitRecord = new OrderSplitRecord(); - orderSplitRecord.setOrderCode(orderCode); - orderSplitRecord.setStatus(AdapayStatusEnum.SUCCEEDED.getValue()); - orderSplitRecord.setSettleAmount(settleAmount); -// orderSplitRecord.setTradeDate(DateUtils.getDate()); // 订单结算日期 yyyy-MM-dd - orderSplitRecord.setTradeDate(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, orderInfoDetailVO.getSettlementTime())); // 订单结算日期 yyyy-MM-dd - orderSplitRecord.setMerchantId(orderInfoDetailVO.getMerchantId()); - orderSplitRecord.setStationId(orderInfoDetailVO.getStationId()); - orderSplitRecord.setElectricityAmount(orderInfoDetailVO.getTotalElectricityAmount()); - orderSplitRecord.setServiceAmount(orderInfoDetailVO.getTotalServiceAmount()); - orderSplitRecord.setAdapayMemberId(splitData.getMemberId()); - orderSplitRecord.setPaymentId(paymentId); - orderSplitRecord.setPaymentConfirmId(paymentConfirmId); - orderSplitRecord.setElectricitySplitRatio(splitData.getElecRatio() != null ? splitData.getElecRatio() : BigDecimal.ZERO); - orderSplitRecord.setElectricitySplitAmount(splitData.getElecAmount() != null ? splitData.getElecAmount() : BigDecimal.ZERO); - orderSplitRecord.setServiceSplitRatio(splitData.getServiceRatio() != null ? splitData.getServiceRatio() : BigDecimal.ZERO); - orderSplitRecord.setServiceSplitAmount(splitData.getServiceAmount() != null ? splitData.getServiceAmount() : BigDecimal.ZERO); - orderSplitRecord.setRemark(""); - orderSplitRecord.setDelFlag(DelFlagEnum.NORMAL.getValue()); - orderSplitRecord.setCreateBy(Constants.SYSTEM); - orderSplitRecord.setCreateTime(DateUtils.getNowDate()); - // 如果是手续费承担方, 保存feeAmt, 否则保存0 - if (StringUtils.equals(splitData.getFeeFlag(), Constants.Y)) { - orderSplitRecord.setFeeAmount(new BigDecimal(feeAmt)); - } else { - orderSplitRecord.setFeeAmount(BigDecimal.ZERO); - } - list.add(orderSplitRecord); - } - log.info("保存:{}", JSON.toJSONString(list)); + List list = transformationOrderSplitRecordList(settleAmount, feeAmt, paymentId, paymentConfirmId, splitDataList, orderInfoDetailVO); // 订单分账记录集合 this.batchInsert(list); } + /** + * 生成订单分账记录列表,用于对比使用 + * @param param + * @param response + * @param splitDataList + * @param orderInfoDetailVO + */ + @Override + public List generatedOrderSplitRecordList(PaymentConfirmParam param, PaymentConfirmInfo response, List splitDataList, OrderInfoDetailVO orderInfoDetailVO) { + // 判断入参 + if (param == null || response == null || CollectionUtils.isEmpty(param.getDivMemberList()) || orderInfoDetailVO == null) { + return null; + } + // response中status为failed 不保存 + if (response.isFailed()) { + return null; + } + String paymentConfirmId = response.getId(); // 支付确认id + String feeAmt = response.getFeeAmt(); // 手续费 + BigDecimal settleAmount = param.getConfirmAmt(); // 结算金额 + String paymentId = param.getPaymentId(); // 支付id + return transformationOrderSplitRecordList(settleAmount, feeAmt, paymentId, paymentConfirmId, splitDataList, orderInfoDetailVO); // 订单分账记录集合 + } + @Override public List selectByOrderCode(String orderCode) { List orderSplitRecords = orderSplitRecordMapper.selectByOrderCode(orderCode); @@ -726,7 +729,10 @@ public class OrderSplitRecordServiceImpl implements OrderSplitRecordService { return orderSplitRecordMapper.deleteOrderSplitRecord(orderCode); } - + @Override + public List queryOrderSplitRecordByOrderCode(String orderCode) { + return orderSplitRecordMapper.selectByOrderCode(orderCode); + } /** * 根据汇付会员id查询分账汇总数据