|  |  |  | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | 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, "操作成功"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /*********************以下为项目使用情况操作***********************/ | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 退款 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @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, "请选择无效或者冻结的套餐"); | 
|---|
|  |  |  | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|