| package com.matrix.system.hive.service.imp; | 
|   | 
| import com.matrix.core.constance.MatrixConstance; | 
| import com.matrix.core.exception.GlobleException; | 
| import com.matrix.core.pojo.AjaxResult; | 
| import com.matrix.core.pojo.PaginationVO; | 
| import com.matrix.core.tools.DateUtil; | 
| import com.matrix.core.tools.WebUtil; | 
| import com.matrix.system.common.bean.SysUsers; | 
| 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; | 
| import org.springframework.stereotype.Service; | 
| import org.springframework.transaction.annotation.Transactional; | 
|   | 
| import java.util.ArrayList; | 
| import java.util.Date; | 
| import java.util.List; | 
|   | 
| /** | 
|  * @date 2016-07-03 20:53 | 
|  */ | 
| @Service("sysProjUseService") | 
| public class SysProjUseServiceImpl implements SysProjUseService { | 
|   | 
|     @Autowired | 
|     private SysProjUseDao sysProjUseDao; | 
|   | 
|   | 
|     @Autowired | 
|     private SysProjuseFreezeDao sysProjuseFreezeDao; | 
|   | 
|     @Autowired | 
|     private MoneyCardUseDao moneyCardUseDao; | 
|     @Autowired | 
|     private SysVipInfoDao infoDao; | 
|     @Autowired | 
|     private SysOrderItemDao orderItemDao; | 
|   | 
|     @Autowired | 
|     ShoppingGoodsAssembleDao shoppingGoodsAssembleDao; | 
|   | 
|     @Autowired | 
|     ShoppingGoodsDao shoppingGoodsDao; | 
|   | 
|     @Autowired | 
|     SysVipInfoDao sysVipInfoDao; | 
|   | 
|   | 
|     @Override | 
|     public int add(SysProjUse sysProjUse) { | 
|   | 
|         return sysProjUseDao.insert(sysProjUse); | 
|   | 
|     } | 
|   | 
|     @Override | 
|     public int modify(SysProjUse sysProjUse) { | 
|         //插入套餐项目操作记录 | 
|   | 
|   | 
|   | 
|         return sysProjUseDao.update(sysProjUse); | 
|   | 
|     } | 
|   | 
|     @Override | 
|     public int remove(List<Long> list) { | 
|   | 
|         return sysProjUseDao.deleteByIds(list); | 
|   | 
|     } | 
|   | 
|     @Override | 
|     public int removeById(Long id) { | 
|   | 
|         return sysProjUseDao.deleteById(id); | 
|   | 
|     } | 
|   | 
|     @Override | 
|     public List<SysProjUse> findInPage(SysProjUse sysProjUse, PaginationVO pageVo) { | 
|   | 
|         return sysProjUseDao.selectInPage(sysProjUse, pageVo); | 
|   | 
|     } | 
|   | 
|     @Override | 
|     public List<SysProjUse> findByModel(SysProjUse sysProjUse) { | 
|   | 
|         return sysProjUseDao.selectByModel(sysProjUse); | 
|   | 
|     } | 
|   | 
|     @Override | 
|     public int findTotal(SysProjUse sysProjUse) { | 
|   | 
|         return sysProjUseDao.selectTotalRecord(sysProjUse); | 
|   | 
|     } | 
|   | 
|     @Override | 
|     public SysProjUse findById(Long id) { | 
|         return sysProjUseDao.selectById(id); | 
|   | 
|     } | 
|   | 
|   | 
|     @Override | 
|     @Transactional(rollbackFor = Exception.class) | 
|     public int transferTc(SysProjUse sysProjUse, Long vipId2) { | 
|         if (sysProjUse.getVipId().equals(vipId2)) { | 
|             throw new GlobleException("转让人不能是该套餐拥有者!"); | 
|         } | 
|         // 通过客户ID和订单ID获取被转让的套餐下的项目集合,给接受转让的客户,并且来源为转让 | 
|         List<SysProjUse> list = sysProjUseDao.selectByModel(sysProjUse); | 
|         //判断套餐是否存在退款 | 
|         if (list.size() > 0) { | 
|             SysProjUse projuse = list.get(0); | 
|             checkOrderStatu(projuse); | 
|         } | 
|         //套餐卡为一个整体只需要一笔流水,而套餐相当于多个项目使用情况 | 
|         boolean temp = true; | 
|         int j = 0; | 
|         SysVipInfo vipinfo = infoDao.selectById(vipId2); | 
|         for (SysProjUse projuse : list) { | 
|             if (!(projuse.getStatus().equals(Dictionary.TAOCAN_STATUS_YX))) { | 
|                 throw new GlobleException("不是有效套餐!"); | 
|             } | 
|   | 
|             j++; | 
|   | 
|   | 
|             if (temp) { | 
|                 if (Dictionary.SHOPPING_GOODS_TYPE_TCK.equals(sysProjUse.getType())) { | 
|                     temp = false; | 
|                 } | 
|                 String conent = "转让给会员" + vipinfo.getVipName(); | 
|   | 
|   | 
|                 projuse.setVipId(vipId2); | 
|   | 
|                 if (!projuse.getSource().contains(Dictionary.TAOCAN_STATUS_ZR)) { | 
|                     sysProjUse.setSource(projuse.getSource() + Dictionary.TAOCAN_STATUS_ZR); | 
|                 } | 
|   | 
|                 StringBuilder contentZr = new StringBuilder(); | 
|                 SysVipInfo vipInfo = sysVipInfoDao.selectById(projuse.getVipId()); | 
|   | 
|                 contentZr.append("获取会员" + vipInfo.getVipName() + "的") | 
|                         .append(",余额:" + projuse.getBalance()) | 
|                         .append(",余次:") | 
|                         .append(",有效期:" + DateUtil.dateToString(projuse.getFailTime(), DateUtil.DATE_FORMAT_MM)) | 
|                         .append(",是否赠送:"); | 
|   | 
|   | 
|             } | 
|   | 
|   | 
|         } | 
|   | 
|   | 
|         //判断是否是转给原来的人,是的话,那么需要删除之前的记录 | 
|         SysProjUse prior = new SysProjUse(); | 
|         prior.setVipId(vipId2); | 
|         prior.setOrderItemId(sysProjUse.getOrderItemId()); | 
|         prior.setPlatformFlag(sysProjUse.getPlatformFlag()); | 
|         List<SysProjUse> priorList = sysProjUseDao.selectByModel(prior); | 
|   | 
|   | 
|         if (priorList.size() > 0) { | 
|             List<Long> ids = new ArrayList<Long>(); | 
|             for (SysProjUse delProjUser : priorList) { | 
|                 ids.add(delProjUser.getId()); | 
|             } | 
|             sysProjUseDao.deleteByIds(ids); | 
|         } | 
|   | 
|         for (SysProjUse projuse : list) { | 
|             //注意:清空原来的id | 
|             projuse.setId(null); | 
|             sysProjUseDao.insert(projuse); | 
|         } | 
|   | 
|         // 将被转让的套餐下的所有项目状态设置为转让 | 
|         SysProjUse modifyProjUse = new SysProjUse(); | 
|         modifyProjUse.setPlatformFlag(sysProjUse.getPlatformFlag()); | 
|         modifyProjUse.setOrderItemId(sysProjUse.getOrderItemId()); | 
|         modifyProjUse.setVipId(sysProjUse.getVipId()); | 
|         modifyProjUse.setStatus(Dictionary.TAOCAN_STATUS_ZR); | 
|         sysProjUseDao.updateProjStatus(modifyProjUse); | 
|         return j; | 
|     } | 
|   | 
|   | 
|     @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 (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; | 
|             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.updateProjStatus(taocan); | 
|         return new AjaxResult(AjaxResult.STATUS_SUCCESS, "操作成功"); | 
|   | 
|     } | 
|   | 
|   | 
|     @Override | 
|     public int freezeTc(SysProjUse sysProjUse) { | 
|   | 
|         SysProjUse taocan = sysProjUseDao.selectById(sysProjUse.getId()); | 
|         if (taocan != null) { | 
|             if (!taocan.getStatus().equals(Dictionary.TAOCAN_STATUS_YX)) { | 
|                 throw new GlobleException("不是有效套餐"); | 
|             } | 
|             sysProjUseDao.updateTcStatus(sysProjUse.getId(), "冻结"); | 
|             // 冻结记录 | 
|             SysProjuseFreeze freeze = new SysProjuseFreeze(); | 
|             freeze.setFreezeTime(new Date()); | 
|             freeze.setVipId(taocan.getVipId()); | 
|             freeze.setOrderItemId(taocan.getId() + ""); | 
|             SysProjuseFreeze getfreeze = sysProjuseFreezeDao.selectByOrderItemId(freeze); | 
|             int i = 0; | 
|             if (getfreeze != null) { | 
|                 freeze.setId(getfreeze.getId()); | 
|                 i = sysProjuseFreezeDao.update(freeze); | 
|             } else { | 
|                 i = sysProjuseFreezeDao.insert(freeze); | 
|             } | 
|             return i; | 
|         } else { | 
|             throw new GlobleException("未找到套餐"); | 
|         } | 
|   | 
|     } | 
|   | 
|     @Override | 
|     public double getTotalMoneyTc(SysProjUse sysProjUse) { | 
|         List<SysProjUse> list = sysProjUseDao.selectByModel(sysProjUse); | 
|   | 
|         double money = 0; | 
|         if (list.size() > 0) { | 
|             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("赠送的套餐不能退款"); | 
|             } | 
|             //如果是套餐卡,则返回单条记录余额 | 
|             if (Dictionary.SHOPPING_GOODS_TYPE_TCK.equals(projuse.getType())) { | 
|                 return projuse.getBalance(); | 
|             } | 
|         } | 
|   | 
|   | 
|         //如果是普通项目则返回所有记录余额之和 | 
|         for (SysProjUse projuse : list) { | 
|             //如果是套餐卡直接返回金额 | 
|             if (Dictionary.SHOPPING_GOODS_TYPE_TCK.equals(projuse.getType())) { | 
|                 return projuse.getBalance(); | 
|             } else if (Dictionary.SHOPPING_GOODS_TYPE_XM.equals(projuse.getType())) { | 
|                 return projuse.getBalance(); | 
|             } | 
|             Double emoney = MoneyUtil.mul(Double.parseDouble(projuse.getSurplusCount() + ""), projuse.getPrice()); | 
|             money = MoneyUtil.add(emoney, money); | 
|         } | 
|         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; | 
|     } | 
|   | 
|     /** | 
|      * 检测是否存在欠款 | 
|      * | 
|      * @param projuse | 
|      */ | 
|     private void checkOrderStatu(SysProjUse projuse) { | 
|         if (Dictionary.TAOCAN_SOURCE_QY.equals(projuse.getSource())) { | 
|             return; | 
|         } | 
|         if (projuse.getPlatformFlag().contains(Dictionary.SHOPPING_GOODS_SALE_PLATFORM_XX)) { | 
|             SysOrderItem orderItem = orderItemDao.selectById(projuse.getOrderItemId()); | 
|             if (!Dictionary.ORDER_STATU_YFK.equals(orderItem.getStatus())) { | 
|                 throw new GlobleException("该商品存在欠款!"); | 
|             } | 
|         } | 
|     } | 
|   | 
|     @Override | 
|     public int invalidTc(SysProjUse sysProjUse) { | 
|         SysProjUse taocan = sysProjUseDao.selectById(sysProjUse.getId()); | 
|         //以及转让或者退款的不能在设置为无效 | 
|         switch (taocan.getStatus()) { | 
|             case Dictionary.TAOCAN_STATUS_TK: | 
|                 throw new GlobleException("套餐已退款"); | 
|             case Dictionary.TAOCAN_STATUS_ZR: | 
|                 throw new GlobleException("套餐已转让"); | 
|             case Dictionary.TAOCAN_STATUS_DJ: | 
|                 throw new GlobleException("套餐已冻结"); | 
|         } | 
|         taocan.setStatus(Dictionary.TAOCAN_STATUS_WX); | 
|         int i = sysProjUseDao.updateTcStatus(sysProjUse.getId(), "无效"); | 
|         return i; | 
|     } | 
|   | 
|   | 
|   | 
|   | 
|     /*********************以下为项目使用情况操作***********************/ | 
|     /** | 
|      * @param sysProjUse 被转让的套餐信息,其中含客户id,和订单id | 
|      */ | 
|     @Override | 
|     public int transferProj(SysProjUse sysProjUse, Long vipId) { | 
|         // 通过客户ID和订单ID获取被转让的套餐下的项目集合,给接受转让的客户,并且来源为转让 | 
|         sysProjUse = sysProjUseDao.selectById(sysProjUse.getId()); | 
|   | 
|         if (sysProjUse.getVipId().equals(vipId)) { | 
|             throw new GlobleException("转让人不能是该项目拥有者!"); | 
|         } | 
|         //判断项目是否存在退款 | 
|         checkOrderStatu(sysProjUse); | 
|         SysVipInfo vipinfo = infoDao.selectById(vipId); | 
|         if (!(sysProjUse.getStatus().equals(Dictionary.TAOCAN_STATUS_YX))) { | 
|             throw new GlobleException("不是有效套餐!"); | 
|         } | 
|         ShoppingGoodsAssemble shoppingGoodsAssemble = shoppingGoodsAssembleDao.selectById(sysProjUse.getAssembleId()); | 
|         ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(shoppingGoodsAssemble.getShoppingGoodsId()); | 
|   | 
|         //添加转让流水 | 
|         String conent = shoppingGoods.getName() + "转让给会员" + vipinfo.getVipName(); | 
|   | 
|   | 
|         //将被转让的项目状态至为转让状态 | 
|         if (!sysProjUse.getSource().contains(Dictionary.TAOCAN_STATUS_ZR)) { | 
|             sysProjUse.setSource(sysProjUse.getSource() + Dictionary.TAOCAN_STATUS_ZR); | 
|         } | 
|         sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_ZR); | 
|         sysProjUseDao.update(sysProjUse); | 
|         sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_YX); | 
|         sysProjUse.setVipId(vipId); | 
|   | 
|   | 
|         //判断是否是转给原来的人,是的话,那么需要删除之前的那条记录并新增 | 
|         SysProjUse prior = new SysProjUse(); | 
|         prior.setVipId(vipId); | 
|         prior.setOrderItemId(sysProjUse.getOrderItemId()); | 
|         prior.setPlatformFlag(sysProjUse.getPlatformFlag()); | 
|         List<SysProjUse> priorList = sysProjUseDao.selectByModel(prior); | 
|   | 
|   | 
|         if (priorList.size() > 0) { | 
|             sysProjUseDao.deleteById(priorList.get(0).getId()); | 
|         } | 
|         //注意:清空原来的id | 
|         sysProjUse.setId(null); | 
|         sysProjUseDao.insert(sysProjUse); | 
|         StringBuilder contentZr = new StringBuilder(); | 
|         SysVipInfo vipInfo = sysVipInfoDao.selectById(sysProjUse.getVipId()); | 
|         contentZr.append("获取会员" + vipInfo.getVipName() + "的" + shoppingGoods.getName()) | 
|                 .append(",余额:" + sysProjUse.getBalance()) | 
|                 .append(",余次:" + sysProjUse.getSurplusCount()) | 
|                 .append(",有效期:" + DateUtil.dateToString(sysProjUse.getFailTime(), DateUtil.DATE_FORMAT_MM)) | 
|                 .append(",是否赠送:"); | 
|   | 
|   | 
|         return 1; | 
|   | 
|     } | 
|   | 
|     /** | 
|      * 冻结项目 | 
|      * | 
|      * @param sysProjUse | 
|      * @return | 
|      */ | 
|     @Override | 
|     public int freezeProj(SysProjUse sysProjUse) { | 
|         // 套餐状态为有效的才能冻结 | 
|         sysProjUse = sysProjUseDao.selectById(sysProjUse.getId()); | 
|         if (!sysProjUse.getStatus().equals(Dictionary.TAOCAN_STATUS_YX)) { | 
|             throw new GlobleException("不是有效套餐"); | 
|         } | 
|         //余次使用流水操作 | 
|         ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(sysProjUse.getProjId()); | 
|         String content = shoppingGoods.getName() + "冻结"; | 
|   | 
|         // 将套餐的状态改为冻结 | 
|         sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_DJ); | 
|         sysProjUseDao.updateProjStatus(sysProjUse); | 
|         // 冻结记录 | 
|         SysProjuseFreeze freeze = new SysProjuseFreeze(); | 
|         freeze.setFreezeTime(new Date()); | 
|         freeze.setVipId(sysProjUse.getVipId()); | 
|         freeze.setOrderItemId(sysProjUse.getId()+""); | 
|         SysProjuseFreeze getfreeze = sysProjuseFreezeDao.selectByOrderItemId(freeze); | 
|         int i = 0; | 
|         if (getfreeze != null) { | 
|             freeze.setId(getfreeze.getId()); | 
|             i = sysProjuseFreezeDao.update(freeze); | 
|         } else { | 
|             i = sysProjuseFreezeDao.insert(freeze); | 
|         } | 
|         return i; | 
|   | 
|     } | 
|   | 
|   | 
|     /** | 
|      * 改变套餐下所有项目的状态,设置为无效 | 
|      * | 
|      * @param sysProjUse | 
|      * @return | 
|      */ | 
|     @Override | 
|     public int invalidProj(SysProjUse sysProjUse) { | 
|         sysProjUse = sysProjUseDao.selectById(sysProjUse.getId()); | 
|         //以及转让或者退款的不能在设置为无效 | 
|         String status = sysProjUse.getStatus(); | 
|         switch (status) { | 
|             case Dictionary.TAOCAN_STATUS_TK: | 
|                 throw new GlobleException("套餐已退款"); | 
|             case Dictionary.TAOCAN_STATUS_ZR: | 
|                 throw new GlobleException("套餐已转让"); | 
|             case Dictionary.TAOCAN_STATUS_DJ: | 
|                 throw new GlobleException("套餐已冻结"); | 
|         } | 
|         sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_WX); | 
|         ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(sysProjUse.getProjId()); | 
|         String content = shoppingGoods.getName() + "设置为" + sysProjUse.getStatus(); | 
|   | 
|         return sysProjUseDao.update(sysProjUse); | 
|     } | 
|   | 
|   | 
|   | 
|   | 
|     /** | 
|      * 设置为有效套餐 | 
|      * | 
|      * @param proj | 
|      * @return | 
|      */ | 
|     @Override | 
|     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: | 
|                 // 如果到期,需要重新设置有效期 | 
|                 if (newDate != null && !newDate.equals("")) { | 
|                     proj.setFailTime(newDate); | 
|                     if (newDate.before(today)) { | 
|                         return new AjaxResult(AjaxResult.STATUS_FAIL, "有效期要大于当前日期"); | 
|                     } | 
|                 } | 
|                 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)); | 
|   | 
|   | 
|         return new AjaxResult(AjaxResult.STATUS_SUCCESS, "操作成功"); | 
|     } | 
|   | 
|   | 
|   | 
|     @Override | 
|     public int updateProjUseTck(SysProjUse projUse) { | 
|         return sysProjUseDao.updateProjUseTck(projUse); | 
|     } | 
|   | 
|     @Override | 
|     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); | 
|     } | 
| } |