Helius
2021-12-29 1975ada3e42a06d4e3ff1cc36b3613020208ce1b
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java
@@ -10,7 +10,6 @@
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.MoneyUtil;
import com.matrix.system.hive.service.SysProjUseService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -221,15 +220,30 @@
                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);
                // 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.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, "操作成功");
    }
@@ -257,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("未找到套餐");
@@ -302,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(",有效期:" + DateUtil.dateToString(cardUse.getFailTime(), DateUtil.DATE_FORMAT_MM))
                        .append(",是否赠送:" + cardUse.getSourceName());
                content += contentBuild.toString();
                cardUse.setRealMoney(cardUse.getRealMoney() + money);
                ;
                moneyCardUseDao.update(cardUse);
            }
        } else {
            content += "到现金。";
        }
        return money;
    }
    /**
     * 检测是否存在欠款
@@ -400,7 +360,22 @@
                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;
    }
@@ -502,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;
    }
@@ -527,9 +513,19 @@
                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);
    }
@@ -576,11 +572,19 @@
        }
        proj.setStatus(Dictionary.TAOCAN_STATUS_YX);
        sysProjUseDao.update(proj);
        StringBuilder content = new StringBuilder();
        ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(proj.getProjId());
        content.append(shoppingGoods.getName() + "设置为有效")
                .append(",有效期:" + DateUtil.dateToString(proj.getFailTime(), DateUtil.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, "操作成功");
    }
@@ -599,4 +603,14 @@
        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);
    }
}