From c9b157e19d101fd2d9a79c3db673f0c2cacd481c Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Tue, 12 Jan 2021 18:10:50 +0800
Subject: [PATCH] modify

---
 zq-erp/src/main/java/com/matrix/system/hive/service/SysOrderService.java         |    2 +
 zq-erp/src/main/java/com/matrix/system/hive/action/OrderController.java          |   23 +++++++++--
 zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrderItem.java               |   13 ++++++
 zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java |   27 +++++++++++++
 4 files changed, 61 insertions(+), 4 deletions(-)

diff --git a/zq-erp/src/main/java/com/matrix/system/hive/action/OrderController.java b/zq-erp/src/main/java/com/matrix/system/hive/action/OrderController.java
index 06a441b..e9db49e 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/action/OrderController.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/action/OrderController.java
@@ -125,9 +125,25 @@
     }
 
 
-
-
-
+    /**
+     * 退款
+     *
+     * @param sysOrder
+     * @return
+     */
+    @RequestMapping(value = "/refundOrder")
+    @ResponseBody
+    @Transactional(rollbackFor = Exception.class)
+    public AjaxResult refundOrder(@RequestBody SysOrder sysOrder) {
+        SysUsers user = getMe();
+        sysOrder.setShopId(user.getShopId());
+        sysOrder.setStatu(Dictionary.ORDER_STATU_TK);
+        //校验订单是否满足结算调价,新订单则保存订单,已有订单则删除后更新
+        sysOrder = orderService.checkAndSaveOrder(sysOrder);
+        orderService.refundOrderMoney(sysOrder);
+        //处理用户购买的产品
+        return AjaxResult.buildSuccessInstance(Arrays.asList(sysOrder), "订单退款成功");
+    }
 
 
     /**
@@ -144,7 +160,6 @@
         //处理用户购买的产品
         return AjaxResult.buildSuccessInstance(Arrays.asList(sysOrder), "订单保存成功");
     }
-
 
     /**
      * 新建订单
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrderItem.java b/zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrderItem.java
index 42eab39..dc1bdea 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrderItem.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrderItem.java
@@ -124,6 +124,19 @@
 
 	private ShoppingGoods shoppingGoods;
 
+	/**
+	 * 原有数量
+	 */
+	private int preCount;
+
+	public int getPreCount() {
+		return preCount;
+	}
+
+	public void setPreCount(int preCount) {
+		this.preCount = preCount;
+	}
+
 	public ShoppingGoods getShoppingGoods() {
 		return shoppingGoods;
 	}
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/SysOrderService.java b/zq-erp/src/main/java/com/matrix/system/hive/service/SysOrderService.java
index 40a7f9e..23cfd15 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/SysOrderService.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/SysOrderService.java
@@ -84,6 +84,8 @@
 	 */
 	public void updateReceiptMoney(SysOrder sysOrder) throws GlobleException;
 
+	public void refundOrderMoney(SysOrder sysOrder);
+
 	/**
 	 * 创建订单
 	 * @param session
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 51536f3..bef07ea 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
@@ -167,6 +167,14 @@
 
         // 页面的pageOrder 参数只包含支付金额信息,不带有购买商品
         for (SysOrderItem item : sysOrder.getItems()) {
+            // 若为退款,则先更新原有数量
+            if (orderStatus.equals(Dictionary.ORDER_STATU_TK)) {
+                SysOrderItem sysOrderItem = new SysOrderItem();
+                sysOrderItem.setId(item.getId());
+                sysOrderItem.setCount(item.getPreCount() - item.getCount());
+                orderItemDao.update(sysOrderItem);
+            }
+            item.setId(null);
 
             ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(item.getGoodsId());
             item.setType(shoppingGoods.getGoodType());
@@ -1215,4 +1223,23 @@
     public List<RankingVo> findStaffSaleAchieveRanking(SysOrder sysOrder) {
         return sysOrderDao.selectStaffSaleAchieveRanking(sysOrder);
     }
+
+    @Override
+    public void refundOrderMoney(SysOrder pageOrder) {
+
+        changeOrderStatu(pageOrder);
+        // 设置会员充值卡使用情况
+        addMoneyCardUse(pageOrder);
+
+        // 新增出库单
+        addOutStore(pageOrder);
+
+        // 改变客户项目套餐使用情况
+        addTaocanProj(pageOrder);
+
+        // 设置业绩
+        achieveNewService.addAchaeveByOrder(pageOrder);
+
+        setShopSelCount(pageOrder);
+    }
 }

--
Gitblit v1.9.1