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/service/imp/MoneyCardUseServiceImpl.java |   69 ++++++++++++++++++++++++++++++++--
 1 files changed, 65 insertions(+), 4 deletions(-)

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) {

--
Gitblit v1.9.1