| | |
| | | import com.matrix.core.pojo.PaginationVO; |
| | | import com.matrix.core.tools.DateUtil; |
| | | import com.matrix.core.tools.WebUtil; |
| | | import com.matrix.system.app.mapper.SysProjUseMapper; |
| | | import com.matrix.system.common.bean.SysUsers; |
| | | import com.matrix.system.common.dao.BusParameterSettingsDao; |
| | | import com.matrix.system.common.validate.ParameterValidate; |
| | |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.*; |
| | | import java.util.function.Function; |
| | | import java.util.stream.Collectors; |
| | | |
| | |
| | | |
| | | |
| | | /** |
| | | * 项目套餐退款 |
| | | * @param projUseDtoList |
| | | */ |
| | | @Override |
| | | public void projectTk(List<ProjUseOperationDto> projUseDtoList) { |
| | | |
| | | List<ShoppingGoods> shoppingGoodsList = shoppingGoodsDao.selectByIds(projUseDtoList.stream().map(ProjUseOperationDto::getGoodsId).collect(Collectors.toList())); |
| | | Map<Long, ShoppingGoods> shoppingGoodsMap = shoppingGoodsList.stream().collect(Collectors.toMap(ShoppingGoods::getId, Function.identity())); |
| | | |
| | | |
| | | projUseDtoList.forEach(projUseOperationDto -> { |
| | | |
| | | //校验参数 |
| | | ParameterValidate.ValidResult baseIdResult = ParameterValidate.validateBean(projUseOperationDto, ProjUseGroup.projectTk.class); |
| | | if (baseIdResult.hasErrors()) { |
| | | throw new GlobleException(baseIdResult.getErrors()); |
| | | } |
| | | |
| | | ShoppingGoods shoppingGoods = shoppingGoodsMap.get(projUseOperationDto.getGoodsId()); |
| | | if (Dictionary.SHOPPING_GOODS_TYPE_XM.equals(shoppingGoods.getGoodType())) { |
| | | |
| | | doProjectTk(projUseOperationDto); |
| | | |
| | | } else if (Dictionary.SHOPPING_GOODS_TYPE_TC.equals(shoppingGoods.getGoodType())) { |
| | | |
| | | taocanTk(projUseOperationDto); |
| | | } |
| | | |
| | | |
| | | |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * 套餐退款 |
| | | * @param projUseOperationDto |
| | | */ |
| | | private void taocanTk(ProjUseOperationDto projUseOperationDto) { |
| | | |
| | | List<SysProjUse> projUseList = sysProjUseDao.selectByOrderItemId(projUseOperationDto.getOrderItemId()); |
| | | List<SysProjUse> tcList = projUseList.stream().filter(item -> Objects.isNull(item.getTaocanId()) && item.getStatus().equals(Dictionary.TAOCAN_STATUS_YX) ).collect(Collectors.toList()); |
| | | |
| | | if (tcList.size() < projUseOperationDto.getCount()) { |
| | | throw new GlobleException("套餐余次不足"); |
| | | } |
| | | for (int i = 0; i < tcList.size(); i++) { |
| | | SysProjUse sysProjUse = tcList.get(i); |
| | | setInvalid(sysProjUse); |
| | | //设置套餐下的项目无效 |
| | | projUseList.stream().filter(item->item.getTaocanId().equals(sysProjUse.getId())).collect(Collectors.toList()) |
| | | .forEach(item->setInvalid(item)); |
| | | } |
| | | |
| | | } |
| | | |
| | | private void setInvalid(SysProjUse sysProjUse) { |
| | | SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); |
| | | sysProjUse.setIsOver(Dictionary.FLAG_YES_Y); |
| | | sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_WX); |
| | | sysProjUse.setSurplusCount(0); |
| | | sysProjUseDao.update(sysProjUse); |
| | | SysProjUseFlow sysProjUseFlow = SysProjUseMapper.INSTANCE.projUseToFlow(sysProjUse); |
| | | sysProjUseFlow.setOptionType("退款修改"); |
| | | sysProjUseFlow.setUpdateBy(user.getSuName()); |
| | | sysProjUseFlow.setCreateBy(user.getSuName()); |
| | | sysProjUseDao.insertFlow(sysProjUseFlow); |
| | | } |
| | | |
| | | /** |
| | | * 项目退款 |
| | | * @param projUseOperationDto |
| | | */ |
| | | private void doProjectTk(ProjUseOperationDto projUseOperationDto) { |
| | | |
| | | SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); |
| | | List<SysProjUse> projUseList = sysProjUseDao.selectByOrderItemId(projUseOperationDto.getOrderItemId()); |
| | | if(projUseList.size()==1){ |
| | | SysProjUse sysProjUse = projUseList.get(0); |
| | | int sub = sysProjUse.getSurplusCount() - projUseOperationDto.getCount(); |
| | | if (sub < 0) { |
| | | throw new GlobleException("项目余次不足"); |
| | | } else if (sub == 0) { |
| | | sysProjUse.setIsOver(Dictionary.FLAG_YES_Y); |
| | | sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_WX); |
| | | } |
| | | sysProjUse.setSurplusCount(sub); |
| | | sysProjUseDao.update(sysProjUse); |
| | | SysProjUseFlow sysProjUseFlow = SysProjUseMapper.INSTANCE.projUseToFlow(sysProjUse); |
| | | sysProjUseFlow.setOptionType("退款修改"); |
| | | |
| | | sysProjUseFlow.setUpdateBy(user.getSuName()); |
| | | sysProjUseFlow.setCreateBy(user.getSuName()); |
| | | sysProjUseDao.insertFlow(sysProjUseFlow); |
| | | }else{ |
| | | throw new GlobleException("查询项目余次异常"); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 添加用户套餐 |
| | | * |
| | | * @param projUseDtoList |