Administrator
2025-05-16 14d67508d21d18e4b8d8d5874efe9ef946115b04
fix(mall): 修复订单积分计算错误

- 在计算商品积分时,增加了对商品数量的考虑
- 通过将原始价格与静态属性比例相乘,再乘以商品数量,得到正确的积分金额
1 files modified
3 ■■■■ changed files
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java 3 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -317,6 +317,7 @@
        for (AddOrderItemDto item : items) {
            Long skuId = item.getSkuId();
            Integer cnt = item.getCnt();
            MallGoodsSku sku = skusAll.stream().filter(s -> s.getId().equals(skuId)).findFirst().orElse(null);
            if (ObjectUtil.isNotEmpty(sku)) {
                Long goodsId = sku.getGoodsId();
@@ -324,7 +325,7 @@
                if (ObjectUtil.isNotEmpty(mallGoods)) {
                    BigDecimal multi = mallGoods.getStaticProp().divide(BigDecimal.valueOf(100), 4, RoundingMode.HALF_DOWN);
                    //获取该商品该规格的积分
                    BigDecimal scoreAmount = sku.getOriginalPrice().multiply(multi).setScale(0, RoundingMode.HALF_DOWN);
                    BigDecimal scoreAmount = sku.getOriginalPrice().multiply(multi).multiply(new BigDecimal(cnt)).setScale(0, RoundingMode.HALF_DOWN);
                    scoreAmountMap.put(skuId, scoreAmount);
                }
            }