| | |
| | | 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 com.matrix.system.common.dao.SysUsersDao; |
| | | import com.matrix.system.common.validate.GroupValidateStatusCheckUtil; |
| | | import com.matrix.system.constance.Dictionary; |
| | | import com.matrix.system.hive.bean.*; |
| | | import com.matrix.system.hive.dao.*; |
| | | import com.matrix.system.hive.dto.ProjUseOperationDto; |
| | | import com.matrix.system.hive.hievEnum.OrderOperationEnum; |
| | | import com.matrix.system.hive.plugin.util.MoneyUtil; |
| | | import com.matrix.system.hive.service.ShoppingGoodsService; |
| | | import com.matrix.system.hive.service.SysBeauticianStateService; |
| | |
| | | |
| | | @Autowired |
| | | BusParameterSettingsDao busParameterSettingsDao; |
| | | |
| | | @Autowired |
| | | SysUsersDao sysUsersDao; |
| | | |
| | | @Override |
| | | public int add(SysProjUse sysProjUse) { |
| | |
| | | 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("该商品存在欠款!"); |
| | | } |
| | | String orderStatus = orderItemDao.selectOrderStatusByItemId(projuse.getOrderItemId()); |
| | | if (!Dictionary.ORDER_STATU_YFK.equals(orderStatus)) { |
| | | throw new GlobleException(projuse.getProjName()+"的购买订单存在欠款!"); |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | |
| | | projUseDtoList.forEach(projUseOperationDto -> { |
| | | |
| | | //校验参数 |
| | | ParameterValidate.ValidResult baseIdResult = ParameterValidate.validateBean(projUseOperationDto, ProjUseGroup.projectTk.class); |
| | | if (baseIdResult.hasErrors()) { |
| | | throw new GlobleException(baseIdResult.getErrors()); |
| | | } |
| | | GroupValidateStatusCheckUtil.check(projUseOperationDto, ProjUseGroup.projectTk.class); |
| | | |
| | | ShoppingGoods shoppingGoods = shoppingGoodsMap.get(projUseOperationDto.getGoodsId()); |
| | | if (Dictionary.SHOPPING_GOODS_TYPE_XM.equals(shoppingGoods.getGoodType())) { |
| | |
| | | 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++) { |
| | | projUseOperationDto.setOrderOperationType(OrderOperationEnum.RETURN); |
| | | for (int i = 0; i < projUseOperationDto.getCount(); i++) { |
| | | SysProjUse sysProjUse = tcList.get(i); |
| | | setInvalid(sysProjUse); |
| | | setTaocanTk(sysProjUse,projUseOperationDto); |
| | | //设置套餐下的项目无效 |
| | | projUseList.stream().filter(item->item.getTaocanId().equals(sysProjUse.getId())).collect(Collectors.toList()) |
| | | .forEach(item->setInvalid(item)); |
| | | projUseList.stream().filter(item->Objects.equals(sysProjUse.getId(),item.getTaocanId())).collect(Collectors.toList()) |
| | | .forEach(item-> setTaocanTk(item,projUseOperationDto)); |
| | | } |
| | | |
| | | } |
| | | |
| | | private void setInvalid(SysProjUse sysProjUse) { |
| | | SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); |
| | | private void setTaocanTk(SysProjUse sysProjUse, ProjUseOperationDto projUseOperationDto) { |
| | | sysProjUse.setIsOver(Dictionary.FLAG_YES_Y); |
| | | sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_WX); |
| | | sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_TK); |
| | | 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); |
| | | saveProjUseFlow(projUseOperationDto,sysProjUse); |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | 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); |
| | |
| | | throw new GlobleException("项目余次不足"); |
| | | } else if (sub == 0) { |
| | | sysProjUse.setIsOver(Dictionary.FLAG_YES_Y); |
| | | sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_WX); |
| | | sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_TK); |
| | | } |
| | | 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); |
| | | projUseOperationDto.setOrderOperationType(OrderOperationEnum.RETURN); |
| | | //保存操作流水 |
| | | saveProjUseFlow(projUseOperationDto,sysProjUse); |
| | | }else{ |
| | | throw new GlobleException("查询项目余次异常"); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 保存项目操作流水 |
| | | * @param projUseOperationDto |
| | | * @param sysProjUse |
| | | */ |
| | | private void saveProjUseFlow(ProjUseOperationDto projUseOperationDto, SysProjUse sysProjUse) { |
| | | SysProjUseFlow sysProjUseFlow = SysProjUseMapper.INSTANCE.projUseToFlow(sysProjUse); |
| | | sysProjUseFlow.setOptionType(projUseOperationDto.getOrderOperationType().getDisplayName()); |
| | | SysUsers user = sysUsersDao.selectById(projUseOperationDto.getUpdateUserId()); |
| | | sysProjUseFlow.setUpdateBy(user.getSuName()); |
| | | sysProjUseFlow.setCreateBy(user.getSuName()); |
| | | sysProjUseDao.insertFlow(sysProjUseFlow); |
| | | } |
| | | |
| | | /** |
| | |
| | | Map<Long, ShoppingGoods> shoppingGoodsMap = shoppingGoodsList.stream().collect(Collectors.toMap(ShoppingGoods::getId, Function.identity())); |
| | | |
| | | for (ProjUseOperationDto projUseOperationDto : projUseDtoList) { |
| | | |
| | | ShoppingGoods shoppingGoods = shoppingGoodsMap.get(projUseOperationDto.getGoodsId()); |
| | | if (Dictionary.SHOPPING_GOODS_TYPE_XM.equals(shoppingGoods.getGoodType())) { |
| | | createProjectUse(projUseOperationDto, shoppingGoods); |
| | |
| | | |
| | | |
| | | private void createTaocanProjUse(ProjUseOperationDto projUseOperationDto, ShoppingGoods shoppingGoods) { |
| | | ParameterValidate.ValidResult baseIdResult = ParameterValidate.validateBean(projUseOperationDto, ProjUseGroup.addTc.class); |
| | | if (baseIdResult.hasErrors()) { |
| | | throw new GlobleException(baseIdResult.getErrors()); |
| | | } |
| | | |
| | | GroupValidateStatusCheckUtil.check(projUseOperationDto,ProjUseGroup.addTc.class); |
| | | |
| | | //新建套餐 |
| | | SysProjUse taocanProjUse = new SysProjUse(); |
| | | |
| | | ShoppingGoods taocanShoppingGoods = shoppingGoods; |
| | | |
| | | |
| | | Long projId = shoppingGoods.getId(); |
| | | |
| | | |
| | | taocanProjUse.setProjId(projId); |
| | | taocanProjUse.setIsOver(Dictionary.DELETED_N); |
| | |
| | | projUseDto.setOrderItemId(projUseOperationDto.getOrderItemId()); |
| | | projUseDto.setVipId(projUseOperationDto.getVipId()); |
| | | projUseDto.setTcId(taocanProjUse.getId()); |
| | | projUseDto.setUpdateUserId(projUseOperationDto.getUpdateUserId()); |
| | | SysProjUse tempUse = createProjectUse(projUseDto, assemble.getShoppingGoods()); |
| | | sumBanance += tempUse.getBalance(); |
| | | surplusCount += tempUse.getSurplusCount(); |
| | |
| | | |
| | | private SysProjUse createProjectUse(ProjUseOperationDto projUseOperationDto, ShoppingGoods shoppingGoods) { |
| | | |
| | | ParameterValidate.ValidResult baseIdResult = ParameterValidate.validateBean(projUseOperationDto, ProjUseGroup.addProject.class); |
| | | if (baseIdResult.hasErrors()) { |
| | | throw new GlobleException(baseIdResult.getErrors()); |
| | | } |
| | | GroupValidateStatusCheckUtil.check(projUseOperationDto,ProjUseGroup.addProject.class); |
| | | |
| | | SysProjUse puse = new SysProjUse(); |
| | | puse.setIsOver(Dictionary.DELETED_N); |