From 60da6176964cb65963bd15e8a00772cc33efbf1a Mon Sep 17 00:00:00 2001
From: wzy <wzy19931122ai@163.com>
Date: Fri, 07 Oct 2022 16:04:32 +0800
Subject: [PATCH] 修改退款时无法退款到储值卡的bug

---
 zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java |   18 ++++++++++++++----
 1 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java
index 8dc52a9..bc75ac4 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java
@@ -263,12 +263,19 @@
     /**
      * 储值卡退款
      * @param order
+     * @param isWholeOrder 是否整个订单退款
      */
-    public void returnMoneyCardPay(SysOrder order) {
+    public void returnMoneyCardPay(SysOrder order, boolean isWholeOrder) {
         SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
         List<MoneyCardOperationDto> moneyCardOperationDtos = Lists.newArrayList();
 
-        List<SysOrderFlow> flows = sysOrderFlowDao.selectByOrderId(order.getId());
+        List<SysOrderFlow> flows = null;
+        if (isWholeOrder) {
+            flows = sysOrderFlowDao.selectByOrderId(order.getId());
+        } else {
+            flows = order.getFlows();
+        }
+
         // 非现金收款退回扣卡余额
         for (SysOrderFlow flow : flows) {
             if (SysOrderFlow.PAY_METHOD_CARD.equals(flow.getPayMethod())) {
@@ -280,11 +287,14 @@
                     dto.setCarUseId(flow.getCardId());
                     dto.setType(MoneyCardUseFlow.USE_TYPE_ORDRE_CANCEL);
                     if (SysOrderFlow.IS_GIFT_Y.equals(flow.getIsGift())) {
-                        dto.setGiftMoney(flow.getAmount().doubleValue());
+                        dto.setGiftMoney(flow.getAmount().abs().doubleValue());
                     } else {
-                        dto.setRealMoney(flow.getAmount().doubleValue());
+                        dto.setRealMoney(flow.getAmount().abs().doubleValue());
                     }
                     dto.setUpdateUser(user.getSuId());
+
+                    // 用于通过校验
+                    dto.setOrderItemId(-1L);
                     moneyCardOperationDtos.add(dto);
                 } else {
                     throw new GlobleException("无效的储值卡支付方式");

--
Gitblit v1.9.1