From 8f7e3eaa94d487c50fb9e0f9fb3a09de874f712a Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Wed, 17 Jan 2024 16:35:03 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=B0=E5=BD=95=E9=80=80=E6=AC=BE=E9=87=91?= =?UTF-8?q?=E9=A2=9D=E5=88=B0=E8=AE=A2=E5=8D=95=E6=94=AF=E4=BB=98=E8=AE=B0?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/jsowell/service/TempService.java | 5 +-- .../pile/service/OrderPayRecordService.java | 6 +++ .../impl/OrderBasicInfoServiceImpl.java | 3 +- .../impl/OrderPayRecordServiceImpl.java | 42 +++++++++++++++++++ .../programlogic/AbstractProgramLogic.java | 27 +----------- .../DelayMerchantProgramLogic.java | 13 ++---- .../NotDelayMerchantProgramLogic.java | 2 +- .../jsowell/pile/vo/uniapp/UniAppOrderVO.java | 5 +++ 8 files changed, 61 insertions(+), 42 deletions(-) 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 cfbf09b26..3f8cb2a67 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/TempService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/TempService.java @@ -23,8 +23,6 @@ import com.jsowell.pile.dto.QueryOrderDTO; import com.jsowell.pile.dto.SettleOrderReportDTO; import com.jsowell.pile.mapper.OrderBasicInfoMapper; import com.jsowell.pile.service.*; -import com.jsowell.pile.service.programlogic.AbstractProgramLogic; -import com.jsowell.pile.service.programlogic.DelayMerchantProgramLogic; import com.jsowell.pile.vo.web.ClearingBillVO; import com.jsowell.pile.vo.web.OrderListVO; import com.jsowell.pile.vo.web.OrderPayDetailVO; @@ -428,8 +426,7 @@ public class TempService { BigDecimal settleAmount = orderBasicInfo.getSettleAmount(); OrderPayRecord record = orderPayRecordList.get(0); String deductionRecord = record.getDeductionRecord(); - AbstractProgramLogic orderLogic = new DelayMerchantProgramLogic(); - List paymentInfos = orderLogic.parseDeductionRecord(deductionRecord); + List paymentInfos = orderPayRecordService.parseDeductionRecord(deductionRecord); // 通过paymentId查询 分账记录 for (PaymentInfo paymentInfo : paymentInfos) { diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderPayRecordService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderPayRecordService.java index 3d1968449..42b8b6dd6 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderPayRecordService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderPayRecordService.java @@ -1,8 +1,10 @@ package com.jsowell.pile.service; +import com.jsowell.adapay.vo.PaymentInfo; import com.jsowell.pile.domain.OrderPayRecord; import com.jsowell.pile.vo.web.OrderDetailInfoVO; +import java.math.BigDecimal; import java.util.List; public interface OrderPayRecordService{ @@ -31,4 +33,8 @@ public interface OrderPayRecordService{ List selectOrderPayInfoList(String orderCode); + List parseDeductionRecord(String deductionRecord); + + // 更新订单退款金额 + void updateRefundAmount(String orderCode, String paymentId, BigDecimal refundAmt); } 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 a77b35718..0b7fa425d 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 @@ -1299,11 +1299,10 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService { // List collect = list.stream().map(BalanceDeductionAmountVO::getPaymentId).collect(Collectors.toList()); List orderPayRecordList = orderPayRecordService.getOrderPayRecordList(orderBasicInfo.getOrderCode()); - AbstractProgramLogic orderLogic = new DelayMerchantProgramLogic(); List paymentInfos = Lists.newArrayList(); for (OrderPayRecord orderPayRecord : orderPayRecordList) { String deductionRecord = orderPayRecord.getDeductionRecord(); - paymentInfos.addAll(orderLogic.parseDeductionRecord(deductionRecord)); + paymentInfos.addAll(orderPayRecordService.parseDeductionRecord(deductionRecord)); } List collect = paymentInfos.stream().map(PaymentInfo::getPaymentId).collect(Collectors.toList()); diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderPayRecordServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderPayRecordServiceImpl.java index f2ca8a04b..2bbb4ab48 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderPayRecordServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderPayRecordServiceImpl.java @@ -1,6 +1,9 @@ package com.jsowell.pile.service.impl; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONArray; import com.google.common.collect.Lists; +import com.jsowell.adapay.vo.PaymentInfo; import com.jsowell.common.constant.CacheConstants; import com.jsowell.common.core.redis.RedisCache; import com.jsowell.common.enums.ykc.ActionTypeEnum; @@ -18,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @@ -155,6 +159,44 @@ public class OrderPayRecordServiceImpl implements OrderPayRecordService { return payRecordList; } + /** + * 解析deductionRecord + * 【公共方法】 + */ + @Override + public List parseDeductionRecord(String deductionRecord) { + List resultList = Lists.newArrayList(); + if (StringUtils.isBlank(deductionRecord)) { + return resultList; + } + Object object = JSON.parse(deductionRecord); + + // 都放入list里 + String s = JSON.toJSONString(object); + if (object instanceof JSONArray) { + List paymentInfos = JSON.parseArray(s, PaymentInfo.class); + resultList.addAll(paymentInfos); + } else { + PaymentInfo paymentInfo = JSON.parseObject(s, PaymentInfo.class); + resultList.add(paymentInfo); + } + return resultList; + } + + @Override + public void updateRefundAmount(String orderCode, String paymentId, BigDecimal refundAmt) { + List orderPayRecordList = getOrderPayRecordList(orderCode); + for (OrderPayRecord orderPayRecord : orderPayRecordList) { + List paymentInfos = parseDeductionRecord(orderPayRecord.getDeductionRecord()); + for (PaymentInfo paymentInfo : paymentInfos) { + if (StringUtils.equals(paymentId, paymentInfo.getPaymentId())) { + orderPayRecord.setRefundAmount(refundAmt); + updateByPrimaryKeySelective(orderPayRecord); + } + } + } + } + @Override public int insertSelective(OrderPayRecord record) { return orderPayRecordMapper.insertSelective(record); diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java index 7bff64e63..7dab13a2c 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java @@ -1,7 +1,5 @@ package com.jsowell.pile.service.programlogic; -import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.google.common.collect.Lists; import com.google.common.collect.Maps; @@ -489,7 +487,7 @@ public abstract class AbstractProgramLogic implements InitializingBean { BigDecimal tempAmount = new BigDecimal(orderAmount.toString()); // 临时金额 for (OrderPayRecord record : payRecordList) { - List paymentInfos = parseDeductionRecord(record.getDeductionRecord()); + List paymentInfos = orderPayRecordService.parseDeductionRecord(record.getDeductionRecord()); for (PaymentInfo object : paymentInfos) { String paymentId = object.getPaymentId(); BigDecimal payAmount = new BigDecimal(object.getAmount()); // 此交易单支付的金额 @@ -517,29 +515,6 @@ public abstract class AbstractProgramLogic implements InitializingBean { return resultList; } - /** - * 解析deductionRecord - * 【公共方法】 - */ - public List parseDeductionRecord(String deductionRecord) { - List resultList = Lists.newArrayList(); - if (StringUtils.isBlank(deductionRecord)) { - return resultList; - } - Object object = JSON.parse(deductionRecord); - - // 都放入list里 - String s = JSON.toJSONString(object); - if (object instanceof JSONArray) { - List paymentInfos = JSON.parseArray(s, PaymentInfo.class); - resultList.addAll(paymentInfos); - } else { - PaymentInfo paymentInfo = JSON.parseObject(s, PaymentInfo.class); - resultList.add(paymentInfo); - } - return resultList; - } - /** * 从redis中取出实时记录保存到表中j * 当订单完成的时候调用 diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java index 4f2ea634e..bbe2c12f8 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java @@ -173,7 +173,7 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic { // 把消费金额冻结 for (OrderPayRecord record : payRecordList) { - List paymentInfoList = parseDeductionRecord(record.getDeductionRecord()); + List paymentInfoList = orderPayRecordService.parseDeductionRecord(record.getDeductionRecord()); // 循环冻结金额 for (PaymentInfo paymentInfo : paymentInfoList) { String paymentId = paymentInfo.getPaymentId(); @@ -677,20 +677,15 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic { // BigDecimal refundAmt = null; // 交易退款金额 // 延迟分账未确认调撤销调撤销接口退款 - // PaymentReverseOperation operation = new PaymentReverseOperation(); - // operation.setPaymentId(paymentId); - // operation.setReverseAmt(refundAmount); - // operation.setMerchantKey(dto.getWechatAppId()); - // operation.setMemberId(dto.getMemberId()); - // operation.setScenarioType(ScenarioEnum.ORDER.getValue()); - // operation.setOrderCode(dto.getOrderCode()); - // PaymentReverseResponse response = adapayService.createPaymentReverseRequest(operation); PaymentReverseResponse response = adapayService.createPaymentReverseRequest(paymentId, refundAmount, dto.getWechatAppId(), dto.getMemberId(), ScenarioEnum.ORDER.getValue(), dto.getOrderCode()); if (response != null && response.isNotFailed()) { // 交易退款金额 BigDecimal refundAmt = new BigDecimal(response.getReverse_amt()); memberAdapayRecordService.updateRefundAmountFromFreezeAmount(paymentId, refundAmt); + + // 更新订单支付记录的退款金额 + orderPayRecordService.updateRefundAmount(dto.getOrderCode(), paymentId, refundAmt); } } } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/NotDelayMerchantProgramLogic.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/NotDelayMerchantProgramLogic.java index 5a5d56f65..41c294770 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/NotDelayMerchantProgramLogic.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/NotDelayMerchantProgramLogic.java @@ -284,7 +284,7 @@ public class NotDelayMerchantProgramLogic extends AbstractProgramLogic { // 把消费金额冻结 for (OrderPayRecord record : payRecordList) { - List paymentInfoList = parseDeductionRecord(record.getDeductionRecord()); + List paymentInfoList = orderPayRecordService.parseDeductionRecord(record.getDeductionRecord()); // 循环冻结金额 for (PaymentInfo paymentInfo : paymentInfoList) { String paymentId = paymentInfo.getPaymentId(); diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/UniAppOrderVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/UniAppOrderVO.java index 7699294ec..f6c8df5ee 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/UniAppOrderVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/UniAppOrderVO.java @@ -84,6 +84,11 @@ public class UniAppOrderVO { */ private String chargingAmount; + /** + * 应补缴金额 + */ + private String remedialAmount; + /** * 充电电量 */