From a72aa4bb793ec765892406c842039a71b33215b1 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Thu, 11 Mar 2021 18:12:22 +0800
Subject: [PATCH] modify

---
 zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java |   49 +++++++++++++++++++++++++++----------------------
 1 files changed, 27 insertions(+), 22 deletions(-)

diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
index 2445c7b..7fac417 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
@@ -278,23 +278,22 @@
                 throw new GlobleException("订单已取消");
             }
 
-            List<SysOrderItem> sysOrderItems = orderItemDao.selectByOrderId(id);
+            List<SysOrderFlow> flows = sysOrderFlowDao.selectByOrderId(id);
+            // 非现金收款退回扣卡余额
+            for (SysOrderFlow flow : flows) {
+                if (SysOrderFlow.PAY_METHOD_CARD.equals(flow.getPayMethod())) {
 
-            for (SysOrderItem orderItem : sysOrderItems) {
-
-                //非现金收款退回扣卡余额
-                if (StringUtils.isNotBlank(orderItem.getPayMethodDetail())) {
-
-                    MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(Long.parseLong(orderItem.getPayMethodDetail()));
+                    MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(flow.getCardId());
                     MoneyCardUseFlow moneyCardUseFlow = new MoneyCardUseFlow();
 
                     if (moneyCardUse != null) {
-
                         // 根据订单明细判断是赠送金额购买还是本金购买
-
-                        moneyCardUseFlow.setTotal(orderItem.getCardPay());
-                        moneyCardUse.setRealMoney(MoneyUtil.add(moneyCardUse.getRealMoney(), orderItem.getCardPay()));
-                        //TODO 目前无法退回到具体的赠送金额还是本金
+                        moneyCardUseFlow.setTotal(flow.getAmount().doubleValue());
+                        if (SysOrderFlow.IS_GIFT_Y.equals(flow.getIsGift())) {
+                            moneyCardUse.setGiftMoney(MoneyUtil.add(moneyCardUse.getGiftMoney(), flow.getAmount().doubleValue()));
+                        } else {
+                            moneyCardUse.setRealMoney(MoneyUtil.add(moneyCardUse.getRealMoney(), flow.getAmount().doubleValue()));
+                        }
 
                         if (!moneyCardUse.getIsVipCar().equals(Dictionary.FLAG_YES_Y)) {
                             if (moneyCardUse.getLastCount() != null) {
@@ -316,29 +315,26 @@
                         moneyCardUseFlowDao.insert(moneyCardUseFlow);
                     }
                 }
+            }
+
+            List<SysOrderItem> sysOrderItems = orderItemDao.selectByOrderId(id);
+            for (SysOrderItem orderItem : sysOrderItems) {
                 // 充值卡类型退款
                 if (Dictionary.SHOPPING_GOODS_TYPE_CZK.equals(orderItem.getType())) {
-
                     ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(orderItem.getGoodsId());
-
-
                     //删除购买的充值卡
                     moneyCardUseDao.deleteByOrderItemId(orderItem.getId());
-
                 } else if (Dictionary.SHOPPING_GOODS_TYPE_XM.equals(orderItem.getType())
                         || Dictionary.SHOPPING_GOODS_TYPE_TC.equals(orderItem.getType())) {
                     // 项目套餐退款
                     // 删除套餐项目使用情况
                     sysProjUseDao.deleteByOrderItemId(orderItem.getId());
-
-
                 } else if (Dictionary.SHOPPING_GOODS_TYPE_ZHK.equals(orderItem.getType())) {
                     // 综合卡
                     // 删除套餐项目使用情况
                     sysProjUseDao.deleteByOrderItemId(orderItem.getId());
                     // 删除充值卡
                     moneyCardUseDao.deleteByOrderItemId(orderItem.getId());
-
                 }
             }
 
@@ -368,8 +364,6 @@
 
             // 取消订单
             order.setStatu(Dictionary.ORDER_STATU_YQX);
-
-
             return sysOrderDao.update(order);
         }
 
@@ -546,6 +540,7 @@
 
             //欠款处理
             if (SysOrderFlow.PAY_METHOD_ARREARS.equals(flow.getPayMethod())) {
+                sourceOrder.setStatu(Dictionary.ORDER_STATU_QK);
                 sourceOrder.setArrears(flow.getAmount().doubleValue());
                 sysOrderDao.update(sourceOrder);
             }
@@ -680,6 +675,14 @@
             return true;
         } else {
             // 不是一卡通,
+            // 判断卡是否可应用于所有产品
+            ShoppingGoods cardGoods = shoppingGoodsDao.selectById(moneyCardUse.getGoodsId());
+            if (cardGoods != null) {
+                if (Dictionary.FLAG_YES.equals(cardGoods.getCarIsAll())) {
+                    return true;
+                }
+            }
+
             // 比较分类
             MoneyCardAssemble moneyCardAssemble = new MoneyCardAssemble();
             moneyCardAssemble.setCardId(moneyCardUse.getGoodsId());
@@ -1268,7 +1271,8 @@
         //原订单设置为退款状态
         SysOrder sourceOrder=new SysOrder();
         sourceOrder.setId(sysOrder.getOldOrderId());
-        sourceOrder.setStatu(Dictionary.ORDER_STATU_TK);
+        sourceOrder.setIsHasRefund(SysOrder.IS_HAS_REFUND_Y);
+//        sourceOrder.setStatu(Dictionary.ORDER_STATU_TK);
         sysOrderDao.update(sourceOrder);
 
         sysOrder.setId(null);
@@ -1282,6 +1286,7 @@
         sysOrder.setPayTime(now);
         sysOrder.setOrderNo(codeService.getRefundOrderNo());
         sysOrder.setZkTotal(-sysOrder.getZkTotal());
+        sysOrder.setOrderType(SysOrder.ORDER_TYPE_REFUND);
         //新增订单
         sysOrderDao.insert(sysOrder);
         //插入明细

--
Gitblit v1.9.1