From 76ed413ae6fd573996207760904304b4951df5d5 Mon Sep 17 00:00:00 2001
From: 935090232@qq.com <ak473600000>
Date: Sun, 13 Mar 2022 18:43:34 +0800
Subject: [PATCH] 重构:套餐项目

---
 zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java |  655 ++++++++---------------------------------------------------
 1 files changed, 93 insertions(+), 562 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 ce7fac0..ed9cb4b 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
@@ -64,6 +64,8 @@
     private SysOrderItemDao orderItemDao;
     @Autowired
     private SysProjUseDao sysProjUseDao;
+
+
     @Autowired
     private SysStoreInfoDao storeInfoDao;
     @Autowired
@@ -143,64 +145,16 @@
     @Autowired
     private SysOrderServiceHelper sysOrderServiceHelper;
 
+    @Autowired
+    private SysProjServicesService projServicesService;
 
 
 
-    @Override
-    public int add(SysOrder sysOrder) {
-        return sysOrderDao.insert(sysOrder);
-    }
-
-    @Override
-    public int modify(SysOrder sysOrder) {
-
-        return sysOrderDao.update(sysOrder);
-
-    }
-
-    @Override
-    public int remove(List<Long> list) {
-
-        return sysOrderDao.deleteByIds(list);
-
-    }
-
-    @Override
-    @Transactional
-    public int removeById(Long id) {
-        orderItemDao.deleteByOrderId(id);
-        return sysOrderDao.deleteById(id);
-    }
-
-    @Override
-    public List<SysOrder> findInPage(SysOrder sysOrder, PaginationVO pageVo) {
-        if (pageVo != null) {
-            pageVo.setSort("desc");
-            pageVo.setSort("orderTime");
-        }
-        return sysOrderDao.selectInPage(sysOrder, pageVo);
-    }
+    @Autowired
+    MoneyCardUseService moneyCardUseService;
 
 
-    @Override
-    public List<SysOrder> findByModel(SysOrder sysOrder) {
-        return sysOrderDao.selectByModel(sysOrder);
-    }
-
-
-    @Override
-    public int findTotal(SysOrder sysOrder) {
-
-        return sysOrderDao.selectInPageCount(sysOrder);
-
-    }
-
-    @Override
-    public SysOrder findById(Long id) {
-        return sysOrderDao.selectById(id);
-
-    }
-
+    //↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓业务代码区↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -317,7 +271,7 @@
 
             sysOrderDao.update(order);
             //保存单据日志
-            operationLogService.saveOperation(order.getCompanyId(), order.getShopId(),sysUsers.getSuId(),
+            operationLogService.saveOperation(order.getCompanyId(), order.getShopId(), sysUsers.getSuId(),
                     OperationFunctionEnum.ORDER,
                     OperationButtonEnum.CANCEL,
                     order.getId(),
@@ -422,7 +376,7 @@
             order.setStatu(Dictionary.ORDER_STATU_YQX);
             sysOrderDao.update(order);
             //保存单据日志
-            operationLogService.saveOperation(order.getCompanyId(), order.getShopId(),sysUsers.getSuId(),
+            operationLogService.saveOperation(order.getCompanyId(), order.getShopId(), sysUsers.getSuId(),
                     OperationFunctionEnum.ORDER,
                     OperationButtonEnum.CANCEL,
                     order.getId(),
@@ -430,7 +384,6 @@
                     order.getVipId(),
                     "已付款取消订单");
         }
-
 
 
     }
@@ -536,13 +489,16 @@
         sysVipInfoService.updateDealStatus(pageOrder.getVipId(), BooleanEnum.TRUE.getValue());
 
         //添加支付流水
-        sysOrderServiceHelper.addOrderFlow(pageOrder);
+        sysOrderServiceHelper.addOrderFlow(pageOrder,false);
+
+        //扣除储值卡余额
+        sysOrderServiceHelper.cardPaySk(pageOrder);
 
         // 设置会员充值卡使用情况
-        addMoneyCardUse(pageOrder);
+        sysOrderServiceHelper.addMoneyCardUse(pageOrder);
 
         // 改变客户项目套餐使用情况
-        addTaocanProj(pageOrder);
+        sysOrderServiceHelper.addTaocanProj(pageOrder);
 
         // 新增出库单
         addOutStore(pageOrder);
@@ -550,7 +506,6 @@
         // 设置业绩
         achieveNewService.addAchaeveByOrder(pageOrder);
 
-        setShopSelCount(pageOrder);
 
         //设置会员积分
         addVipScore(pageOrder);
@@ -563,6 +518,7 @@
 
     /**
      * 保存订单收款日志
+     *
      * @param pageOrder
      */
     private void saveOrderSkLog(SysOrder pageOrder) {
@@ -582,7 +538,7 @@
      * @param pageOrder
      */
     private void updateOrderInfo(SysOrder pageOrder) {
-
+        LogUtil.info("付款更新订单信息 id={}",pageOrder.getId());
         SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
         pageOrder.setCashierId(user.getSuId());
 
@@ -635,17 +591,17 @@
         GoodsSealLimitDto goodsSealLimitDto = new GoodsSealLimitDto();
         goodsSealLimitDto.setVipId(pageOrder.getVipId());
         goodsSealLimitDto.setSysOrderItemDtoList(Lists.newArrayList());
-        pageOrder.getItems().forEach(e->{
+        pageOrder.getItems().forEach(e -> {
             goodsSealLimitDto.getSysOrderItemDtoList().add(BeanUtil.copyProperties(e, SysOrderItemDto.class));
         });
         shoppingGoodsService.checkGoodsSealLimit(goodsSealLimitDto);
 
         //检查业绩设置
         checkOrderAchieve(pageOrder);
+
+        LogUtil.info("订单满足支付条件 id={}",pageOrder.getId());
+
     }
-
-
-
 
 
     /**
@@ -680,11 +636,8 @@
     }
 
 
-
-
     /**
      * 设置会员消费积分
-     *
      * @param pageOrder
      */
     private void addVipScore(SysOrder pageOrder) {
@@ -838,215 +791,10 @@
 
 
 
-    /**
-     * 验证商品是否达到最大发卡限制
-     *
-     * @author jiangyouyao
-     */
-    private void checkIsArrivedMax(ShoppingCarItem carItem) {
-        // 获取该商品的最大购买数量
-        ShoppingGoods shopGoods = shoppingGoodsDao.selectById(carItem.getGoodsId());
-        Integer maxNum = shopGoods.getCarMaxSaleCount();
-        // 最大发卡数量为0代表不做限制
-        if (maxNum != null && maxNum != 0) {
-            // 查询该商品已经被购买的次数
-            Integer buyNum = orderItemDao.selectByGoodsId(shopGoods.getId(), null);
-            buyNum = (buyNum == null ? 0 : buyNum);
-            if ((buyNum + carItem.getCount()) > maxNum) {
-                throw new GlobleException(shopGoods.getName() + "已超过最大销售数量");
-            }
-            if ((buyNum + carItem.getCount()) == maxNum) {
-                if (!shopGoods.getStaus().equals(Dictionary.BUSINESS_STATE_DOWN)) {
-                    shopGoods.setStaus(Dictionary.BUSINESS_STATE_DOWN);
-                    shoppingGoodsDao.update(shopGoods);
-                }
-            }
-
-        }
-    }
 
 
     /**
-     * 使用充值卡付款操作
-     *
-     * @param sourceOrder
-     * @param moneyCardUse
-     * @param flow
-     */
-    private void cardPaySk(MoneyCardUse moneyCardUse, SysOrder sourceOrder, SysOrderFlow flow) {
-        // 判断商品是否在充值卡的限制购买,判断分类
-        sourceOrder.getItems().forEach(item -> {
-            if (!isInBangding(moneyCardUse, item.getGoodsId())) {
-                throw new GlobleException(shoppingGoodsDao.selectById(item.getGoodsId()).getName() + "不在" + moneyCardUse.getCardName() + "优惠中");
-            }
-        });
-
-        SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
-
-        MoneyCardUseFlow moneyCardUseFlow = new MoneyCardUseFlow();
-        if (SysOrderFlow.IS_GIFT_Y.equals(flow.getIsGift())) {
-            if (moneyCardUse.getGiftMoney() >= flow.getAmount().doubleValue()) {
-                double surplus = MoneyUtil.sub(moneyCardUse.getGiftMoney(), flow.getAmount().doubleValue());
-                moneyCardUse.setGiftMoney(surplus);
-                moneyCardUseFlow.setGiftMoney(0D - flow.getAmount().doubleValue());
-            } else {
-                throw new GlobleException(moneyCardUse.getCardName() + "余额不足");
-            }
-        } else {
-            if (moneyCardUse.getRealMoney() >= flow.getAmount().doubleValue()) {
-                double surplus = MoneyUtil.sub(moneyCardUse.getRealMoney(), flow.getAmount().doubleValue());
-                moneyCardUse.setRealMoney(surplus);
-                moneyCardUseFlow.setTotal(0 - flow.getAmount().doubleValue());
-            } else {
-                throw new GlobleException(moneyCardUse.getCardName() + "余额不足");
-            }
-        }
-
-        if (moneyCardUse.getIsVipCar().equals(Dictionary.FLAG_NO_N)) {
-            //余额为0时充值卡变为无效
-            if (moneyCardUse.getRealMoney().equals(0D) && moneyCardUse.getGiftMoney().equals(0D)) {
-                moneyCardUse.setIsOver(Dictionary.FLAG_YES_Y);
-                moneyCardUse.setStatus(Dictionary.MONEYCARD_STATUS_WX);
-            }
-        }
-
-        ShoppingGoods shoppingGoods = shoppingGoodsService.findById(moneyCardUse.getGoodsId());
-        if (shoppingGoods != null) {
-            Date invalidTime = shoppingGoodsService.calInvalidTime(shoppingGoods, 2, moneyCardUse.getFailTime());
-            moneyCardUse.setFailTime(invalidTime);
-        }
-        // 更新充值卡信息
-        moneyCardUseDao.update(moneyCardUse);
-        //设置卡项使用流水
-        moneyCardUseFlow.setCarUseId(moneyCardUse.getId());
-        moneyCardUseFlow.setOrderNo(sourceOrder.getOrderNo());
-        moneyCardUseFlow.setVipId(sourceOrder.getVipId());
-        moneyCardUseFlow.setTimes(-1);
-        moneyCardUseFlow.setType(MoneyCardUseFlow.USE_TYPE_CONSUMER);
-        moneyCardUseFlow.setCreateTime(new Date());
-        moneyCardUseFlow.setOperationId(user.getSuId());
-        moneyCardUseFlow.setBalance(moneyCardUse.getGiftMoney() + moneyCardUse.getRealMoney());
-        moneyCardUseFlowDao.insert(moneyCardUseFlow);
-    }
-
-    /**
-     * @param moneyCardUse
-     * @param goodsId
-     * @return 返回类型 boolean
-     * 判断商品是否在充值卡的优惠中
-     * @author:姜友瑶
-     * @date 2016年9月19日
-     */
-    private boolean isInBangding(MoneyCardUse moneyCardUse, Long goodsId) {
-        // 如果是一卡通则肯定在绑定范围内
-
-        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;
-        }
-    }
-
-    /**
-     * 设置销量
-     *
-     * @param sourceOrder
-     */
-    public void setShopSelCount(SysOrder sourceOrder) {
-        for (SysOrderItem item : sourceOrder.getItems()) {
-            // 正真实销量
-            ShoppingGoods goods = shoppingGoodsDao.selectById(item.getGoodsId());
-            if (goods.getRealSealCount() == null) {
-                goods.setRealSealCount(item.getCount());
-            } else {
-                goods.setRealSealCount(goods.getRealSealCount() + item.getCount());
-            }
-            shoppingGoodsDao.update(goods);
-        }
-    }
-
-    /**
-     * @param sourceOrder 如果购买了充值卡设置会员的充值卡
-     * @author:姜友瑶
-     * @date 2016年9月19日
-     */
-    public void addMoneyCardUse(SysOrder sourceOrder) {
-        SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
-        List<SysOrderItem> orderItemList = sourceOrder.getItems();
-        for (SysOrderItem sysOrderItem : orderItemList) {
-            // 如果购买的是充值卡
-            if (sysOrderItem.getType().equals(Dictionary.SHOPPING_GOODS_TYPE_CZK)) {
-
-                for (int i = 0; i < sysOrderItem.getCount(); i++) {
-                    ShoppingGoods moneyCar = shoppingGoodsDao.selectById(sysOrderItem.getGoodsId());
-                    MoneyCardUse moneyCardUse = new MoneyCardUse();
-                    moneyCardUse.setVipId(sourceOrder.getVipId());
-                    moneyCardUse.setGiftMoney(moneyCar.getReferencePice());
-                    moneyCardUse.setRealMoney(moneyCar.getSealPice());
-                    moneyCardUse.setGoodsId(moneyCar.getId());
-                    moneyCardUse.setOrderItemId(sysOrderItem.getId());
-                    moneyCardUse.setSource(Dictionary.TAOCAN_SOURCE_GM);
-                    moneyCardUse.setStatus(Dictionary.MONEYCARD_STATUS_YX);
-                    moneyCardUse.setCardName(moneyCar.getName());
-                    moneyCardUse.setIsVipCar(Dictionary.FLAG_NO_N);
-                    moneyCardUse.setVipId(sourceOrder.getVipId());
-
-                    // 是否为赠送
-                    if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_YES)) {
-                        moneyCardUse.setSource(Dictionary.TAOCAN_SOURCE_ZS);
-                    } else {
-                        moneyCardUse.setSource(Dictionary.TAOCAN_SOURCE_GM);
-                    }
-                    //余次处理
-                    if (moneyCar.getCarUseCount() == null || moneyCar.getCarUseCount() == 0) {
-                        moneyCardUse.setUseTotal(999999999);
-                        moneyCardUse.setLastCount(999999999);
-                    } else {
-                        moneyCardUse.setUseTotal(moneyCar.getCarUseCount());
-                        moneyCardUse.setLastCount(moneyCar.getCarUseCount());
-                    }
-                    //失效时间处理
-                    Date invalidTime = shoppingGoodsService.calInvalidTime(sysOrderItem.getShoppingGoods(), 1, null);
-                    moneyCardUse.setFailTime(invalidTime);
-
-                    moneyCardUseDao.insert(moneyCardUse);
-
-                }
-            }
-        }
-    }
-
-    /**
+     * 补交
      * @author:姜友瑶
      * @date 2016年9月19日
      */
@@ -1055,50 +803,32 @@
     public void updateAfterMoney(SysOrder pageOrder) {
         SysOrder sourceOrder = sysOrderDao.selectById(pageOrder.getId());
 
-        int i = 1;
+
+        //添加支付流水
+        sysOrderServiceHelper.addOrderFlow(pageOrder,true);
+
+        //扣除储值卡余额
+        sysOrderServiceHelper.cardPaySk(pageOrder);
+
+
         double refundTotal = 0D;
         double cardPayTotal = 0D;
         double cashPayTotal = 0D;
         for (SysOrderFlow flow : pageOrder.getFlows()) {
-            flow.setFlowNo(codeService.getFlowCode() + "-" + i);
-            Long goodsId = pageOrder.getItems().get(0).getGoodsId();
-            ShoppingGoods goods = shoppingGoodsDao.selectById(goodsId);
-            flow.setFlowContent(goods.getName() + "等" + pageOrder.getItems().size() + "件产品");
-
-            flow.setOrderId(pageOrder.getId());
-            flow.setVipId(pageOrder.getVipId());
-            flow.setFlowType(SysOrderFlow.FLOW_TYPE_REPAY);
             // 若使用储值卡付款
             if (SysOrderFlow.PAY_METHOD_CARD.equals(flow.getPayMethod())) {
-                if (flow.getCardId() != null) {
-                    cardPayTotal += flow.getAmount().doubleValue();
-                    MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(flow.getCardId());
-                    cardPaySk(moneyCardUse, pageOrder, flow);
-                }
+                cardPayTotal += flow.getAmount().doubleValue();
             } else {
                 cashPayTotal += flow.getAmount().doubleValue();
             }
-
             refundTotal += flow.getAmount().doubleValue();
-            flow.setShopId(sourceOrder.getShopId());
-            flow.setCompanyId(sourceOrder.getCompanyId());
-            sysOrderFlowDao.insert(flow);
-            i++;
         }
-
-        boolean haQk = false;
 
         if (refundTotal == pageOrder.getArrears()) {
-            haQk = true;
-        }
-
-        //更新收款状态
-        if (haQk) {
             sourceOrder.setStatu(Dictionary.ORDER_STATU_YFK);
-        } else {
+        }else{
             sourceOrder.setStatu(Dictionary.ORDER_STATU_QK);
         }
-
         sourceOrder.setArrears(sourceOrder.getArrears() - refundTotal);
         sourceOrder.setCardPay(sourceOrder.getCardPay() == null ? 0 : sourceOrder.getCardPay() + cardPayTotal);
         sourceOrder.setCashPay(sourceOrder.getCashPay() == null ? 0 : sourceOrder.getCashPay() + cashPayTotal);
@@ -1223,237 +953,11 @@
 
     }
 
-    /**
-     * 新增项目和套餐的余次
-     *
-     * @author:姜友瑶
-     * @date 2016年9月2日
-     */
-    public void addTaocanProj(SysOrder order) {
-        List<SysOrderItem> itemList = order.getItems();
-        for (SysOrderItem sysOrderItem : itemList) {
-            // 折扣 项目的实际购买除以项目原价,来计算项目的消耗价格
-            // 赠送 计算全额的消耗业绩
-            if (sysOrderItem.getType().equals(Dictionary.SHOPPING_GOODS_TYPE_XM)) {
-                createXmProjuse(order, sysOrderItem);
-            } else if (sysOrderItem.getType().equals(Dictionary.SHOPPING_GOODS_TYPE_TC)) {
-                //每个套餐独立生成一个明细
-                int orderCount = sysOrderItem.getCount();
-                while (orderCount > 0) {
-                    createTaocanProjUse(order, sysOrderItem, null);
-                    orderCount--;
-                }
-            } else if (sysOrderItem.getType().equals(Dictionary.SHOPPING_GOODS_TYPE_ZHK)) {
-                addZongheCarUse(order, sysOrderItem);
-            }
-        }
-
-    }
-
-    public void addZongheCarUse(SysOrder order, SysOrderItem sysOrderItem) {
 
 
-        //处理一个订单买多次
-        int orderCount = sysOrderItem.getCount();
-        while (orderCount < 0) {
-            orderCount--;
-            //综合卡中包含的项目
-            List<ShoppingGoodsAssemble> assembleList = shoppingGoodsAssembleDao.selectGoodsByShoppingGoodsIdAndType(sysOrderItem.getGoodsId(), ShoppingGoods.SHOPPING_GOODS_TYPE_XM);
-            assembleList.forEach(item -> {
-                //TODO 补综合卡逻辑
-                createProjuseByAssemble(order, sysOrderItem, item, null, null, null, 0);
-            });
-
-            //处理综合卡中包含的套餐
-            List<ShoppingGoodsAssemble> zhkAssemble = shoppingGoodsAssembleDao.selectGoodsByShoppingGoodsIdAndType(sysOrderItem.getGoodsId(), ShoppingGoods.SHOPPING_GOODS_TYPE_TC);
-            zhkAssemble.forEach(taocan -> {
-                int assembleCount = taocan.getTotal();
-                while (assembleCount > 0) {
-                    assembleCount--;
-                    createTaocanProjUse(order, sysOrderItem, taocan);
-                }
-            });
-        }
 
 
-    }
 
-    /**
-     * 通过组合关系创建用户项目余次
-     */
-    private SysProjUse createProjuseByAssemble(SysOrder order, SysOrderItem sysOrderItem,
-                                               ShoppingGoodsAssemble goodsAssemble, Long taocanId, Date failTime, String source, Integer maxCount) {
-        //计算折扣
-        Double zk = sysOrderItem.getZkPrice() / sysOrderItem.getPrice();
-
-        SysProjUse puse = new SysProjUse();
-        puse.setIsOver(Dictionary.DELETED_N);
-        puse.setOrderItemId(sysOrderItem.getId());
-        puse.setProjId(goodsAssemble.getAssembleGoodId());
-        puse.setSurplusCount(goodsAssemble.getTotal() == null ? maxCount : goodsAssemble.getTotal());
-        puse.setDeductionNum(goodsAssemble.getDeductionNum());
-        puse.setProjName(goodsAssemble.getShoppingGoods().getName());
-        puse.setVipId(order.getVipId());
-        puse.setStatus(Dictionary.TAOCAN_STATUS_YX);
-        puse.setTaocanId(taocanId);
-        puse.setType(Dictionary.SHOPPING_GOODS_TYPE_XM);
-        puse.setSource(source);
-
-        if (taocanId == null) {
-            puse.setPrice(goodsAssemble.getShoppingGoods().getPrice() * zk);
-        } else {
-            puse.setPrice(goodsAssemble.getPrice() * zk);
-        }
-
-
-        //赠送项目是否计算消耗业绩否则 赠送产品按原价计算消耗
-        boolean zsConsumeAchieve = projServicesService.skipServiceOrderStep(Dictionary.ZS_CONSUME_ACHIEVE);
-        if (zsConsumeAchieve) {
-            if (sysOrderItem.getPrice() <= 0) {
-                //等于0取原价
-                if (taocanId == null) {
-                    puse.setPrice(goodsAssemble.getShoppingGoods().getPrice());
-                } else {
-                    puse.setPrice(goodsAssemble.getPrice());
-                }
-            }
-        } else {
-            puse.setPrice(0D);
-        }
-
-        puse.setBalance(MoneyUtil.mul(puse.getPrice(), Double.valueOf(puse.getSurplusCount())));
-        puse.setFailTime(failTime);
-        sysProjUseDao.insert(puse);
-        return puse;
-    }
-
-
-    private void createTaocanProjUse(SysOrder order, SysOrderItem sysOrderItem, ShoppingGoodsAssemble goodsAssemble) {
-
-        //新建套餐
-        SysProjUse taocanProjUse = new SysProjUse();
-
-        ShoppingGoods taocanShoppingGoods = sysOrderItem.getShoppingGoods();
-
-
-        Long projId = sysOrderItem.getGoodsId();
-
-        if (goodsAssemble != null) {
-            taocanShoppingGoods = shoppingGoodsDao.selectById(goodsAssemble.getAssembleGoodId());
-            projId = goodsAssemble.getAssembleGoodId();
-        }
-
-        taocanProjUse.setProjId(projId);
-        taocanProjUse.setIsOver(Dictionary.DELETED_N);
-        taocanProjUse.setOrderItemId(sysOrderItem.getId());
-
-        taocanProjUse.setProjName(taocanShoppingGoods.getName());
-        taocanProjUse.setVipId(order.getVipId());
-        taocanProjUse.setStatus(Dictionary.TAOCAN_STATUS_YX);
-        taocanProjUse.setType(Dictionary.SHOPPING_GOODS_TYPE_TC);
-        taocanProjUse.setIsCourse(taocanShoppingGoods.getIsCourse());
-        taocanProjUse.setIsInfinite(taocanShoppingGoods.getIsInfinite());
-        // 赠送和打折后金额为0的都视为赠送项目
-        if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_NO) && sysOrderItem.getZkPrice() > 0 && !isGiftMoneyPay(order)) {
-            taocanProjUse.setSource(Dictionary.TAOCAN_SOURCE_GM);
-        } else {
-            taocanProjUse.setSource(Dictionary.TAOCAN_SOURCE_ZS);
-        }
-        // 失效时间
-        Date invalidTime = shoppingGoodsService.calInvalidTime(taocanShoppingGoods, 1, null);
-        taocanProjUse.setFailTime(invalidTime);
-        sysProjUseDao.insert(taocanProjUse);
-        //计划次数
-        int surplusCount = 0;
-        //总余额
-        Double sumBanance = 0D;
-        //创建套餐绑定的项目
-        List<ShoppingGoodsAssemble> assembleList = shoppingGoodsAssembleDao.selectGoodsByShoppingGoodsIdAndType(projId, ShoppingGoods.SHOPPING_GOODS_TYPE_XM);
-        for (ShoppingGoodsAssemble assemble : assembleList) {
-            SysProjUse tempUse = createProjuseByAssemble(order, sysOrderItem, assemble, taocanProjUse.getId(), taocanProjUse.getFailTime(), taocanProjUse.getSource(), taocanShoppingGoods.getCarUseCount());
-            sumBanance += tempUse.getBalance();
-            surplusCount += tempUse.getSurplusCount();
-        }
-        if (Dictionary.FLAG_NO_N.equals(taocanShoppingGoods.getIsCourse())) {
-            //固定套餐,剩余次数等于绑定项目的次数
-            taocanProjUse.setSurplusCount(surplusCount);
-            //合计套餐余额
-            taocanProjUse.setBalance(sumBanance);
-        } else {
-            //任选套餐剩余次数等于最大使用次数
-            taocanProjUse.setSurplusCount(taocanShoppingGoods.getCarUseCount());
-            taocanProjUse.setBalance(sysOrderItem.getZkPrice());
-        }
-
-        sysProjUseDao.update(taocanProjUse);
-    }
-
-    @Autowired
-    private SysProjServicesService projServicesService;
-
-    /**
-     * 根据订单创建用户项目使用情况
-     *
-     * @param order
-     * @param sysOrderItem
-     */
-    private void createXmProjuse(SysOrder order, SysOrderItem sysOrderItem) {
-        SysProjUse puse = new SysProjUse();
-        puse.setIsOver(Dictionary.DELETED_N);
-        puse.setOrderItemId(sysOrderItem.getId());
-        puse.setProjId(sysOrderItem.getGoodsId());
-        puse.setSurplusCount(sysOrderItem.getCount());
-        puse.setVipId(order.getVipId());
-        puse.setStatus(Dictionary.TAOCAN_STATUS_YX);
-        puse.setType(Dictionary.SHOPPING_GOODS_TYPE_XM);
-
-
-        puse.setProjName(sysOrderItem.getShoppingGoods().getName());
-
-
-        // 赠送和打折后金额为0的都视为赠送项目
-        if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_NO) && sysOrderItem.getZkPrice() > 0 && !isGiftMoneyPay(order)) {
-            puse.setSource(Dictionary.TAOCAN_SOURCE_GM);
-            puse.setPrice(sysOrderItem.getZkPrice());
-        } else {
-            puse.setSource(Dictionary.TAOCAN_SOURCE_ZS);
-            //赠送项目是否计算消耗业绩否则 赠送产品按原价计算消耗
-            boolean zsConsumeAchieve = projServicesService.skipServiceOrderStep(Dictionary.ZS_CONSUME_ACHIEVE);
-            if (zsConsumeAchieve) {
-                //赠送情况下,如果收款金额大于0,就是赠送金额划扣的情况,金额即为划扣的折扣金额
-                if (sysOrderItem.getZkPrice() > 0) {
-                    puse.setPrice(sysOrderItem.getZkPrice());
-                } else {
-                    puse.setPrice(sysOrderItem.getShoppingGoods().getSealPice());
-                }
-            } else {
-                puse.setPrice(0D);
-            }
-        }
-        // 设置失效时间
-        Date invalidTime = shoppingGoodsService.calInvalidTime(sysOrderItem.getShoppingGoods(), 1, null);
-        puse.setFailTime(invalidTime);
-        puse.setBalance(puse.getPrice() * puse.getSurplusCount());
-        sysProjUseDao.insert(puse);
-    }
-
-    /**
-     * 全是赠送金额,且配置了赠送金额购买计算为赠送
-     *
-     * @param order
-     * @return
-     */
-    private boolean isGiftMoneyPay(SysOrder order) {
-        BusParameterSettings giftiIsfree = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.SHOP_MANAGE_GIFTISFREE, order.getCompanyId());
-        if (giftiIsfree.getParamValue().equals("是")) {
-            return order.getFlows().stream().allMatch(item -> SysOrderFlow.IS_GIFT_Y.equals(item.getIsGift())
-                    && item.getAmount().doubleValue() > 0D);
-        } else {
-            return false;
-        }
-
-
-    }
 
 
     /**
@@ -1544,7 +1048,7 @@
 
         order.setFlows(czVo.getFlows());
 
-        sysOrderServiceHelper.addOrderFlow(order);
+        sysOrderServiceHelper.addOrderFlow(order,false);
 
         // 添加员工业绩
         achieveNewService.addAchaeveByOrder(order);
@@ -1638,7 +1142,7 @@
 
 
         // 添加订单收款流水
-        sysOrderServiceHelper.addOrderFlow(sysOrder);
+        sysOrderServiceHelper.addOrderFlow(sysOrder,false);
         //退款退套餐退项目
         refundProjUse(sysOrder);
         //删除积分
@@ -1657,38 +1161,6 @@
 
     }
 
-    private void addRefundOrderFlow(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() + "件产品");
-            // 退款,则取负数
-            flow.setFlowType(SysOrderFlow.FLOW_TYPE_REFUND);
-            flow.setAmount(flow.getAmount().negate());
-            flow.setOrderId(sourceOrder.getOldOrderId());
-
-            //统计储值卡支付
-            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++;
-        }
-    }
 
     private void refundCard(MoneyCardUse moneyCardUse, SysOrder sourceOrder, SysOrderFlow flow) {
         SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
@@ -1886,4 +1358,63 @@
     public BigDecimal findVipArrearsByVipId(Long vipId) {
         return sysOrderDao.selectArrearsByVipId(vipId);
     }
+
+
+    //↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓===增删改查代码区↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
+
+
+    @Override
+    public int add(SysOrder sysOrder) {
+        return sysOrderDao.insert(sysOrder);
+    }
+
+    @Override
+    public int modify(SysOrder sysOrder) {
+
+        return sysOrderDao.update(sysOrder);
+
+    }
+
+    @Override
+    public int remove(List<Long> list) {
+
+        return sysOrderDao.deleteByIds(list);
+
+    }
+
+    @Override
+    @Transactional
+    public int removeById(Long id) {
+        orderItemDao.deleteByOrderId(id);
+        return sysOrderDao.deleteById(id);
+    }
+
+    @Override
+    public List<SysOrder> findInPage(SysOrder sysOrder, PaginationVO pageVo) {
+        if (pageVo != null) {
+            pageVo.setSort("desc");
+            pageVo.setSort("orderTime");
+        }
+        return sysOrderDao.selectInPage(sysOrder, pageVo);
+    }
+
+
+    @Override
+    public List<SysOrder> findByModel(SysOrder sysOrder) {
+        return sysOrderDao.selectByModel(sysOrder);
+    }
+
+
+    @Override
+    public int findTotal(SysOrder sysOrder) {
+
+        return sysOrderDao.selectInPageCount(sysOrder);
+
+    }
+
+    @Override
+    public SysOrder findById(Long id) {
+        return sysOrderDao.selectById(id);
+
+    }
 }

--
Gitblit v1.9.1