| | |
| | | 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.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; |
| | |
| | | |
| | | @Override |
| | | public int modify(SysProjUse sysProjUse) { |
| | | //插入套餐项目操作记录 |
| | | |
| | | |
| | | |
| | | return sysProjUseDao.update(sysProjUse); |
| | | |
| | |
| | | |
| | | @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, "操作成功"); |
| | | |
| | | } |
| | |
| | | } 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("未找到套餐"); |
| | |
| | | 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; |
| | | } |
| | | |
| | | /** |
| | | * 检测是否存在欠款 |
| | |
| | | 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; |
| | | } |
| | | |
| | | |
| | | /*********************以下为项目使用情况操作***********************/ |
| | |
| | | } 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; |
| | | |
| | | } |
| | |
| | | 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(",有效期:" + 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); |
| | | } |
| | | |
| | | /** |
| | | * 设置为有效套餐 |
| | |
| | | public AjaxResult activeProj(SysProjUse proj) { |
| | | Date today = new Date(); |
| | | Date newDate = proj.getFailTime(); |
| | | |
| | | proj = sysProjUseDao.selectById(proj.getId()); |
| | | // TODO 设置项目有效时,需完善该逻辑 |
| | | switch (proj.getStatus()) { |
| | | case Dictionary.TAOCAN_STATUS_WX: |
| | | // 如果到期,需要重新设置有效期 |
| | |
| | | return new AjaxResult(AjaxResult.STATUS_FAIL, "有效期要大于当前日期"); |
| | | } |
| | | } |
| | | if (newDate == null || newDate.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(",有效期:" + 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, "操作成功"); |
| | | } |
| | | |
| | | /** |
| | | * 退款项目 |
| | | */ |
| | | @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 |
| | |
| | | } |
| | | |
| | | @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); |
| | | } |
| | | } |