Helius
2021-03-12 62bf99d419e470f5556f21682d0d8ee8b9e20412
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java
@@ -11,14 +11,12 @@
import com.matrix.system.hive.bean.*;
import com.matrix.system.hive.dao.*;
import com.matrix.system.hive.plugin.util.CollectionUtils;
import com.matrix.core.tools.DateUtil;
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 +60,9 @@
    @Override
    public int modify(SysProjUse sysProjUse) {
        //插入套餐项目操作记录
        return sysProjUseDao.update(sysProjUse);
@@ -198,24 +199,37 @@
    @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);
                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);
        return new AjaxResult(AjaxResult.STATUS_SUCCESS, "操作成功");
    }
@@ -390,23 +404,7 @@
        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;
    }
    /*********************以下为项目使用情况操作***********************/
@@ -536,49 +534,7 @@
    }
    /**
     * 退款
     *
     * @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(",有效期:" + DateUtil.dateToString(upCard.getFailTime(), DateUtil.DATE_FORMAT_MM))
                    .append(",是否赠送:" + upCard.getSourceName());
        } else {
            content.append("现金" + sysProjUse.getBalance() + "元");
        }
        sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_TK);
        return sysProjUseDao.update(sysProjUse);
    }
    /**
     * 设置为有效套餐
@@ -590,6 +546,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,13 +557,19 @@
                        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, "请选择无效或者冻结的套餐");
@@ -622,25 +585,6 @@
        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 +593,10 @@
    }
    @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);
    }
}