From c33c9c03bb90e49ad12fd237058c877e87e96ca4 Mon Sep 17 00:00:00 2001 From: Hentua <wangdoubleone@gmail.com> Date: Mon, 24 Apr 2023 00:17:41 +0800 Subject: [PATCH] fix --- src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 47 ++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 42 insertions(+), 5 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 4e8478d..ca6b5b4 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 @@ -192,6 +192,11 @@ orderItem.setSkuImage(sku.getSkuImage()); orderItem.setIsNormal(mallGoods.getIsNormal()); orderItem.setCostPrice(sku.getCostPrice()); + orderItem.setStaticMulti(mallGoods.getStaticMulti()); + orderItem.setGoodsLevel(mallGoods.getGoodsLevel()); + orderItem.setNormalBonus(mallGoods.getNormalBonus()); + orderItem.setNormalPer(mallGoods.getNormalPer()); + total = total.add(amount); carriage = carriage.add(mallGoods.getCarriage()); @@ -332,12 +337,43 @@ orderInfo.setPayResult("1"); this.baseMapper.updateById(orderInfo); - commonService.changeWallet(orderInfo.getId(), FlowTypeEnum.BALANCE.getValue()); + // 商品级别 会员/代理/股东 + int goodsLevel = 0; + BigDecimal score = BigDecimal.ZERO; + for (MallOrderItem item : orderInfo.getItems()) { + // 计算静态倍数 + if(item.getIsNormal() == 2) { + score = score.add(item.getPrice().multiply(item.getStaticMulti())); + } - //发送直推返利消息 - agentProducer.sendOrderReturn(orderInfo.getId()); + // 判断会员层级 + if (item.getIsNormal() == 2 && goodsLevel > item.getGoodsLevel()) { + goodsLevel = item.getGoodsLevel(); + } + } + + // 根据用户购买的商品设置其等级 + member.setLevel(GoodsToLevelEnums.getLevelByAccountLevel(goodsLevel)); + member.setAccountLevel(goodsLevel); + this.memberMapper.updateById(member); + + memberWalletService.add(score, member.getId(), "score"); + + if (orderInfo.getScoreCnt().compareTo(BigDecimal.ZERO) > 0) { + int reduce = memberWalletService.reduce(orderInfo.getScoreCnt(), member.getId(), "prizeScore"); + if (reduce == 2) { + throw new FebsException("积分不足"); + } + mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getScoreCnt().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.PRIZE_SCORE.getValue()); + } + + mallMoneyFlowService.addMoneyFlow(member.getId(), score, MoneyFlowTypeEnum.BUY_TC.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue()); + mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue()); + //发送代理自动升级消息 agentProducer.sendAutoLevelUpMsg(member.getId()); + //发送直推返利消息 + agentProducer.sendOrderReturn(orderInfo.getId()); break; case "4": if (orderInfo.getOrderType() != 2) { @@ -403,7 +439,6 @@ map.put("orderNo", orderInfo.getOrderNo()); map.put("orderId", orderInfo.getId()); map.put("rcResult", rcResult); - return map; } @@ -440,6 +475,8 @@ if (reduce == 2) { throw new FebsException("余额不足"); } + + return orderInfo.getOrderNo(); } @@ -705,7 +742,7 @@ 获取单个商品的折扣积分数量 = 现价 * 数量 * 折扣现金比例 */ - BigDecimal scorePercent = new BigDecimal(mallGoods.getScorePercent()).multiply(new BigDecimal(0.01)); + BigDecimal scorePercent = new BigDecimal(mallGoods.getScorePercent()).multiply(BigDecimal.valueOf(0.01)); BigDecimal amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(item.getCnt())).multiply(scorePercent); total = total.add(amount); } -- Gitblit v1.9.1