From f57554f7da5e4d05b4b4bab99bf49ac9ca8c2038 Mon Sep 17 00:00:00 2001
From: jyy <935090232@qq.com>
Date: Fri, 15 Apr 2022 21:35:12 +0800
Subject: [PATCH] feat:商品资料导出新增时长字段

---
 zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java |  285 ++++++++++++++++++++++++--------------------------------
 1 files changed, 122 insertions(+), 163 deletions(-)

diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java
index 082fb0c..b30f76c 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java
@@ -10,15 +10,12 @@
 import com.matrix.system.constance.Dictionary;
 import com.matrix.system.hive.bean.*;
 import com.matrix.system.hive.dao.*;
-import com.matrix.system.hive.plugin.util.CollectionUtils;
-import com.matrix.system.hive.plugin.util.DateUtils;
 import com.matrix.system.hive.plugin.util.MoneyUtil;
 import com.matrix.system.hive.service.SysProjUseService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.xml.crypto.Data;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -62,6 +59,9 @@
 
     @Override
     public int modify(SysProjUse sysProjUse) {
+        //插入套餐项目操作记录
+
+
 
         return sysProjUseDao.update(sysProjUse);
 
@@ -153,7 +153,7 @@
                 contentZr.append("获取会员" + vipInfo.getVipName() + "的")
                         .append(",余额:" + projuse.getBalance())
                         .append(",余次:")
-                        .append(",有效期:" + DateUtils.dateToString(projuse.getFailTime(), DateUtils.DATE_FORMAT_MM))
+                        .append(",有效期:" + DateUtil.dateToString(projuse.getFailTime(), DateUtil.DATE_FORMAT_MM))
                         .append(",是否赠送:");
 
 
@@ -198,24 +198,52 @@
 
     @Override
     public AjaxResult activeTc(SysProjUse proj) {
-
+        Date newDate = proj.getFailTime();
+        Date today = new Date();
         SysProjUse taocan = sysProjUseDao.selectById(proj.getId());
         switch (taocan.getStatus()) {
             case Dictionary.TAOCAN_STATUS_WX:
                 // 如果到期,需要重新设置有效期
-                if (taocan.getFailTime().before(new Date())) {
-                    taocan.setFailTime(DateUtil.getDateAfterMonth(new Date(),12));
+                if (newDate != null && !newDate.equals("")) {
+                    taocan.setFailTime(newDate);
+                    if (newDate.before(today)) {
+                        return new AjaxResult(AjaxResult.STATUS_FAIL, "有效期要大于当前日期");
+                    }
+                }
+
+                if (newDate == null && (taocan.getFailTime() == null || taocan.getFailTime().before(today))) {
+                    return new AjaxResult(AjaxResult.STATUS_SUCCESS, "已过期");
                 }
                 break;
-            //TODO 如果是冻结状态则要算出冻结的天数,延长有效期
             case Dictionary.TAOCAN_STATUS_DJ:
-
+                SysProjuseFreeze freeze = new SysProjuseFreeze();
+                freeze.setOrderItemId(taocan.getId().toString());
+                freeze.setVipId(taocan.getVipId());
+                SysProjuseFreeze freezeProj = sysProjuseFreezeDao.selectByOrderItemId(freeze);
+                // todo  因为目前没有在冻结的时候插入冻结记录,所以这里暂时这样处理
+                if(freezeProj!=null){
+                    Date dateAfter = DateUtil.nextNDate(taocan.getFailTime(), freezeProj.getGapDays());
+                    taocan.setFailTime(dateAfter);
+                }
                 break;
             default:
                 return new AjaxResult(AjaxResult.STATUS_FAIL, "请选择无效或者冻结的套餐");
         }
         taocan.setStatus(Dictionary.TAOCAN_STATUS_YX);
-        sysProjUseDao.updateTcStatus(taocan.getId(),"有效");
+        sysProjUseDao.updateProjStatus(taocan);
+        SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+        SysProjUseFlow useFlow=new SysProjUseFlow();
+        useFlow.setProjName(taocan.getProjName());
+        useFlow.setProjUseId(taocan.getId());
+        useFlow.setOptionType("人工修改");
+        useFlow.setRemark("设置为有效状态");
+        useFlow.setFailTime(taocan.getFailTime());
+        useFlow.setStatus(Dictionary.TAOCAN_STATUS_YX);
+        useFlow.setCreateBy(sysUsers.getSuName());
+        useFlow.setUpdateBy(sysUsers.getSuName());
+        sysProjUseDao.insertFlow(useFlow);
+
+
         return new AjaxResult(AjaxResult.STATUS_SUCCESS, "操作成功");
 
     }
@@ -243,6 +271,19 @@
             } else {
                 i = sysProjuseFreezeDao.insert(freeze);
             }
+
+            SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+            SysProjUseFlow useFlow=new SysProjUseFlow();
+            useFlow.setProjName(taocan.getProjName());
+            useFlow.setProjUseId(taocan.getId());
+            useFlow.setOptionType("人工修改");
+            useFlow.setStatus(Dictionary.TAOCAN_STATUS_DJ);
+            useFlow.setRemark("冻结项目");
+
+            useFlow.setCreateBy(sysUsers.getSuName());
+            useFlow.setUpdateBy(sysUsers.getSuName());
+            sysProjUseDao.insertFlow(useFlow);
+
             return i;
         } else {
             throw new GlobleException("未找到套餐");
@@ -288,73 +329,6 @@
         return money;
     }
 
-    public double getTotalMoney(SysProjUse sysProjUse, MoneyCardUse cardUse, Long moneyCardUseId) {
-        List<SysProjUse> list = sysProjUseDao.selectByModel(sysProjUse);
-        double money = 0;
-        if (CollectionUtils.isEmpty(list)) {
-            throw new GlobleException("该套餐没有可退款的项目!");
-        }
-        //判断套餐是否存在欠款
-        SysProjUse projuse = list.get(0);
-        checkOrderStatu(projuse);
-        if (!(projuse.getStatus().equals(Dictionary.TAOCAN_STATUS_YX))) {
-            throw new GlobleException("不是有效套餐");
-        }
-        if (projuse.getSource().contains(Dictionary.TAOCAN_SOURCE_ZR)) {
-            throw new GlobleException("转让的套餐不能退款");
-        }
-        if (projuse.getSource().contains(Dictionary.TAOCAN_SOURCE_ZS)) {
-            throw new GlobleException("赠送的套餐不能退款");
-        }
-        //获取会员卡
-        cardUse = moneyCardUseDao.selectVipCard(projuse.getVipId());
-        String content;
-        //如果是套餐卡
-        ShoppingGoodsAssemble shoppingGoodsAssemble = shoppingGoodsAssembleDao.selectById(sysProjUse.getAssembleId());
-        ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(shoppingGoodsAssemble.getShoppingGoodsId());
-        if (Dictionary.SHOPPING_GOODS_TYPE_TCK.equals(projuse.getType())) {
-            money = projuse.getBalance();
-            //余次使用流水操作
-
-            content = shoppingGoods.getName() + "退款¥" + projuse.getBalance();
-        } else {
-            for (SysProjUse itemUser : list) {
-                Double emoney = MoneyUtil.mul(Double.parseDouble(itemUser.getSurplusCount() + ""), itemUser.getPrice());
-                money = MoneyUtil.add(emoney, money);
-            }
-            //余次使用流水操作
-            content = shoppingGoods.getName() + "退款¥" + money;
-        }
-
-
-        SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
-        // 1、金额退到该用户的有效会籍卡中
-        System.out.println("==========" + cardUse);
-        if (moneyCardUseId != null) {
-            if (cardUse == null) {
-                content += "到现金。";
-            } else {
-                //SysOrderItem orderItem = orderItemDao.selectById(cardUse.getOrderItemId());
-
-                StringBuilder contentBuild = new StringBuilder();
-                contentBuild.append("到" + cardUse.getCardName())
-                        .append(",余次:" + cardUse.getLastCountName())
-                        .append(",本金余额:" + MoneyUtil.add(cardUse.getRealMoney(), money))
-                        .append(",赠送余额:" + cardUse.getGiftMoney())
-                        .append(",有效期:" + DateUtils.dateToString(cardUse.getFailTime(), DateUtils.DATE_FORMAT_MM))
-                        .append(",是否赠送:" + cardUse.getSourceName());
-                content += contentBuild.toString();
-
-                cardUse.setRealMoney(cardUse.getRealMoney() + money);
-                ;
-                moneyCardUseDao.update(cardUse);
-
-            }
-        } else {
-            content += "到现金。";
-        }
-        return money;
-    }
 
     /**
      * 检测是否存在欠款
@@ -386,27 +360,26 @@
                 throw new GlobleException("套餐已冻结");
         }
         taocan.setStatus(Dictionary.TAOCAN_STATUS_WX);
+
         int i = sysProjUseDao.updateTcStatus(sysProjUse.getId(), "无效");
+
+        SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+        SysProjUseFlow useFlow=new SysProjUseFlow();
+        useFlow.setProjName(taocan.getProjName());
+        useFlow.setProjUseId(taocan.getId());
+        useFlow.setOptionType("人工修改");
+        useFlow.setStatus(Dictionary.TAOCAN_STATUS_WX);
+        useFlow.setRemark("设置为无效状态");
+        useFlow.setFailTime(taocan.getFailTime());
+
+        useFlow.setCreateBy(sysUsers.getSuName());
+        useFlow.setUpdateBy(sysUsers.getSuName());
+        sysProjUseDao.insertFlow(useFlow);
+
         return i;
     }
 
-    /**
-     * cardUser暂时没有用到
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int returnMoneyTc(SysProjUse sysProjUse, MoneyCardUse cardUse, Long moneyCardUseId) {
-        //充值记录
-        //SysRechargeFlow flow=new SysRechargeFlow();
 
-        // 计算出套餐所有项目的剩余次数的钱
-        getTotalMoney(sysProjUse, cardUse, moneyCardUseId);
-        //3、套餐下的项目状态改为退款
-        sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_TK);
-        int j = sysProjUseDao.updateProjStatus(sysProjUse);
-
-        return j;
-    }
 
 
     /*********************以下为项目使用情况操作***********************/
@@ -463,7 +436,7 @@
         contentZr.append("获取会员" + vipInfo.getVipName() + "的" + shoppingGoods.getName())
                 .append(",余额:" + sysProjUse.getBalance())
                 .append(",余次:" + sysProjUse.getSurplusCount())
-                .append(",有效期:" + DateUtils.dateToString(sysProjUse.getFailTime(), DateUtils.DATE_FORMAT_MM))
+                .append(",有效期:" + DateUtil.dateToString(sysProjUse.getFailTime(), DateUtil.DATE_FORMAT_MM))
                 .append(",是否赠送:");
 
 
@@ -504,6 +477,17 @@
         } else {
             i = sysProjuseFreezeDao.insert(freeze);
         }
+        SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+        SysProjUseFlow useFlow=new SysProjUseFlow();
+        useFlow.setProjName(sysProjUse.getProjName());
+        useFlow.setProjUseId(sysProjUse.getId());
+        useFlow.setOptionType("人工修改");
+        useFlow.setStatus(Dictionary.TAOCAN_STATUS_DJ);
+        useFlow.setRemark("冻结项目");
+
+        useFlow.setCreateBy(sysUsers.getSuName());
+        useFlow.setUpdateBy(sysUsers.getSuName());
+        sysProjUseDao.insertFlow(useFlow);
         return i;
 
     }
@@ -529,56 +513,24 @@
                 throw new GlobleException("套餐已冻结");
         }
         sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_WX);
-        ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(sysProjUse.getProjId());
-        String content = shoppingGoods.getName() + "设置为" + sysProjUse.getStatus();
 
+        SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+        SysProjUseFlow useFlow=new SysProjUseFlow();
+        useFlow.setProjName(sysProjUse.getProjName());
+        useFlow.setProjUseId(sysProjUse.getId());
+        useFlow.setOptionType("人工修改");
+        useFlow.setStatus(Dictionary.TAOCAN_STATUS_WX);
+        useFlow.setRemark("设置为无效状态");
+        useFlow.setFailTime(sysProjUse.getFailTime());
+
+        useFlow.setCreateBy(sysUsers.getSuName());
+        useFlow.setUpdateBy(sysUsers.getSuName());
+        sysProjUseDao.insertFlow(useFlow);
         return sysProjUseDao.update(sysProjUse);
     }
 
 
-    /**
-     * 退款
-     *
-     * @param sysProjUse
-     * @return
-     */
-    public int returnMoneyProj(SysProjUse sysProjUse, MoneyCardUse cardUse, Long moneyCardUseId) {
-        int i = 0;
-        sysProjUse = sysProjUseDao.selectById(sysProjUse.getId());
-        //判断套餐是否存在欠款
-        checkOrderStatu(sysProjUse);
-        if (!(sysProjUse.getStatus().equals(Dictionary.TAOCAN_STATUS_YX))) {
-            throw new GlobleException("不是有效项目");
-        }
-        if (sysProjUse.getSource().equals(Dictionary.TAOCAN_SOURCE_ZR)) {
-            throw new GlobleException("转让的项目不能退款");
-        }
-        if (sysProjUse.getSource().equals(Dictionary.TAOCAN_SOURCE_ZS)) {
-            throw new GlobleException("赠送的项目不能退款");
-        }
-        StringBuilder content = new StringBuilder();
-        ShoppingGoodsAssemble shoppingGoodsAssemble = shoppingGoodsAssembleDao.selectById(sysProjUse.getAssembleId());
-        ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(shoppingGoodsAssemble.getShoppingGoodsId());
-        content.append(shoppingGoods + "退款");
-        if (cardUse != null) {
-            // 1、金额退到该用户的有效会籍卡中
-            MoneyCardUse upCard = moneyCardUseDao.selectById(cardUse.getId());
-            upCard.setRealMoney(upCard.getRealMoney() + sysProjUse.getBalance());
-            ;
-            moneyCardUseDao.update(upCard);
 
-            content.append("到会籍卡(" + upCard.getCardName() + ")" + sysProjUse.getBalance() + "元")
-                    .append(",余次:" + upCard.getLastCountName())
-                    .append(",本金余额:" + upCard.getRealMoney())
-                    .append(",有效期:" + DateUtils.dateToString(upCard.getFailTime(), DateUtils.DATE_FORMAT_MM))
-                    .append(",是否赠送:" + upCard.getSourceName());
-        } else {
-            content.append("现金" + sysProjUse.getBalance() + "元");
-        }
-
-        sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_TK);
-        return sysProjUseDao.update(sysProjUse);
-    }
 
     /**
      * 设置为有效套餐
@@ -590,6 +542,7 @@
     public AjaxResult activeProj(SysProjUse proj) {
         Date today = new Date();
         Date newDate = proj.getFailTime();
+
         proj = sysProjUseDao.selectById(proj.getId());
         switch (proj.getStatus()) {
             case Dictionary.TAOCAN_STATUS_WX:
@@ -600,47 +553,42 @@
                         return new AjaxResult(AjaxResult.STATUS_FAIL, "有效期要大于当前日期");
                     }
                 }
-                if (newDate == null && proj.getFailTime().before(today)) {
+                if (newDate == null && (proj.getFailTime() == null || proj.getFailTime().before(today))) {
                     return new AjaxResult(AjaxResult.STATUS_SUCCESS, "已过期");
                 }
                 break;
             //如果是冻结状态则要算出冻结的天数,延长有效期
             case Dictionary.TAOCAN_STATUS_DJ:
+                SysProjuseFreeze freeze = new SysProjuseFreeze();
+                freeze.setOrderItemId(proj.getId().toString());
+                freeze.setVipId(proj.getVipId());
+                SysProjuseFreeze freezeProj = sysProjuseFreezeDao.selectByOrderItemId(freeze);
+                Date dateAfter = DateUtil.nextNDate(proj.getFailTime(), freezeProj.getGapDays());
 
+                proj.setFailTime(dateAfter);
                 break;
             default:
                 return new AjaxResult(AjaxResult.STATUS_FAIL, "请选择无效或者冻结的套餐");
         }
         proj.setStatus(Dictionary.TAOCAN_STATUS_YX);
         sysProjUseDao.update(proj);
-        StringBuilder content = new StringBuilder();
-        ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(proj.getProjId());
-        content.append(shoppingGoods.getName() + "设置为有效")
-                .append(",有效期:" + DateUtils.dateToString(proj.getFailTime(), DateUtils.DATE_FORMAT_MM));
 
+        SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+        SysProjUseFlow useFlow=new SysProjUseFlow();
+        useFlow.setProjName(proj.getProjName());
+        useFlow.setProjUseId(proj.getId());
+        useFlow.setOptionType("人工修改");
+        useFlow.setStatus(Dictionary.TAOCAN_STATUS_YX);
+        useFlow.setRemark("设置为有效状态");
+        useFlow.setFailTime(proj.getFailTime());
+
+        useFlow.setCreateBy(sysUsers.getSuName());
+        useFlow.setUpdateBy(sysUsers.getSuName());
+        sysProjUseDao.insertFlow(useFlow);
 
         return new AjaxResult(AjaxResult.STATUS_SUCCESS, "操作成功");
     }
 
-    /**
-     * 退款项目
-     */
-    @Override
-    public double getTotalMoneyProj(SysProjUse sysProjUse) {
-        sysProjUse = sysProjUseDao.selectById(sysProjUse.getId());
-        //判断套餐是否存在欠款
-        checkOrderStatu(sysProjUse);
-        if (!(sysProjUse.getStatus().equals(Dictionary.TAOCAN_STATUS_YX))) {
-            throw new GlobleException("不是有效项目");
-        }
-        if (sysProjUse.getSource().equals(Dictionary.TAOCAN_SOURCE_ZR)) {
-            throw new GlobleException("转让的项目不能退款");
-        }
-        if (sysProjUse.getSource().contains(Dictionary.TAOCAN_SOURCE_ZS)) {
-            throw new GlobleException("赠送的项目不能退款");
-        }
-        return sysProjUse.getBalance();
-    }
 
 
     @Override
@@ -649,9 +597,20 @@
     }
 
     @Override
-    public List<SysProjUse> selectTaocanProjUse(Long taocanId) {
+    public List<SysProjUse> selectTaocanProjUse(Long taocanId, String status) {
         SysProjUse projUse = new SysProjUse();
         projUse.setTaocanId(taocanId);
+        projUse.setStatus(status);
         return sysProjUseDao.selectByModel(projUse);
     }
+
+    @Override
+    public List<SysProjUse> findTaocaoProjUseWithProj(SysProjUse sysProjUse) {
+        return sysProjUseDao.selectTaoCanListWithProj(sysProjUse);
+    }
+
+    @Override
+    public int findTaocanCountForCourseAndInfinite(Long taocanId, Long vipId) {
+        return sysProjUseDao.selectTaocanCountForCourseAndInfinite(taocanId, vipId);
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.1