From 64b5d1677272a375e6b8ac56f475f462d05723a0 Mon Sep 17 00:00:00 2001 From: JiangYouYao <ak473600000> Date: Fri, 18 Mar 2022 16:46:06 +0800 Subject: [PATCH] 重构:订单取消逻辑 --- zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java | 105 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 101 insertions(+), 4 deletions(-) diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java index b3f85c7..d5d7b6a 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java +++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java @@ -7,6 +7,7 @@ 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; @@ -24,10 +25,7 @@ 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; @@ -606,6 +604,105 @@ /** + * 项目套餐退款 + * @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 -- Gitblit v1.9.1