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/SysOrderServiceHelper.java |  175 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 170 insertions(+), 5 deletions(-)

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
index 3eb4294..6aad069 100644
--- 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
@@ -7,14 +7,33 @@
  */
 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 cn.hutool.core.collection.CollUtil;
+import com.alibaba.fastjson.JSON;
+import com.google.common.collect.Lists;
+import com.matrix.core.constance.MatrixConstance;
+import com.matrix.core.exception.GlobleException;
+import com.matrix.core.tools.LogUtil;
+import com.matrix.core.tools.WebUtil;
+import com.matrix.system.common.bean.BusParameterSettings;
+import com.matrix.system.common.bean.SysUsers;
+import com.matrix.system.common.constance.AppConstance;
+import com.matrix.system.common.dao.BusParameterSettingsDao;
+import com.matrix.system.constance.Dictionary;
+import com.matrix.system.hive.bean.*;
 import com.matrix.system.hive.dao.ShoppingGoodsDao;
 import com.matrix.system.hive.dao.SysOrderFlowDao;
+import com.matrix.system.hive.dto.MoneyCardOperationDto;
+import com.matrix.system.hive.dto.MoneyCardPayDto;
+import com.matrix.system.hive.dto.ProjUseOperationDto;
+import com.matrix.system.hive.plugin.util.CollectionUtils;
 import com.matrix.system.hive.service.CodeService;
+import com.matrix.system.hive.service.MoneyCardUseService;
+import com.matrix.system.hive.service.SysProjUseService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @version: V1.0
@@ -29,6 +48,9 @@
 
 
     @Autowired
+    private SysProjUseService sysProjUseService;
+
+    @Autowired
     private CodeService codeService;
 
 
@@ -38,12 +60,21 @@
     @Autowired
     private SysOrderFlowDao sysOrderFlowDao;
 
+    @Autowired
+    BusParameterSettingsDao busParameterSettingsDao;
+
+
+    @Autowired
+    MoneyCardUseService moneyCardUseService;
+
     /**
      * 创建支付流水
      *
      * @author:姜友瑶
      */
-    public void addOrderFlow(SysOrder sourceOrder) {
+    public void addOrderFlow(SysOrder sourceOrder, boolean isBj) {
+
+        LogUtil.info("创建支付流水 id={}", sourceOrder.getId());
         //处理支付流水
         int flowCount = 1;
         for (SysOrderFlow flow : sourceOrder.getFlows()) {
@@ -61,7 +92,12 @@
                 flow.setAmount(flow.getAmount().negate());
                 flow.setOrderId(sourceOrder.getOldOrderId());
             } else {
-                flow.setFlowType(SysOrderFlow.FLOW_TYPE_BUY);
+                if (isBj) {//jyytodo 优化不能根据isbj来判断流水类型
+                    flow.setFlowType(SysOrderFlow.FLOW_TYPE_REPAY);
+                } else {
+                    flow.setFlowType(SysOrderFlow.FLOW_TYPE_BUY);
+                }
+
                 flow.setOrderId(sourceOrder.getId());
             }
             sysOrderFlowDao.insert(flow);
@@ -70,4 +106,133 @@
     }
 
 
+    /**
+     * 新增项目和套餐的余次
+     *
+     * @author:姜友瑶
+     * @date 2016年9月2日
+     */
+    public void addTaocanProj(SysOrder order) {
+        List<SysOrderItem> itemList = order.getItems();
+        List<ProjUseOperationDto> projUseDtoList = Lists.newArrayList();
+        for (SysOrderItem sysOrderItem : itemList) {
+            // 折扣 项目的实际购买除以项目原价,来计算项目的消耗价格
+            // 赠送 计算全额的消耗业绩
+            ProjUseOperationDto projUseOperationDto = new ProjUseOperationDto();
+            if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_NO) && sysOrderItem.getZkPrice() > 0 && !isGiftMoneyPay(order)) {
+                projUseOperationDto.setFree(false);
+            } else {
+                projUseOperationDto.setFree(true);
+            }
+            if (sysOrderItem.getType().equals(Dictionary.SHOPPING_GOODS_TYPE_TC)) {
+                //计算折扣
+                Double zk = sysOrderItem.getZkPrice() / sysOrderItem.getPrice();
+                projUseOperationDto.setTcZk(zk);
+            }
+            projUseOperationDto.setPayMoney(sysOrderItem.getZkPrice());
+            projUseOperationDto.setGoodsId(sysOrderItem.getGoodsId());
+            projUseOperationDto.setCount(sysOrderItem.getCount());
+            projUseOperationDto.setVipId(order.getVipId());
+            projUseOperationDto.setOrderItemId(sysOrderItem.getId());
+            projUseDtoList.add(projUseOperationDto);
+        }
+        sysProjUseService.addUserProjUse(projUseDtoList);
+    }
+
+    /**
+     * 全是赠送金额,且配置了赠送金额购买计算为赠送
+     *
+     * @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;
+        }
+
+
+    }
+
+
+    /**
+     * 使用充值卡付款操作
+     *
+     * @param pageOrder
+     */
+    public void cardPaySk(SysOrder pageOrder) {
+
+
+        SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
+        List<SysOrderFlow> flows = pageOrder.getFlows();
+        List<Long> goodsIds = pageOrder.getItems().stream().map(e -> e.getGoodsId()).collect(Collectors.toList());
+
+        List<MoneyCardPayDto> moneyCardPayDtoList = Lists.newArrayList();
+
+        flows.forEach(flow -> {
+            if (SysOrderFlow.PAY_METHOD_CARD.equals(flow.getPayMethod())) {
+                if (flow.getCardId() != null) {
+                    MoneyCardPayDto dto = new MoneyCardPayDto();
+                    dto.setOrderNo(pageOrder.getOrderNo());
+                    dto.setOrderId(pageOrder.getId());
+                    dto.setCount(1);
+                    dto.setCarUseId(flow.getCardId());
+                    dto.setType(MoneyCardUseFlow.USE_TYPE_CONSUMER);
+                    if (SysOrderFlow.IS_GIFT_Y.equals(flow.getIsGift())) {
+                        dto.setGiftMoney(flow.getAmount().doubleValue());
+                    } else {
+                        dto.setRealMoney(flow.getAmount().doubleValue());
+                    }
+                    dto.setUpdateUser(user.getSuId());
+                    dto.setGoodsIds(goodsIds);
+                    moneyCardPayDtoList.add(dto);
+                } else {
+                    throw new GlobleException("无效的储值卡支付方式");
+                }
+            }
+        });
+
+        if (CollectionUtils.isNotEmpty(moneyCardPayDtoList)) {
+            LogUtil.info("扣除储值卡余额{}", JSON.toJSONString(moneyCardPayDtoList));
+            moneyCardUseService.changeMoneyCard(moneyCardPayDtoList);
+        }
+    }
+
+    /**
+     * @param sourceOrder 如果购买了充值卡设置会员的充值卡
+     * @author:姜友瑶
+     * @date 2016年9月19日
+     */
+    public void addMoneyCardUse(SysOrder sourceOrder) {
+        List<MoneyCardOperationDto> moneyCardOperationDtos = Lists.newArrayList();
+        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++) {
+
+                    MoneyCardOperationDto moneyCardOperationDto = new MoneyCardOperationDto();
+                    moneyCardOperationDto.setVipId(sourceOrder.getVipId());
+                    // 是否为赠送
+                    if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_YES)) {
+                        moneyCardOperationDto.setSource(Dictionary.TAOCAN_SOURCE_ZS);
+                    } else {
+                        moneyCardOperationDto.setSource(Dictionary.TAOCAN_SOURCE_GM);
+                    }
+                    moneyCardOperationDto.setOrderItemId(sysOrderItem.getId());
+                    moneyCardOperationDto.setGoodsId(sysOrderItem.getGoodsId());
+                    moneyCardOperationDtos.add(moneyCardOperationDto);
+                }
+            }
+        }
+        if (CollUtil.isNotEmpty(moneyCardOperationDtos)) {
+            moneyCardUseService.addVipMoneyCard(moneyCardOperationDtos);
+        }
+
+    }
+
+
 }
\ No newline at end of file

--
Gitblit v1.9.1