From 1b08257957a0d7027574460711fe58fd8b693a72 Mon Sep 17 00:00:00 2001 From: Hentua <wangdoubleone@gmail.com> Date: Thu, 25 Jan 2024 21:35:36 +0800 Subject: [PATCH] fix --- src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 50 insertions(+), 9 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java index eac3182..a612d58 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java @@ -23,6 +23,8 @@ import cc.mrbird.febs.pay.service.IXcxPayService; import cc.mrbird.febs.pay.util.WeixinServiceUtil; import cc.mrbird.febs.rabbit.producter.AgentProducer; +import cc.mrbird.febs.vip.service.IMallVipConfigBenefitsService; +import cc.mrbird.febs.vip.service.IMallVipConfigService; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; @@ -85,6 +87,9 @@ private final MallElectronicFenceMapper mallElectronicFenceMapper; private final MallMemberCouponMapper mallMemberCouponMapper; private final MallGoodsCouponMapper mallGoodsCouponMapper; + private final CouponGoodsMapper couponGoodsMapper; + + private final IMallVipConfigService mallVipConfigService; @Override @Transactional(rollbackFor = Exception.class) @@ -144,6 +149,9 @@ orderItem.setSkuImage(mallGoods.getThumb()); orderItem.setState(1); + if (addOrderDto.getType() == 1) { + mallShoppingCartMapper.delBySkuId(mallGoods.getId(), member.getId()); + } total = total.add(amount); } else { MallGoodsSku sku = mallGoodsSkuMapper.selectSkuInfoById(item.getSkuId()); @@ -197,10 +205,9 @@ if(1 != state){ throw new FebsException(mallMemberCoupon.getCouponName()+"无法使用"); } - Long goodsId = mallMemberCoupon.getGoodsId(); - if(goodsId != sku.getGoodsId()){ - throw new FebsException(sku.getGoodsName()+"无法使用"+mallMemberCoupon.getCouponName()); - } + //卷是否和商品绑定 + Long skuGoodsId = sku.getGoodsId(); + Long couponId = mallMemberCoupon.getCouponId(); MallGoodsCoupon mallGoodsCoupon = mallGoodsCouponMapper.selectById(mallMemberCoupon.getCouponId()); if(ObjectUtil.isEmpty(mallGoodsCoupon)){ throw new FebsException(mallGoodsCoupon.getName()+"无法使用"); @@ -209,10 +216,26 @@ if(2 != stateCoupon){ throw new FebsException(mallGoodsCoupon.getName()+"无法使用"); } + List<CouponGoods> couponGoods = couponGoodsMapper.selectByGoodIdAndCouponId(skuGoodsId, couponId); + if(ObjectUtil.isEmpty(couponGoods)){ + throw new FebsException(sku.getGoodsName()+"无法使用"+mallMemberCoupon.getCouponName()); + } +// Long goodsId = mallMemberCoupon.getGoodsId(); +// if(goodsId != sku.getGoodsId()){ +// throw new FebsException(sku.getGoodsName()+"无法使用"+mallMemberCoupon.getCouponName()); +// } BigDecimal costAmount = mallGoodsCoupon.getCostAmount(); BigDecimal realAmount = mallGoodsCoupon.getRealAmount(); if(amount.compareTo(costAmount) >= 0){ - amount = (amount.subtract(realAmount).compareTo(BigDecimal.ZERO) > 0 ? amount.subtract(realAmount) : BigDecimal.ZERO); + Integer type = mallGoodsCoupon.getType(); + if(MallGoodsCoupon.TYPE_TWO == type){ + BigDecimal divideTime = amount.divide(costAmount, 0, BigDecimal.ROUND_DOWN);//累计减免次数 + BigDecimal multiply = divideTime.multiply(realAmount);//实际减免金额 + amount = (amount.subtract(multiply).compareTo(BigDecimal.ZERO) > 0 ? amount.subtract(multiply) : BigDecimal.ZERO); + } + if(MallGoodsCoupon.TYPE_ONE == type){ + amount = (amount.subtract(realAmount).compareTo(BigDecimal.ZERO) > 0 ? amount.subtract(realAmount) : BigDecimal.ZERO); + } orderItem.setMemberCouponId(memberCouponId); mallMemberCoupon.setState(2); mallMemberCouponMapper.updateById(mallMemberCoupon); @@ -226,9 +249,13 @@ orderItem.setGoodsName(sku.getGoodsName()); orderItem.setSkuId(sku.getId()); orderItem.setState(1); + if(ObjectUtil.isNotEmpty(member.getReferrerId())){ + orderItem.setMemberInviteId(member.getReferrerId()); + } if(ObjectUtil.isNotEmpty(addOrderDto.getMemberInviteId())){ orderItem.setMemberInviteId(addOrderDto.getMemberInviteId()); } + orderItem.setStyleName(sku.getStyleName()); orderItem.setSkuName(sku.getSkuName()); orderItem.setSkuImage(sku.getSkuImage()); @@ -270,6 +297,12 @@ return orderInfo.getId(); } + public static void main(String[] args) { + BigDecimal bigDecimal = new BigDecimal(980); + BigDecimal divide = bigDecimal.divide(new BigDecimal(100), 0, BigDecimal.ROUND_DOWN); + System.out.println(divide); + } + @Override @Transactional(rollbackFor = Exception.class) @@ -288,7 +321,12 @@ orderInfo.setCancelType(MallOrderInfo.CANCEL_BY_SELF); this.baseMapper.updateById(orderInfo); + if (orderInfo.getOrderType() == 2) { + mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount(), MoneyFlowTypeEnum.REFUND.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.PRIZE_SCORE.getValue()); + memberWalletService.add(orderInfo.getAmount(), member.getId(), "prizeScore"); + return; + } List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(orderInfo.getId()); if(CollUtil.isNotEmpty(mallOrderItemList)){ @@ -311,6 +349,12 @@ Integer skuResult = mallGoodsSkuMapper.updateStockAndVolumeBySkuId(sku.getId(),mallOrderItem.getCnt()); if(1 != skuResult){ throw new FebsException(sku.getSkuName() + "库存不足"); + } + Long memberCouponId = mallOrderItem.getMemberCouponId(); + MallMemberCoupon mallMemberCoupon = mallMemberCouponMapper.selectById(memberCouponId); + if(ObjectUtil.isNotEmpty(mallMemberCoupon)){ + mallMemberCoupon.setState(1); + mallMemberCouponMapper.updateById(mallMemberCoupon); } } } @@ -406,6 +450,7 @@ mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue(),"余额支付",2); agentProducer.sendOrderCoupon(orderInfo.getId()); + agentProducer.sendGetScoreMsg(orderInfo.getId()); break; case "4": if (orderInfo.getOrderType() != 2) { @@ -904,10 +949,6 @@ } return new FebsResponse().success(); - } - - public static void main(String[] args) { - System.out.print(AgentLevelEnum.ZERO_LEVEL.name()); } } -- Gitblit v1.9.1