From a9a6bff15fe1ee368e32edcce3f96c44c728e265 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Tue, 5 May 2026 09:41:32 +0800 Subject: [PATCH] 【依赖升级】Phase 1:安全依赖版本升级 升级内容: - spring-boot 3.5.9 → 3.5.14 - springdoc 2.8.14 → 2.8.17 - druid 1.2.27 → 1.2.28 - mybatis-plus 3.5.15 → 3.5.16 - mybatis-plus-join 1.5.5 → 1.5.7 - netty 4.2.9.Final → 4.2.12.Final - lombok 1.18.42 → 1.18.46 - hutool 5.8.42 → 5.8.44 - guava 33.5.0-jre → 33.6.0-jre - jsoup 1.21.2 → 1.22.2 - jsch 2.27.7 → 2.28.2 - commons-net 3.12.0 → 3.13.0 - tika-core 3.2.3 → 3.3.0 - skywalking 9.5.0 → 9.6.0 - spring-boot-admin 3.5.6 → 3.5.8 - vertx 4.5.22 → 4.5.26 - californium 3.12.0 → 3.14.0 - j2mod 3.2.1 → 3.3.0 - taos 3.7.9 → 3.8.3 - awssdk 2.40.15 → 2.44.0 - alipay-sdk-java 4.40.607.ALL → 4.40.771.ALL - opengauss-jdbc 5.1.0 → 7.0.0-RC3-og - kingbase8 8.6.0 → 9.0.1.jre7 - jimureport 2.1.3 → 2.3.2(artifactId 从 jimureport-spring-boot3-starter-fastjson2 改为 jimureport-spring-boot3-starter) - jimubi 2.3.0 → 2.3.2 --- yudao-dependencies/pom.xml | 52 ++++++++++++++++++++++++++-------------------------- yudao-module-mall/yudao-module-trade/src/test/java/cn/iocoder/yudao/module/trade/service/price/calculator/TradeBargainActivityPriceCalculatorTest.java | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-report/pom.xml | 2 +- 3 files changed, 131 insertions(+), 27 deletions(-) create mode 100644 yudao-module-mall/yudao-module-trade/src/test/java/cn/iocoder/yudao/module/trade/service/price/calculator/TradeBargainActivityPriceCalculatorTest.java diff --git a/yudao-dependencies/pom.xml b/yudao-dependencies/pom.xml index 35e8fa0..4e506b7 100644 --- a/yudao-dependencies/pom.xml +++ b/yudao-dependencies/pom.xml @@ -17,29 +17,29 @@ 2026.03-SNAPSHOT 1.7.2 - 3.5.9 + 3.5.14 - 2.8.14 + 2.8.17 4.5.0 - 1.2.27 + 1.2.28 3.5.19 - 3.5.15 - 1.5.5 + 3.5.16 + 1.5.7 4.5.0 3.0.6 3.52.0 8.1.3.140 - 8.6.0 - 5.1.0 - 3.7.9 + 9.0.1.jre7 + 7.0.0-RC3-og + 3.8.3 2.3.5 2.2.7 - 9.5.0 - 3.5.6 + 9.6.0 + 3.5.8 0.33.0 8.0.2.RELEASE @@ -49,36 +49,36 @@ 7.2.0 1.4.0 - 1.21.2 - 1.18.42 + 1.22.2 + 1.18.46 1.6.3 - 5.8.42 + 5.8.44 6.0.0-M22 1.3.0 2.4.1 1.2.83 - 33.5.0-jre + 33.6.0-jre 2.14.5 - 3.12.0 + 3.13.0 3.20.0 - 2.27.7 - 3.2.3 + 2.28.2 + 3.3.0 2.7.0 3.0.6 - 4.2.9.Final + 4.2.12.Final 1.2.5 - 4.5.22 + 4.5.26 4.12.0 - 3.12.0 - 3.2.1 + 3.14.0 + 3.3.0 - 2.40.15 + 2.44.0 1.16.7 1.4.0 - 2.1.3 - 2.3.0 + 2.3.2 + 2.3.2 4.7.9-20251224.161447 - 4.40.607.ALL + 4.40.771.ALL @@ -665,7 +665,7 @@ org.jeecgframework.jimureport - jimureport-spring-boot3-starter-fastjson2 + jimureport-spring-boot3-starter ${jimureport.version} diff --git a/yudao-module-mall/yudao-module-trade/src/test/java/cn/iocoder/yudao/module/trade/service/price/calculator/TradeBargainActivityPriceCalculatorTest.java b/yudao-module-mall/yudao-module-trade/src/test/java/cn/iocoder/yudao/module/trade/service/price/calculator/TradeBargainActivityPriceCalculatorTest.java new file mode 100644 index 0000000..01ebc6f --- /dev/null +++ b/yudao-module-mall/yudao-module-trade/src/test/java/cn/iocoder/yudao/module/trade/service/price/calculator/TradeBargainActivityPriceCalculatorTest.java @@ -0,0 +1,104 @@ +package cn.iocoder.yudao.module.trade.service.price.calculator; + +import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest; +import cn.iocoder.yudao.module.promotion.api.bargain.BargainRecordApi; +import cn.iocoder.yudao.module.promotion.api.bargain.dto.BargainValidateJoinRespDTO; +import cn.iocoder.yudao.module.promotion.enums.common.PromotionTypeEnum; +import cn.iocoder.yudao.module.trade.enums.order.TradeOrderTypeEnum; +import cn.iocoder.yudao.module.trade.service.price.bo.TradePriceCalculateReqBO; +import cn.iocoder.yudao.module.trade.service.price.bo.TradePriceCalculateRespBO; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; + +import java.util.ArrayList; + +import static java.util.Collections.singletonList; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.when; + +/** + * {@link TradeBargainActivityPriceCalculator} 的单元测试 + * + * @author 芋道源码 + */ +public class TradeBargainActivityPriceCalculatorTest extends BaseMockitoUnitTest { + + @InjectMocks + private TradeBargainActivityPriceCalculator tradeBargainActivityPriceCalculator; + + @Mock + private BargainRecordApi bargainRecordApi; + + @Test + public void testCalculate_match() { + // 准备参数:砍价订单,单 SKU、数量 1 + TradePriceCalculateReqBO param = new TradePriceCalculateReqBO() + .setUserId(1L).setBargainRecordId(2L) + .setItems(singletonList( + new TradePriceCalculateReqBO.Item().setSkuId(10L).setCount(1).setSelected(true) + )); + TradePriceCalculateRespBO result = new TradePriceCalculateRespBO() + .setType(TradeOrderTypeEnum.BARGAIN.getType()) + .setPrice(new TradePriceCalculateRespBO.Price()) + .setPromotions(new ArrayList<>()) + .setItems(singletonList( + new TradePriceCalculateRespBO.OrderItem().setSkuId(10L).setCount(1).setSelected(true) + .setPrice(100).setSpuId(1L).setGivePoint(0) + )); + TradePriceCalculatorHelper.recountPayPrice(result.getItems()); + TradePriceCalculatorHelper.recountAllPrice(result); + + // mock 方法:砍价后单价 30 分 + when(bargainRecordApi.validateJoinBargain(eq(1L), eq(2L), eq(10L))).thenReturn( + new BargainValidateJoinRespDTO().setActivityId(1000L).setName("砍价 1000 号").setBargainPrice(30)); + + // 调用:100 - 30 * 1 = 70 优惠 + tradeBargainActivityPriceCalculator.calculate(param, result); + + // 断言:订单价格 + TradePriceCalculateRespBO.Price price = result.getPrice(); + assertEquals(price.getTotalPrice(), 100); + assertEquals(price.getDiscountPrice(), 70); + assertEquals(price.getPayPrice(), 30); + assertEquals(result.getBargainActivityId(), 1000L); + + // 断言:促销明细的 id 来自砍价活动而非秒杀活动 + assertEquals(result.getPromotions().size(), 1); + TradePriceCalculateRespBO.Promotion promotion = result.getPromotions().get(0); + assertEquals(promotion.getId(), 1000L); + assertEquals(promotion.getName(), "砍价 1000 号"); + assertEquals(promotion.getType(), PromotionTypeEnum.BARGAIN_ACTIVITY.getType()); + assertEquals(promotion.getDiscountPrice(), 70); + assertTrue(promotion.getMatch()); + assertEquals(promotion.getDescription(), "砍价活动:省 0.70 元"); + } + + @Test + public void testCalculate_skipNonBargainOrder() { + // 准备参数:普通订单 + TradePriceCalculateReqBO param = new TradePriceCalculateReqBO() + .setItems(singletonList( + new TradePriceCalculateReqBO.Item().setSkuId(10L).setCount(1).setSelected(true) + )); + TradePriceCalculateRespBO result = new TradePriceCalculateRespBO() + .setType(TradeOrderTypeEnum.NORMAL.getType()) + .setPrice(new TradePriceCalculateRespBO.Price()) + .setPromotions(new ArrayList<>()) + .setItems(singletonList( + new TradePriceCalculateRespBO.OrderItem().setSkuId(10L).setCount(1).setSelected(true) + .setPrice(100).setSpuId(1L) + )); + TradePriceCalculatorHelper.recountPayPrice(result.getItems()); + TradePriceCalculatorHelper.recountAllPrice(result); + + // 调用:非砍价订单,直接跳过,不会调用 API + tradeBargainActivityPriceCalculator.calculate(param, result); + + // 断言:未产生促销 + assertEquals(result.getPromotions().size(), 0); + } + +} diff --git a/yudao-module-report/pom.xml b/yudao-module-report/pom.xml index 8f65121..e5fba72 100644 --- a/yudao-module-report/pom.xml +++ b/yudao-module-report/pom.xml @@ -56,7 +56,7 @@ org.jeecgframework.jimureport - jimureport-spring-boot3-starter-fastjson2 + jimureport-spring-boot3-starter org.jeecgframework.jimureport -- libgit2 0.21.4