From 7e6a42fdddef2cc7981d736a138c719aba53563c Mon Sep 17 00:00:00 2001
From: JiangYouYao <ak473600000>
Date: Fri, 11 Mar 2022 18:12:04 +0800
Subject: [PATCH] 重构:充值卡

---
 zq-erp/src/main/java/com/matrix/system/hive/dto/MoneyCardChangeDto.java                  |   65 +++++++
 zq-erp/src/main/java/com/matrix/system/hive/service/MoneyCardUseService.java             |   16 +
 zq-erp/src/main/java/com/matrix/system/hive/service/SysVipInfoService.java               |    7 
 zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysVipInfoServiceImpl.java       |    7 
 zq-erp/src/main/java/com/matrix/system/hive/service/imp/MoneyCardUseServiceImpl.java     |   69 +++++++
 zq-erp/src/main/java/com/matrix/system/hive/dto/GoodsSealLimitDto.java                   |    2 
 zq-erp/src/main/java/com/matrix/core/tools/ParamCheckUtil.java                           |    3 
 zq-erp/src/main/java/com/matrix/system/enums/BooleanEnum.java                            |   63 +++++++
 zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java         |  138 ++++++---------
 zq-erp/src/main/resources/templates/views/admin/hive/products/shoppinggoods-md-list.html |   10 
 zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java       |   73 ++++++++
 zq-erp/src/main/java/com/matrix/system/hive/action/ShoppingGoodsController.java          |    1 
 zq-erp/src/main/java/com/matrix/core/pojo/VerificationResult.java                        |    4 
 zq-erp/src/main/java/com/matrix/system/hive/service/imp/ShoppingGoodsServiceImpl.java    |   17 -
 zq-erp/src/main/resources/mybatis/mapper/hive/ShoppingGoodsDao.xml                       |    2 
 zq-erp/src/main/resources/templates/views/admin/hive/products/shoppinggoods-zb-list.html |   10 
 zq-erp/src/main/java/com/matrix/system/hive/dto/SysOrderItemDto.java                     |    7 
 17 files changed, 372 insertions(+), 122 deletions(-)

diff --git a/zq-erp/src/main/java/com/matrix/core/pojo/VerificationResult.java b/zq-erp/src/main/java/com/matrix/core/pojo/VerificationResult.java
index d4bb932..3c93147 100644
--- a/zq-erp/src/main/java/com/matrix/core/pojo/VerificationResult.java
+++ b/zq-erp/src/main/java/com/matrix/core/pojo/VerificationResult.java
@@ -8,12 +8,16 @@
 @Data
 public class VerificationResult {
 
+    /**
+     * 审核结果
+     */
     private boolean judgeResult;
 
     private String  msg;
 
     private Object  info;
 
+
     private VerificationResult(){
 
     }
diff --git a/zq-erp/src/main/java/com/matrix/core/tools/ParamCheckUtil.java b/zq-erp/src/main/java/com/matrix/core/tools/ParamCheckUtil.java
index 49768e8..0d55dba 100644
--- a/zq-erp/src/main/java/com/matrix/core/tools/ParamCheckUtil.java
+++ b/zq-erp/src/main/java/com/matrix/core/tools/ParamCheckUtil.java
@@ -1,8 +1,5 @@
 package com.matrix.core.tools;
 
-import com.matrix.system.hive.dto.OrderItemDto;
-
-import java.util.ArrayList;
 import java.util.List;
 import java.util.function.Function;
 
diff --git a/zq-erp/src/main/java/com/matrix/system/enums/BooleanEnum.java b/zq-erp/src/main/java/com/matrix/system/enums/BooleanEnum.java
new file mode 100644
index 0000000..4adb5d3
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/enums/BooleanEnum.java
@@ -0,0 +1,63 @@
+package com.matrix.system.enums;
+
+import com.google.common.collect.Lists;
+import com.matrix.core.enums.EnumApiShowAble;
+import com.matrix.core.enums.EnumsShowVo;
+import com.matrix.core.exception.GlobleException;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 是否枚举
+ * @author jyy
+ */
+public enum BooleanEnum implements EnumApiShowAble {
+
+    TRUE(1, "是"),
+    FALSE(2, "否"),
+    DEFAULT(3, ""),
+    ;
+
+    private Integer value;
+
+    private String displayName;
+
+    BooleanEnum(Integer value, String displayName) {
+        this.value = value;
+        this.displayName = displayName;
+    }
+
+    public static String getByValue(Integer value) {
+        for (int i = 0; i < values().length; i++) {
+            if (value.equals(values()[i].getValue())) {
+                return values()[i].displayName;
+            }
+        }
+        throw new GlobleException("无效枚举值");
+    }
+
+    @Override
+    public String getEnumCode() {
+        return "booleanEnum";
+    }
+
+    @Override
+    public List<EnumsShowVo> getEnumsShowVos() {
+        return Lists.newArrayList(values()).stream().map(item ->
+                EnumsShowVo.builder()
+                        .displayName(item.getDisplayName())
+                        .value(item.value)
+                        .build()
+        ).collect(Collectors.toList());
+    }
+
+    public Integer getValue() {
+        return value;
+    }
+
+    public String getDisplayName() {
+        return displayName;
+    }
+
+}
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/action/ShoppingGoodsController.java b/zq-erp/src/main/java/com/matrix/system/hive/action/ShoppingGoodsController.java
index e2c5007..2118f7a 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/action/ShoppingGoodsController.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/action/ShoppingGoodsController.java
@@ -190,7 +190,6 @@
             }
         }
         shoppingGoods.setIsDel(ShoppingGoods.NORMAL);
-        shoppingGoods.setStaus(Dictionary.BUSINESS_STATE_UP);
         List<ShoppingGoods> dataList = shoppingGoodsService.findInPage(shoppingGoods, pageVo);
         AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, dataList, shoppingGoodsService.findTotal(shoppingGoods));
         return result;
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dto/GoodsSealLimitDto.java b/zq-erp/src/main/java/com/matrix/system/hive/dto/GoodsSealLimitDto.java
index 1926c1d..c066038 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/dto/GoodsSealLimitDto.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/dto/GoodsSealLimitDto.java
@@ -20,6 +20,6 @@
     /**
      * 销售明细
      */
-    private List<OrderItemDto> orderItemDtoList;
+    private List<SysOrderItemDto> sysOrderItemDtoList;
 
 }
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dto/MoneyCardChangeDto.java b/zq-erp/src/main/java/com/matrix/system/hive/dto/MoneyCardChangeDto.java
new file mode 100644
index 0000000..b99ae5a
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/hive/dto/MoneyCardChangeDto.java
@@ -0,0 +1,65 @@
+/**
+ * projectName: zq-erp
+ * fileName: MoneyCardChangeDto.java
+ * packageName: com.matrix.system.hive.dto
+ * date: 2022-03-11 10:24
+ * copyright(c) 2022 http://www.hydee.cn/ Inc. All rights reserved.
+ */
+package com.matrix.system.hive.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @version: V1.0
+ * @author: JiangYouYao
+ * @className: MoneyCardChangeDto
+ * @packageName: com.matrix.system.hive.dto
+ * @description: 储值卡余额变更DTO
+ * @data: 2022-03-11 10:24
+ **/
+@Data
+public class MoneyCardChangeDto {
+
+
+    /**
+     * 储值卡id
+     */
+    private Long carUseId;
+    /**
+     * 订单id
+     */
+    private Long  orderId;
+    /**
+     * 订单编号
+     */
+    private String orderNo;
+    /**
+     * 操作类型
+     */
+    private String type;
+    /**
+     * 赠送金额扣减
+     */
+    private Double giftMoney;
+    /**
+     * 本金扣减
+     */
+    private Double realMoney;
+    /**
+     * 扣减次数
+     */
+    private Double count;
+    /**
+     * 操作人
+     */
+    private Long updateUser;
+
+    /**
+     * 支付的商品id
+     */
+    private List<Long> goodsIds;
+
+
+}
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dto/OrderItemDto.java b/zq-erp/src/main/java/com/matrix/system/hive/dto/SysOrderItemDto.java
similarity index 81%
rename from zq-erp/src/main/java/com/matrix/system/hive/dto/OrderItemDto.java
rename to zq-erp/src/main/java/com/matrix/system/hive/dto/SysOrderItemDto.java
index bc927fa..2f57177 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/dto/OrderItemDto.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/dto/SysOrderItemDto.java
@@ -1,16 +1,15 @@
 package com.matrix.system.hive.dto;
 
-import lombok.Builder;
 import lombok.Data;
 import lombok.ToString;
 
 /**
  * 订单明细DTO
+ * @author jyy
  */
-@Data
 @ToString
-@Builder
-public class OrderItemDto {
+@Data
+public class SysOrderItemDto {
     /**
      * 商城 商品id
      */
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/MoneyCardUseService.java b/zq-erp/src/main/java/com/matrix/system/hive/service/MoneyCardUseService.java
index c677c7b..c367c08 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/MoneyCardUseService.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/MoneyCardUseService.java
@@ -1,17 +1,27 @@
 package com.matrix.system.hive.service;
 
-import java.util.List;
-
-
 import com.matrix.core.pojo.PaginationVO;
 import com.matrix.system.hive.bean.MoneyCardUse;
+import com.matrix.system.hive.dto.MoneyCardChangeDto;
 import com.matrix.system.hive.plugin.util.BaseServices;
+
+import java.util.List;
 
 /**
  * @date 2016-09-17 10:17
  */
 public interface MoneyCardUseService extends BaseServices<MoneyCardUse> {
 
+
+    /**
+     * 修改储值卡余额
+     */
+    void changeMoneyCard(List<MoneyCardChangeDto> moneyCardChangeDtoList);
+
+
+
+
+
     /**
      * 新增MoneyCardUse
      */
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/SysVipInfoService.java b/zq-erp/src/main/java/com/matrix/system/hive/service/SysVipInfoService.java
index cd93e2d..a31f4d0 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/SysVipInfoService.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/SysVipInfoService.java
@@ -22,6 +22,13 @@
  */
 public interface SysVipInfoService  extends BaseServices<SysVipInfo>{
 
+	/**
+	 * 更新用户成交状态
+	 * @param vipId
+	 * @param isDeal
+	 */
+	void updateDealStatus(Long vipId, int isDeal);
+
 	public MoneyCardUse addVipDefaultCard(Long vipId);
 	/**
 	 * 新增SysVipInfo
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/MoneyCardUseServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/MoneyCardUseServiceImpl.java
index 5eb09f1..2b6ba2e 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/MoneyCardUseServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/MoneyCardUseServiceImpl.java
@@ -3,13 +3,12 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.matrix.core.exception.GlobleException;
 import com.matrix.core.pojo.PaginationVO;
+import com.matrix.core.pojo.VerificationResult;
 import com.matrix.core.tools.DateUtil;
 import com.matrix.system.constance.Dictionary;
-import com.matrix.system.hive.bean.MoneyCardUse;
-import com.matrix.system.hive.bean.MoneyCardUseFreeze;
-import com.matrix.system.hive.bean.SysOrderItem;
-import com.matrix.system.hive.bean.SysVipInfo;
+import com.matrix.system.hive.bean.*;
 import com.matrix.system.hive.dao.*;
+import com.matrix.system.hive.dto.MoneyCardChangeDto;
 import com.matrix.system.hive.service.MoneyCardUseService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -41,9 +40,71 @@
     @Autowired
     private SysVipLevelDao viplevelDao;
 
+    @Autowired
+    ShoppingGoodsDao shoppingGoodsDao;
+
+    @Autowired
+    MoneyCardAssembleDao moneyCardAssembleDao;
+
+    @Override
+    public void changeMoneyCard(List<MoneyCardChangeDto> moneyCardChangeDtoList) {
+
+        // 判断商品是否在充值卡的限制购买,判断分类
+        moneyCardChangeDtoList.forEach(cardUse->{
+            VerificationResult verificationResult = checkIsBangding(cardUse, cardUse.getGoodsIds());
+            if (!verificationResult.isJudgeResult()) {
+                throw new GlobleException(verificationResult.getMsg());
+            }
+        });
+
+        moneyCardChangeDtoList.get().forEach(item -> {
+            if (!isInBangding(moneyCardUse, item.getGoodsId())) {
+                throw new GlobleException(shoppingGoodsDao.selectById(item.getGoodsId()).getName() + "不在" + moneyCardUse.getCardName() + "优惠中");
+            }
+        });
 
 
+    }
 
+    private VerificationResult checkIsBangding(MoneyCardChangeDto moneyCardUse, List<Long> goodsIds) {
+        // 如果是一卡通则肯定在绑定范围内
+
+        if (moneyCardUse.getIsVipCar().equals(Dictionary.FLAG_YES_Y)) {
+            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());
+            List<MoneyCardAssemble> cardAssembleList = moneyCardAssembleDao.selectByModel(moneyCardAssemble);
+            ShoppingGoods yhGoods = shoppingGoodsDao.selectById(goodsId);
+            boolean flag = false;
+            for (MoneyCardAssemble cardAssemble : cardAssembleList) {
+                // 比较类型
+                if (cardAssemble.getType().equals(Dictionary.CZK_ASSEMBLE_FL)) {
+                    if (yhGoods.getCateId().equals(cardAssemble.getCateId())) {
+                        flag = true;
+                        break;
+                    }
+                } else {
+                    // 比较绑定
+                    if (yhGoods.getId().equals(cardAssemble.getGoodsId())) {
+                        flag = true;
+                        break;
+                    }
+                }
+            }
+            return flag;
+        }
+    }
 
     @Override
     public int add(MoneyCardUse moneyCardUse) {
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/ShoppingGoodsServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/ShoppingGoodsServiceImpl.java
index 7c8ddf9..639beac 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/ShoppingGoodsServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/ShoppingGoodsServiceImpl.java
@@ -18,7 +18,7 @@
 import com.matrix.system.hive.bean.SysShopInfo;
 import com.matrix.system.hive.dao.*;
 import com.matrix.system.hive.dto.GoodsSealLimitDto;
-import com.matrix.system.hive.dto.OrderItemDto;
+import com.matrix.system.hive.dto.SysOrderItemDto;
 import com.matrix.system.hive.service.ShoppingGoodsService;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -64,17 +64,17 @@
         //校验参数不能为空
         checkGoodsSelLimtParam(goodsSealLimitDto);
 
-        goodsSealLimitDto.getOrderItemDtoList().forEach(item -> {
+        goodsSealLimitDto.getSysOrderItemDtoList().forEach(item -> {
             ShoppingGoods shopGoods = shoppingGoodsDao.selectById(item.getGoodsId());
             //最大销售次数检测
             Integer maxNum = shopGoods.getCarMaxSaleCount();
             if (maxNum != null && maxNum != 0) {
                 Integer buyNum = orderItemDao.selectByGoodsId(shopGoods.getId(), null);
-                if ((buyNum + item.getCount()) == maxNum) {
+                if (buyNum.equals(maxNum)) {
                     if (!shopGoods.getStaus().equals(Dictionary.BUSINESS_STATE_DOWN)) {
                         shopGoods.setStaus(Dictionary.BUSINESS_STATE_DOWN);
                         shoppingGoodsDao.update(shopGoods);
-                        LogUtil.info("{}商品达到最大销售数量自动下架",shopGoods.getName());
+                        LogUtil.info("商品达到最大销售数量自动下架:{}", shopGoods.getName());
                     }
                 } else if ((buyNum + item.getCount()) > maxNum) {
                     throw new GlobleException(shopGoods.getName() + "已超过最大销售数量");
@@ -92,17 +92,14 @@
     }
 
 
-
-
-
     private void checkGoodsSelLimtParam(GoodsSealLimitDto goodsSealLimitDto) {
         ParamCheckUtil.requireNonNulls(goodsSealLimitDto,
                 goodsSealLimitDto.getVipId(),
-                goodsSealLimitDto.getOrderItemDtoList());
+                goodsSealLimitDto.getSysOrderItemDtoList());
 
 
-        ParamCheckUtil.requireListElementNonNull(goodsSealLimitDto.getOrderItemDtoList(),
-                Arrays.asList(OrderItemDto::getCount, OrderItemDto::getGoodsId));
+        ParamCheckUtil.requireListElementNonNull(goodsSealLimitDto.getSysOrderItemDtoList(),
+                Arrays.asList(SysOrderItemDto::getCount, SysOrderItemDto::getGoodsId));
     }
 
 
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
new file mode 100644
index 0000000..3eb4294
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java
@@ -0,0 +1,73 @@
+/**
+ * projectName: zq-erp
+ * fileName: SysOrderServiceHelper.java
+ * packageName: com.matrix.system.hive.service.imp
+ * date: 2022-03-11 9:33
+ * copyright(c) 2022 http://www.hydee.cn/ Inc. All rights reserved.
+ */
+package com.matrix.system.hive.service.imp;
+
+import com.matrix.system.hive.bean.ShoppingGoods;
+import com.matrix.system.hive.bean.SysOrder;
+import com.matrix.system.hive.bean.SysOrderFlow;
+import com.matrix.system.hive.dao.ShoppingGoodsDao;
+import com.matrix.system.hive.dao.SysOrderFlowDao;
+import com.matrix.system.hive.service.CodeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * @version: V1.0
+ * @author: JiangYouYao
+ * @className: SysOrderServiceHelper
+ * @packageName: com.matrix.system.hive.service.imp
+ * @description: 订单服务助手
+ * @data: 2022-03-11 9:33
+ **/
+@Component
+public class SysOrderServiceHelper {
+
+
+    @Autowired
+    private CodeService codeService;
+
+
+    @Autowired
+    ShoppingGoodsDao shoppingGoodsDao;
+
+    @Autowired
+    private SysOrderFlowDao sysOrderFlowDao;
+
+    /**
+     * 创建支付流水
+     *
+     * @author:姜友瑶
+     */
+    public void addOrderFlow(SysOrder sourceOrder) {
+        //处理支付流水
+        int flowCount = 1;
+        for (SysOrderFlow flow : sourceOrder.getFlows()) {
+            flow.setFlowNo(codeService.getFlowCode() + "-" + flowCount);
+            flow.setVipId(sourceOrder.getVipId());
+            flow.setShopId(sourceOrder.getShopId());
+            flow.setCompanyId(sourceOrder.getCompanyId());
+            //支付内容摘要设置
+            Long goodsId = sourceOrder.getItems().get(0).getGoodsId();
+            ShoppingGoods goods = shoppingGoodsDao.selectById(goodsId);
+            flow.setFlowContent(goods.getName() + "等" + sourceOrder.getItems().size() + "件产品");
+            // 若是退款,则取负数
+            if (SysOrder.ORDER_TYPE_REFUND == sourceOrder.getOrderType()) {
+                flow.setFlowType(SysOrderFlow.FLOW_TYPE_REFUND);
+                flow.setAmount(flow.getAmount().negate());
+                flow.setOrderId(sourceOrder.getOldOrderId());
+            } else {
+                flow.setFlowType(SysOrderFlow.FLOW_TYPE_BUY);
+                flow.setOrderId(sourceOrder.getId());
+            }
+            sysOrderFlowDao.insert(flow);
+            flowCount++;
+        }
+    }
+
+
+}
\ No newline at end of file
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 2619287..ce7fac0 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
@@ -24,12 +24,13 @@
 import com.matrix.system.common.dao.SysUsersDao;
 import com.matrix.system.common.service.OperationLogService;
 import com.matrix.system.constance.Dictionary;
+import com.matrix.system.enums.BooleanEnum;
 import com.matrix.system.enums.OperationButtonEnum;
 import com.matrix.system.enums.OperationFunctionEnum;
 import com.matrix.system.hive.bean.*;
 import com.matrix.system.hive.dao.*;
 import com.matrix.system.hive.dto.GoodsSealLimitDto;
-import com.matrix.system.hive.dto.OrderItemDto;
+import com.matrix.system.hive.dto.SysOrderItemDto;
 import com.matrix.system.hive.plugin.util.CollectionUtils;
 import com.matrix.system.hive.plugin.util.MoneyUtil;
 import com.matrix.system.hive.pojo.CzXkVo;
@@ -135,6 +136,14 @@
 
     @Autowired
     private OperationLogService operationLogService;
+
+    @Autowired
+    private SysVipInfoService sysVipInfoService;
+
+    @Autowired
+    private SysOrderServiceHelper sysOrderServiceHelper;
+
+
 
 
     @Override
@@ -517,27 +526,17 @@
     @Transactional(rollbackFor = Exception.class)
     public void updateReceiptMoney(SysOrder pageOrder) throws GlobleException {
 
-        if (!Dictionary.ORDER_STATU_DFK.equals(pageOrder.getStatu())) {
-            throw new GlobleException("该订单已经收过款,请刷新页面再试!");
-        }
-
-
+        //校验订单是否满足收款条件
         checkOrder(pageOrder);
 
-
-        // 更新收款时间
+        // 更新订单主表信息
         updateOrderInfo(pageOrder);
 
-        // 获取用户信息
-        SysVipInfo vipInfo = sysVipInfoDao.selectById(pageOrder.getVipId());
-        if (SysVipInfo.UNDEAL_VIP == vipInfo.getIsDeal()) {
-            //非成交客户下单更新客户为成交客户
-            vipInfo.setIsDeal(SysVipInfo.DEAL_VIP);
-            sysVipInfoDao.update(vipInfo);
-        }
+        // 设置用户为成交客户
+        sysVipInfoService.updateDealStatus(pageOrder.getVipId(), BooleanEnum.TRUE.getValue());
 
         //添加支付流水
-        addOrderFlow(pageOrder);
+        sysOrderServiceHelper.addOrderFlow(pageOrder);
 
         // 设置会员充值卡使用情况
         addMoneyCardUse(pageOrder);
@@ -556,10 +555,26 @@
         //设置会员积分
         addVipScore(pageOrder);
 
-
-
+        //保存订单收款日志
+        saveOrderSkLog(pageOrder);
 
     }
+
+
+    /**
+     * 保存订单收款日志
+     * @param pageOrder
+     */
+    private void saveOrderSkLog(SysOrder pageOrder) {
+        SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+        operationLogService.saveOperation(pageOrder.getCompanyId(), pageOrder.getShopId(), user.getSuId(),
+                OperationFunctionEnum.ORDER,
+                OperationButtonEnum.ORDER_SK,
+                pageOrder.getId(),
+                pageOrder.getOrderNo(),
+                pageOrder.getVipId());
+    }
+
 
     /**
      * 付款后更新订单信息
@@ -586,7 +601,14 @@
 
         pageOrder.setCardPay(cardPayAmount.doubleValue());
         pageOrder.setCashPay(cashPayAmount.doubleValue());
-        //欠款金额在流水处理中处理了
+
+        for (SysOrderFlow flow : pageOrder.getFlows()) {
+            //欠款处理
+            if (SysOrderFlow.PAY_METHOD_ARREARS.equals(flow.getPayMethod())) {
+                pageOrder.setStatu(Dictionary.ORDER_STATU_QK);
+                pageOrder.setArrears(flow.getAmount().doubleValue());
+            }
+        }
 
         double sum = flows.stream().mapToDouble(item -> item.getAmount().doubleValue()).sum();
 
@@ -597,22 +619,24 @@
 
         sysOrderDao.update(pageOrder);
 
-        //保存单据日志
-        operationLogService.saveOperation(pageOrder.getCompanyId(), pageOrder.getShopId(), user.getSuId(),
-                OperationFunctionEnum.ORDER,
-                OperationButtonEnum.ORDER_SK,
-                pageOrder.getId(),
-                pageOrder.getOrderNo(),
-                pageOrder.getVipId());
+
     }
 
     private void checkOrder(SysOrder pageOrder) {
-        //检查交易限制调整 jyytodo 测试一下
+
+        SysOrder checkOrder = sysOrderDao.selectById(pageOrder.getId());
+
+        //状态校验
+        if (!Dictionary.ORDER_STATU_DFK.equals(checkOrder.getStatu())) {
+            throw new GlobleException("该订单已经收过款,请刷新页面再试!");
+        }
+
+        //检查交易限制调整
         GoodsSealLimitDto goodsSealLimitDto = new GoodsSealLimitDto();
         goodsSealLimitDto.setVipId(pageOrder.getVipId());
-        goodsSealLimitDto.setOrderItemDtoList(Lists.newArrayList());
+        goodsSealLimitDto.setSysOrderItemDtoList(Lists.newArrayList());
         pageOrder.getItems().forEach(e->{
-            goodsSealLimitDto.getOrderItemDtoList().add(BeanUtil.copyProperties(e, OrderItemDto.class));
+            goodsSealLimitDto.getSysOrderItemDtoList().add(BeanUtil.copyProperties(e, SysOrderItemDto.class));
         });
         shoppingGoodsService.checkGoodsSealLimit(goodsSealLimitDto);
 
@@ -811,59 +835,7 @@
         }
     }
 
-    /**
-     * 创建支付流水
-     *
-     * @author:姜友瑶
-     */
-    private void addOrderFlow(SysOrder sourceOrder) {
 
-
-        //处理支付流水
-        int flowCount = 1;
-        for (SysOrderFlow flow : sourceOrder.getFlows()) {
-            //支付内容摘要设置
-            Long goodsId = sourceOrder.getItems().get(0).getGoodsId();
-            ShoppingGoods goods = shoppingGoodsDao.selectById(goodsId);
-            flow.setFlowContent(goods.getName() + "等" + sourceOrder.getItems().size() + "件产品");
-            // 若是退款,则取负数
-            if (SysOrder.ORDER_TYPE_REFUND == sourceOrder.getOrderType()) {
-                flow.setFlowType(SysOrderFlow.FLOW_TYPE_REFUND);
-                flow.setAmount(flow.getAmount().negate());
-                flow.setOrderId(sourceOrder.getOldOrderId());
-            } else {
-                flow.setFlowType(SysOrderFlow.FLOW_TYPE_BUY);
-                flow.setOrderId(sourceOrder.getId());
-            }
-
-            //欠款处理
-            if (SysOrderFlow.PAY_METHOD_ARREARS.equals(flow.getPayMethod())) {
-                sourceOrder.setStatu(Dictionary.ORDER_STATU_QK);
-                sourceOrder.setArrears(flow.getAmount().doubleValue());
-                sysOrderDao.update(sourceOrder);
-            }
-
-            //统计储值卡支付
-            if (SysOrderFlow.PAY_METHOD_CARD.equals(flow.getPayMethod())) {
-                if (flow.getCardId() != null) {
-                    MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(flow.getCardId());
-                    //修改储值卡余额
-                    cardPaySk(moneyCardUse, sourceOrder, flow);
-                } else {
-                    throw new GlobleException("无效的储值卡支付方式");
-                }
-            }
-
-            flow.setFlowNo(codeService.getFlowCode() + "-" + flowCount);
-            flow.setVipId(sourceOrder.getVipId());
-            flow.setShopId(sourceOrder.getShopId());
-            flow.setCompanyId(sourceOrder.getCompanyId());
-            sysOrderFlowDao.insert(flow);
-            flowCount++;
-        }
-
-
-    }
 
 
     /**
@@ -1572,7 +1544,7 @@
 
         order.setFlows(czVo.getFlows());
 
-        addOrderFlow(order);
+        sysOrderServiceHelper.addOrderFlow(order);
 
         // 添加员工业绩
         achieveNewService.addAchaeveByOrder(order);
@@ -1666,7 +1638,7 @@
 
 
         // 添加订单收款流水
-        addOrderFlow(sysOrder);
+        sysOrderServiceHelper.addOrderFlow(sysOrder);
         //退款退套餐退项目
         refundProjUse(sysOrder);
         //删除积分
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysVipInfoServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysVipInfoServiceImpl.java
index 0515e39..9cdcdb4 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysVipInfoServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysVipInfoServiceImpl.java
@@ -82,6 +82,13 @@
 	@Autowired
 	private SysOrderDao sysOrderDao;
 
+	@Override
+	public void updateDealStatus(Long vipId, int isDeal) {
+		SysVipInfo vipInfo = new SysVipInfo();
+		vipInfo.setIsDeal(isDeal);
+		vipInfo.setIsDeal(SysVipInfo.DEAL_VIP);
+		sysVipInfoDao.update(vipInfo);
+	}
 
 	/**
 	 * 新增会员储值卡
diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/ShoppingGoodsDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/ShoppingGoodsDao.xml
index 42b4adc..06992bf 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/hive/ShoppingGoodsDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/hive/ShoppingGoodsDao.xml
@@ -3,7 +3,7 @@
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 
 <mapper namespace="com.matrix.system.hive.dao.ShoppingGoodsDao">
-	 <cache readOnly="true"></cache> 
+
 	<resultMap type="ShoppingGoods" id="ShoppingGoodsMap">
 	
 		<id property="id" column="id" />
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/products/shoppinggoods-md-list.html b/zq-erp/src/main/resources/templates/views/admin/hive/products/shoppinggoods-md-list.html
index 77b6bba..8211c7b 100644
--- a/zq-erp/src/main/resources/templates/views/admin/hive/products/shoppinggoods-md-list.html
+++ b/zq-erp/src/main/resources/templates/views/admin/hive/products/shoppinggoods-md-list.html
@@ -54,12 +54,10 @@
             </div>
             <div class="form-group mr-20">
                 <label for="staus">状态</label>
-                <select class="form-control autoFull" name="staus" nullmsg="状态不能为空" dataType="*" id="staus"
-                        data-filed="name"
-                        data-value="name"
-                        th:data-url="@{/admin/dataDictionary/showDataDictionary}"
-                        data-param="{type:'项目状态'}">
-                    <option value=''>请选择项目状态</option>
+                <select class="form-control " name="staus" nullmsg="状态不能为空" dataType="*" id="staus">
+                    <option value=''>全部</option>
+                    <option value='上架' selected ="selected ">上架</option>
+                    <option value=''>下架</option>
                 </select>
             </div>
             <div class="form-group mr-20">
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/products/shoppinggoods-zb-list.html b/zq-erp/src/main/resources/templates/views/admin/hive/products/shoppinggoods-zb-list.html
index a9e5af4..3e3b309 100644
--- a/zq-erp/src/main/resources/templates/views/admin/hive/products/shoppinggoods-zb-list.html
+++ b/zq-erp/src/main/resources/templates/views/admin/hive/products/shoppinggoods-zb-list.html
@@ -55,12 +55,10 @@
             </div>
             <div class="form-group mr-20">
                 <label for="staus">状态</label>
-                <select class="form-control autoFull" name="staus" nullmsg="状态不能为空" dataType="*" id="staus"
-                        data-filed="name"
-                        data-value="name"
-                        th:data-url="@{/admin/dataDictionary/showDataDictionary}"
-                        data-param="{type:'项目状态'}">
-                    <option value=''>请选择项目状态</option>
+                <select class="form-control " name="staus" nullmsg="状态不能为空" dataType="*" id="staus">
+                    <option value=''>全部</option>
+                    <option value='上架' selected ="selected ">上架</option>
+                    <option value=''>下架</option>
                 </select>
             </div>
             <div class="form-group mr-20">

--
Gitblit v1.9.1