From 5c75b981a4e09729aeac8b3c24cb4ce9c99c4298 Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Thu, 22 Feb 2024 10:21:35 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E9=80=80=E6=AC=BE=E6=97=B6?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E5=B7=B2=E7=BB=8F=E9=80=80=E6=AC=BE=E9=87=91?= =?UTF-8?q?=E9=A2=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jsowell/service/OrderService.java | 22 +---------- .../pile/mapper/OrderBasicInfoMapper.java | 2 + .../pile/service/OrderBasicInfoService.java | 14 +++++++ .../impl/OrderBasicInfoServiceImpl.java | 38 +++++++++++++++++++ .../DelayMerchantProgramLogic.java | 20 ++++++++++ 5 files changed, 75 insertions(+), 21 deletions(-) diff --git a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java index 0ddab5ed2..4c295afc3 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java @@ -477,27 +477,7 @@ public class OrderService { * @return */ private List getOrderRefundInfoList(OrderBasicInfo orderBasicInfo) { - List orderRefundInfoList = Lists.newArrayList(); - OrderDetailInfoVO.OrderRefundInfo refundInfo; - if (OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue().equals(orderBasicInfo.getPayMode())) { - // 查新member_wallet_log订单 进账记录 - List walletLogs = memberWalletLogService.getOrderRecord(orderBasicInfo.getOrderCode(), MemberWalletEnum.TYPE_IN.getValue()); - if (CollectionUtils.isNotEmpty(walletLogs)) { - for (MemberWalletLog memberWalletLog : walletLogs) { - refundInfo = new OrderDetailInfoVO.OrderRefundInfo(); - refundInfo.setReverseAmt(memberWalletLog.getAmount().abs().toString()); - refundInfo.setSucceedTime(DateUtils.formatDateTime(memberWalletLog.getCreateTime())); - refundInfo.setCreatedTime(DateUtils.formatDateTime(memberWalletLog.getCreateTime())); - orderRefundInfoList.add(refundInfo); - } - } - } else if (OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getValue().equals(orderBasicInfo.getPayMode())) { - // 新逻辑 - String mode = pileMerchantInfoService.getDelayModeByMerchantId(orderBasicInfo.getMerchantId()); - AbstractProgramLogic orderLogic = ProgramLogicFactory.getProgramLogic(mode); - orderRefundInfoList = orderLogic.getOrderRefundInfoList(orderBasicInfo); - } - return orderRefundInfoList; + return orderBasicInfoService.getOrderRefundInfoList(orderBasicInfo); } /** diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java index 724bd5952..0c753f255 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java @@ -13,10 +13,12 @@ import com.jsowell.pile.vo.uniapp.PersonPileConnectorSumInfoVO; import com.jsowell.pile.vo.uniapp.SendMessageVO; import com.jsowell.pile.vo.web.*; import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; import java.time.LocalDateTime; import java.util.List; +@Repository public interface OrderBasicInfoMapper { /** * delete by primary key 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 0cc08af1d..fa54bdcae 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 @@ -387,4 +387,18 @@ public interface OrderBasicInfoService{ List getOrderInfoByNXJT(NXJTQueryOrdersInfoDTO dto); List queryRepayOrder(String memberId); + + /** + * 通过orderCode获取退款明细列表 + * @param orderCode + * @return + */ + List getOrderRefundInfoList(String orderCode); + + /** + * 获取退款明细列表 + * @param orderBasicInfo + * @return + */ + List getOrderRefundInfoList(OrderBasicInfo orderBasicInfo); } 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 7f288dc4e..799feba07 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 @@ -65,6 +65,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.ParseException; @@ -88,6 +89,9 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService { @Autowired private OrderBasicInfoMapper orderBasicInfoMapper; + @Resource + private MemberWalletLogService memberWalletLogService; + @Autowired private TransactionService transactionService; @@ -3598,6 +3602,40 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService { return orderBasicInfoMapper.queryRepayOrder(memberId); } + @Override + public List getOrderRefundInfoList(String orderCode) { + OrderBasicInfo orderBasicInfo = getOrderInfoByOrderCode(orderCode); + return getOrderRefundInfoList(orderBasicInfo); + } + + @Override + public List getOrderRefundInfoList(OrderBasicInfo orderBasicInfo) { + if (orderBasicInfo == null) { + return Lists.newArrayList(); + } + List orderRefundInfoList = Lists.newArrayList(); + OrderDetailInfoVO.OrderRefundInfo refundInfo; + if (OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue().equals(orderBasicInfo.getPayMode())) { + // 查新member_wallet_log订单 进账记录 + List walletLogs = memberWalletLogService.getOrderRecord(orderBasicInfo.getOrderCode(), MemberWalletEnum.TYPE_IN.getValue()); + if (CollectionUtils.isNotEmpty(walletLogs)) { + for (MemberWalletLog memberWalletLog : walletLogs) { + refundInfo = new OrderDetailInfoVO.OrderRefundInfo(); + refundInfo.setReverseAmt(memberWalletLog.getAmount().abs().toString()); + refundInfo.setSucceedTime(DateUtils.formatDateTime(memberWalletLog.getCreateTime())); + refundInfo.setCreatedTime(DateUtils.formatDateTime(memberWalletLog.getCreateTime())); + orderRefundInfoList.add(refundInfo); + } + } + } else if (OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getValue().equals(orderBasicInfo.getPayMode())) { + // 新逻辑 + String mode = pileMerchantInfoService.getDelayModeByMerchantId(orderBasicInfo.getMerchantId()); + AbstractProgramLogic orderLogic = ProgramLogicFactory.getProgramLogic(mode); + orderRefundInfoList = orderLogic.getOrderRefundInfoList(orderBasicInfo); + } + return orderRefundInfoList; + } + @Override public int deleteByPrimaryKey(Integer id) { return orderBasicInfoMapper.deleteByPrimaryKey(id); 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 97b9a3838..f7c0107d8 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 @@ -416,8 +416,28 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic { } } + /** + * 执行订单退款 + * @param orderBasicInfo + */ @Override public void refundOrder(OrderBasicInfo orderBasicInfo) { + BigDecimal refundAmount = orderBasicInfo.getRefundAmount(); + // 查询该笔订单的退款记录 + List orderRefundInfoList = orderBasicInfoService.getOrderRefundInfoList(orderBasicInfo); + if (CollectionUtils.isNotEmpty(orderRefundInfoList)) { + // 已退款金额 + BigDecimal refunded = BigDecimal.ZERO; + for (OrderDetailInfoVO.OrderRefundInfo orderRefundInfo : orderRefundInfoList) { + BigDecimal reverseAmt = new BigDecimal(orderRefundInfo.getReverseAmt()); + refunded = refunded.add(reverseAmt); + } + if (refunded.compareTo(refundAmount) >= 0) { + logger.info("执行订单退款-校验已退款金额,orderCode:{}, 应退款金额:{}, 已经退款金额:{}, 不再执行退款", orderBasicInfo.getOrderCode(), refundAmount, refunded); + return; + } + } + try { String payMode = orderBasicInfo.getPayMode(); if (StringUtils.equals(payMode, OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue())) {