| | |
| | | package com.matrix.system.hive.service.imp; |
| | | |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.matrix.core.exception.GlobleException; |
| | | import com.matrix.core.pojo.PaginationVO; |
| | | import com.matrix.core.pojo.VerificationResult; |
| | | import com.matrix.core.tools.DateUtil; |
| | | import com.matrix.core.tools.LogUtil; |
| | | import com.matrix.system.common.validate.ParameterValidate; |
| | | import com.matrix.system.common.validate.group.Group; |
| | | import com.matrix.system.constance.Dictionary; |
| | |
| | | import com.matrix.system.hive.plugin.util.MoneyUtil; |
| | | import com.matrix.system.hive.service.MoneyCardUseService; |
| | | import com.matrix.system.hive.service.ShoppingGoodsService; |
| | | import com.matrix.system.hive.validation.ProjUseGroup; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | |
| | | moneyCardUseDao.insert(moneyCardUse); |
| | | |
| | | }); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | @Override |
| | | public void deleteByOrderItemId(Long id) { |
| | | MoneyCardUseFlow moneyCardUseFlow=new MoneyCardUseFlow(); |
| | | moneyCardUseFlow.setCarUseId(id); |
| | | int i = moneyCardUseFlowDao.selectTotalRecord(moneyCardUseFlow); |
| | | if(i>0){ |
| | | MoneyCardUse one = getOne(lambdaQuery().eq(MoneyCardUse::getOrderItemId,id)); |
| | | throw new GlobleException(one.getCardName()+"储值卡已经被启用无法删除"); |
| | | }else { |
| | | moneyCardUseDao.deleteByOrderItemId(id); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void changeMoneyCard(List<MoneyCardPayDto> moneyCardPayDtoList) { |
| | | moneyCardPayDtoList.forEach(moneyCardPayDto -> { |
| | | if (MoneyCardUseFlow.USE_TYPE_CONSUMER.equals(moneyCardPayDto.getType())) { |
| | | //扣减储值卡余额 |
| | | deductMoneyCard(moneyCardPayDto); |
| | | } else if (MoneyCardUseFlow.USE_TYPE_ORDRE_CANCEL.equals(moneyCardPayDto.getType())) { |
| | | //回退储值卡余额 |
| | | returnMoneyCard(moneyCardPayDto); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * 回退储值卡余额 |
| | | * |
| | | * @param moneyCardPayDto |
| | | */ |
| | | private void returnMoneyCard(MoneyCardPayDto moneyCardPayDto) { |
| | | LogUtil.info("回退储值卡余额 {}", JSON.toJSONString(moneyCardPayDto)); |
| | | MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(moneyCardPayDto.getCarUseId()); |
| | | MoneyCardUseFlow moneyCardUseFlow = new MoneyCardUseFlow(); |
| | | |
| | | if (Objects.nonNull(moneyCardPayDto.getGiftMoney())) { |
| | | //jyytodo 余额余次的修改和新增在数据库层面做加减 |
| | | moneyCardUse.setGiftMoney(moneyCardUse.getGiftMoney() + moneyCardPayDto.getGiftMoney()); |
| | | } |
| | | if (Objects.nonNull(moneyCardPayDto.getRealMoney())) { |
| | | moneyCardUse.setRealMoney(moneyCardUse.getRealMoney() + moneyCardPayDto.getRealMoney()); |
| | | } |
| | | moneyCardUse.setIsOver(Dictionary.FLAG_YES_Y); |
| | | moneyCardUse.setStatus(Dictionary.MONEYCARD_STATUS_YX); |
| | | moneyCardUseDao.update(moneyCardUse); |
| | | |
| | | |
| | | //设置卡项使用流水 |
| | | moneyCardUseFlow.setCarUseId(moneyCardUse.getId()); |
| | | moneyCardUseFlow.setOrderNo(moneyCardPayDto.getOrderNo()); |
| | | moneyCardUseFlow.setVipId(moneyCardUse.getVipId()); |
| | | moneyCardUseFlow.setTimes(moneyCardUse.getLastCount()); |
| | | moneyCardUseFlow.setType(moneyCardPayDto.getType()); |
| | | moneyCardUseFlow.setCreateTime(new Date()); |
| | | moneyCardUseFlow.setOperationId(moneyCardPayDto.getUpdateUser()); |
| | | moneyCardUseFlow.setBalance(moneyCardUse.getGiftMoney() + moneyCardUse.getRealMoney()); |
| | | moneyCardUseFlowDao.insert(moneyCardUseFlow); |
| | | } |
| | | |
| | | /** |
| | | * 扣减储值余额 |
| | | * |
| | | * @param moneyCardPayDto |
| | | */ |
| | | private void deductMoneyCard(MoneyCardPayDto moneyCardPayDto) { |
| | | // 判断商品是否在充值卡的限制购买 |
| | | moneyCardPayDtoList.forEach(cardUse -> { |
| | | VerificationResult verificationResult = checkIsBangding(cardUse.getCarUseId(), cardUse.getGoodsIds()); |
| | | VerificationResult verificationResult = checkIsBangding(moneyCardPayDto.getCarUseId(), moneyCardPayDto.getGoodsIds()); |
| | | if (!verificationResult.isJudgeResult()) { |
| | | throw new GlobleException(verificationResult.getMsg()); |
| | | } |
| | | }); |
| | | |
| | | |
| | | moneyCardPayDtoList.forEach(moneyCardPayDto -> { |
| | | LogUtil.info("扣减储值卡余额 {}", JSON.toJSONString(moneyCardPayDto)); |
| | | MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(moneyCardPayDto.getCarUseId()); |
| | | MoneyCardUseFlow moneyCardUseFlow = new MoneyCardUseFlow(); |
| | | if (Objects.nonNull(moneyCardPayDto.getGiftMoney()) && moneyCardPayDto.getGiftMoney()>0) { |
| | |
| | | |
| | | // 更新充值卡信息 |
| | | moneyCardUseDao.update(moneyCardUse); |
| | | |
| | | //设置卡项使用流水 |
| | | moneyCardUseFlow.setCarUseId(moneyCardUse.getId()); |
| | | moneyCardUseFlow.setOrderNo(moneyCardPayDto.getOrderNo()); |
| | | moneyCardUseFlow.setVipId(moneyCardUse.getVipId()); |
| | | moneyCardUseFlow.setTimes(-1); |
| | | moneyCardUseFlow.setTimes(moneyCardUse.getLastCount()); |
| | | moneyCardUseFlow.setType(moneyCardPayDto.getType()); |
| | | moneyCardUseFlow.setCreateTime(new Date()); |
| | | moneyCardUseFlow.setOperationId(moneyCardPayDto.getUpdateUser()); |
| | | moneyCardUseFlow.setBalance(moneyCardUse.getGiftMoney() + moneyCardUse.getRealMoney()); |
| | | moneyCardUseFlowDao.insert(moneyCardUseFlow); |
| | | }); |
| | | |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 检查商品是否在储值卡的消费范围内 |
| | | * |
| | | * @param moneyCardUseId 储值卡id |
| | | * @param goodsIds 商品id集合 |
| | | * @return |