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())) {