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/action/OrderController.java |   80 ++++++++++++++++++++++++----------------
 1 files changed, 48 insertions(+), 32 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 b6ea111..e1f1896 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
@@ -1,5 +1,6 @@
 package com.matrix.system.hive.action;
 
+import cn.hutool.core.collection.CollUtil;
 import com.matrix.component.rabbitmq.RabiitMqTemplate;
 import com.matrix.core.constance.MatrixConstance;
 import com.matrix.core.exception.GlobleException;
@@ -15,13 +16,9 @@
 import com.matrix.system.common.tools.ResponseHeadUtil;
 import com.matrix.system.constance.Dictionary;
 import com.matrix.system.constance.SystemConstance;
-import com.matrix.system.hive.action.util.QueryUtil;
 import com.matrix.system.hive.bean.*;
-import com.matrix.system.hive.dao.MoneyCardUseDao;
-import com.matrix.system.hive.dao.SysOrderDao;
-import com.matrix.system.hive.dao.SysOrderItemDao;
-import com.matrix.system.hive.dao.SysShopInfoDao;
-import com.matrix.core.tools.DateUtil;
+import com.matrix.system.hive.dao.*;
+import com.matrix.system.hive.plugin.util.CollectionUtils;
 import com.matrix.system.hive.pojo.ShoppingCarItem;
 import com.matrix.system.hive.pojo.ShoppingCarItemsVo;
 import com.matrix.system.hive.service.*;
@@ -46,7 +43,6 @@
 import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Date;
 import java.util.List;
 
 /**
@@ -60,6 +56,11 @@
 public class OrderController extends BaseController {
     @Resource
     private SysOrderService orderService;
+    @Autowired
+    ShoppingGoodsDao shoppingGoodsDao;
+
+    @Autowired
+    private CodeService codeService;
 
     @Autowired
     private SysOrderItemDao orderItemDao;
@@ -89,7 +90,14 @@
     private SysOrderFlowService sysOrderFlowService;
 
     @Autowired
+    private SysOrderFlowDao sysOrderFlowDao;
+
+    @Autowired
     RabiitMqTemplate rabiitMqTemplate;
+
+    @Autowired
+    private SysProjServicesDao sysProjServicesDao;
+
     @Value("${evn}")
     private String evn;
 
@@ -126,6 +134,8 @@
     AjaxResult payOrder(@RequestBody SysOrder sysOrder) {
         SysUsers user = getMe();
         sysOrder.setShopId(user.getShopId());
+        sysOrder.setOrderType(SysOrder.ORDER_TYPE_SEAL);
+        sysOrder.setIsHasRefund(SysOrder.IS_HAS_REFUND_N);
         //校验订单是否满足结算调价,新订单则保存订单,已有订单则删除后更新
         sysOrder = orderService.checkAndSaveOrder(sysOrder);
         orderService.updateReceiptMoney(sysOrder);
@@ -149,14 +159,16 @@
      */
     @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.setOrderTime(new Date());
-        //校验订单是否满足结算调价,新订单则保存订单,已有订单则删除后更新
-        sysOrder = orderService.checkAndSaveOrder(sysOrder);
+        //储值卡订单不能通过退款渠道退款
+        if(CollectionUtils.isNotEmpty(sysOrder.getItems())){
+            List<SysOrderItem> orderItem = orderItemService.findByOrderId(sysOrder.getItems().get(0).getOrderId());
+            if(orderItem.size()==1){
+                if(orderItem.get(0).getShoppingGoods().getCode().equals("vipCzk")){
+                    return AjaxResult.buildFailInstance("充值订单请直接冲负数金额退款!");
+                }
+            }
+        }
         orderService.refundOrderMoney(sysOrder);
         //处理用户购买的产品
         return AjaxResult.buildSuccessInstance(Arrays.asList(sysOrder), "订单退款成功");
@@ -270,13 +282,17 @@
     public @ResponseBody
     AjaxResult updateOrderTime(SysOrder sysOrder) {
 
-        sysOrderDao.updateOrderTime(sysOrder.getOrderTime(), sysOrder.getId());
+        sysOrderDao.updateOrderTime(sysOrder.getPayTime(), sysOrder.getId());
         // 修改业绩时间
         // 更新业绩时间
         AchieveNew achieveNew = new AchieveNew();
         achieveNew.setOrderId(sysOrder.getId());
-        achieveNew.setDatatime(sysOrder.getOrderTime());
+        achieveNew.setDatatime(sysOrder.getPayTime());
         achieveNewService.modifyAchieveTime(achieveNew);
+        //更新收款流水时间
+        sysOrderFlowDao.updateTimeByOrderId(sysOrder.getId(),sysOrder.getPayTime());
+
+
         return new AjaxResult(AjaxResult.STATUS_SUCCESS, "修改成功");
     }
 
@@ -293,16 +309,7 @@
         MoneyCardUse cardUseInfo = cardUseService.findByVipId(order.getVipId());
 
         if (cardUseInfo == null) {
-            cardUseInfo = new MoneyCardUse();
-            cardUseInfo.setVipId(order.getVipId());
-            cardUseInfo.setCardName("储值卡");
-            cardUseInfo.setIsVipCar(Dictionary.FLAG_YES_Y);
-            cardUseInfo.setRealMoney(0D);
-            cardUseInfo.setGiftMoney(0D);
-            cardUseInfo.setSource("-");
-            cardUseInfo.setStatus(Dictionary.MONEYCARD_STATUS_YX);
-            cardUseInfo.setFailTime(DateUtil.stringToDate("2050-01-01 00:00",DateUtil.DATE_FORMAT_MM));
-            moneyCardUseDao.insert(cardUseInfo);
+            cardUseInfo=sysVipInfoService.addVipDefaultCard(order.getVipId());
         }
 
         //打印需求加入门店信息
@@ -470,13 +477,22 @@
         if (order == null) {
             return new AjaxResult(AjaxResult.STATUS_FAIL, "订单不存在!");
         }
-        orderService.cancelOrder(id);
-        if (del > 0) {
-            orderService.removeById(id);
-            result.setInfo("删除成功!");
-        } else {
-            result.setInfo("取消成功!");
+
+        List<SysOrderItem> items = orderItemDao.selectByOrderId(id);
+        for (SysOrderItem item : items) {
+            List<SysProjServices> sysProjServices = sysProjServicesDao.selectProjServicesByOrderItemId(item.getId());
+            if (CollUtil.isNotEmpty(sysProjServices)) {
+                return new AjaxResult(AjaxResult.STATUS_FAIL, "订单存在进行中的服务单无法取消/删除");
+            }
         }
+
+        orderService.cancelOrder(id);
+//        if (del > 0) {
+//            orderService.removeById(id);
+//            result.setInfo("删除成功!");
+//        } else {
+            result.setInfo("取消成功!");
+//        }
         result.setStatus(AjaxResult.STATUS_SUCCESS);
 
         return result;

--
Gitblit v1.9.1