From 55810dbe3aa36eb2bbcc4113eb2c85fc3b11b48d Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Thu, 02 Jun 2022 16:05:38 +0800 Subject: [PATCH] fix --- src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 48 +++++++++++++++++++++++++++++++++++------------- 1 files changed, 35 insertions(+), 13 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 1e77831..f8c4036 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 @@ -90,6 +90,7 @@ this.baseMapper.insert(orderInfo); BigDecimal total = BigDecimal.ZERO; + BigDecimal carriage = BigDecimal.ZERO; for (AddOrderItemDto item : addOrderDto.getItems()) { MallOrderItem orderItem = new MallOrderItem(); @@ -127,6 +128,15 @@ } MallGoods mallGoods = mallGoodsMapper.selectById(sku.getGoodsId()); + + // 零撸专区购买 + if (new BigDecimal(mallGoods.getPresentPrice()).compareTo(BigDecimal.ZERO) == 0) { + List<MallOrderItem> items = mallOrderItemMapper.selectItemByGoodsIdUnCancel(mallGoods.getId()); + if (CollUtil.isNotEmpty(items)) { + throw new FebsException("无法重复领取同一个商品"); + } + } + if (MallGoods.ISSALE_STATUS_DISABLED.equals(mallGoods.getIsSale())) { throw new FebsException(mallGoods.getGoodsName() + "已下架"); } @@ -142,8 +152,11 @@ orderItem.setStyleName(sku.getStyleName()); orderItem.setSkuName(sku.getSkuName()); orderItem.setSkuImage(sku.getSkuImage()); + orderItem.setIsNormal(mallGoods.getIsNormal()); + orderItem.setCostPrice(sku.getCostPrice()); total = total.add(amount); + carriage = carriage.add(mallGoods.getCarriage()); sku.setStock(sku.getStock() - item.getCnt()); sku.setSkuVolume(sku.getSkuVolume() + item.getCnt()); @@ -157,6 +170,7 @@ } orderInfo.setAmount(total); + orderInfo.setCarriage(carriage); this.baseMapper.updateById(orderInfo); agentProducer.sendOrderCancelDelayMsg(orderInfo.getId(), 15 * 60 * 1000L); @@ -201,6 +215,7 @@ // orderInfo.setPayOrderNo(payOrderDto.getPayOrderNo()); // orderInfo.setPayImage(payOrderDto.getPayImage()); orderInfo.setPayMethod("微信支付"); + agentProducer.sendOrderReturn(orderInfo.getId()); break; case "2": if (StrUtil.isNotBlank(orderInfo.getPayOrderNo())) { @@ -211,6 +226,7 @@ orderInfo.setPayOrderNo(payResultStr); orderInfo.setPayMethod("支付宝支付"); + agentProducer.sendOrderReturn(orderInfo.getId()); break; case "3": payResultStr = balancePay(orderInfo, payOrderDto.getTradePwd(), "balance"); @@ -221,29 +237,36 @@ orderInfo.setPayTime(new Date()); orderInfo.setPayResult("1"); -// MallMember mallMember = memberMapper.selectById(member.getId()); -// if (AgentLevelEnum.ZERO_LEVEL.name().equals(mallMember.getLevel())) { -// mallMember.setLevel(AgentLevelEnum.FIRST_LEVEL.name()); -// memberMapper.updateById(mallMember); -// } - + boolean hasTc = false; // 静态倍数 List<MallOrderItem> orderItems = this.baseMapper.getMallOrderItemByOrderId(orderInfo.getId()); if (CollUtil.isNotEmpty(orderItems)) { for (MallOrderItem orderItem : orderItems) { MallGoods mallGoods = mallGoodsMapper.selectById(orderItem.getGoodsId()); - MallGoodsSku sku = mallGoodsSkuMapper.selectById(orderItem.getSkuId()); - BigDecimal score = sku.getOriginalPrice().multiply(mallGoods.getStaticMulti()); + if (mallGoods.getIsNormal() == 2) { + hasTc = true; + MallGoodsSku sku = mallGoodsSkuMapper.selectById(orderItem.getSkuId()); + BigDecimal score = sku.getOriginalPrice().multiply(mallGoods.getStaticMulti()); - memberWalletService.add(score, member.getId(), "score"); - mallMoneyFlowService.addMoneyFlow(member.getId(), score, MoneyFlowTypeEnum.STATIC_BONUS.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue()); + memberWalletService.add(score, member.getId(), "score"); + mallMoneyFlowService.addMoneyFlow(member.getId(), score, MoneyFlowTypeEnum.STATIC_BONUS.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue()); + } + } + } + + // 购买套餐后,升级为普通会员 + if (hasTc) { + MallMember mallMember = memberMapper.selectById(member.getId()); + if (AgentLevelEnum.ZERO_LEVEL.name().equals(mallMember.getLevel())) { + mallMember.setLevel(AgentLevelEnum.FIRST_LEVEL.name()); + memberMapper.updateById(mallMember); } } mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue()); // agentProducer.sendAutoLevelUpMsg(member.getId()); -// agentProducer.sendReturnMoneyMsg(orderInfo.getId()); + agentProducer.sendOrderReturn(orderInfo.getId()); break; case "4": if (orderInfo.getOrderType() != 2) { @@ -256,7 +279,6 @@ orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue()); orderInfo.setPayTime(new Date()); orderInfo.setPayResult("1"); - mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.PRIZE_SCORE.getValue()); break; @@ -287,7 +309,7 @@ throw new FebsException("支付密码错误"); } - memberWalletService.reduce(orderInfo.getAmount(), mallMember.getId(), field); + memberWalletService.reduce(orderInfo.getAmount().add(orderInfo.getCarriage()), mallMember.getId(), field); return orderInfo.getOrderNo(); } -- Gitblit v1.9.1