소스 검색

Merge pull request #525 from DevDengChao/fix/trade-order-update-service-unit-test

修复 TradeOrderUpdateService 的单元测试
芋道源码 1 년 전
부모
커밋
0f5d6366a9

+ 1 - 1
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderDO.java

@@ -322,7 +322,7 @@ public class TradeOrderDO extends BaseDO {
      *
      * 关联 CombinationRecordDO 的 headId 字段
      */
-    private Long combinationHeadId;
+    private Long combinationHeadId; // FIXME 2024/5/15: "团长" 应该译作 leader / starter 而不是 head
     /**
      * 拼团记录编号
      *

+ 44 - 6
yudao-module-mall/yudao-module-trade-biz/src/test/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceTest.java

@@ -1,33 +1,49 @@
 package cn.iocoder.yudao.module.trade.service.order;
 
+import cn.hutool.core.util.IdUtil;
+import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
 import cn.iocoder.yudao.module.member.api.address.MemberAddressApi;
 import cn.iocoder.yudao.module.member.api.user.MemberUserApi;
 import cn.iocoder.yudao.module.pay.api.order.PayOrderApi;
 import cn.iocoder.yudao.module.pay.api.order.dto.PayOrderRespDTO;
 import cn.iocoder.yudao.module.pay.enums.order.PayOrderStatusEnum;
+import cn.iocoder.yudao.module.product.api.comment.ProductCommentApi;
 import cn.iocoder.yudao.module.product.api.sku.ProductSkuApi;
 import cn.iocoder.yudao.module.product.api.spu.ProductSpuApi;
 import cn.iocoder.yudao.module.promotion.api.coupon.CouponApi;
+import cn.iocoder.yudao.module.system.api.notify.NotifyMessageSendApi;
+import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.DeliveryExpressCreateReqVO;
 import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderDeliveryReqVO;
 import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO;
 import cn.iocoder.yudao.module.trade.dal.mysql.order.TradeOrderItemMapper;
 import cn.iocoder.yudao.module.trade.dal.mysql.order.TradeOrderMapper;
+import cn.iocoder.yudao.module.trade.dal.redis.no.TradeNoRedisDAO;
+import cn.iocoder.yudao.module.trade.enums.delivery.DeliveryTypeEnum;
+import cn.iocoder.yudao.module.trade.enums.order.TradeOrderRefundStatusEnum;
 import cn.iocoder.yudao.module.trade.enums.order.TradeOrderStatusEnum;
 import cn.iocoder.yudao.module.trade.framework.order.config.TradeOrderConfig;
 import cn.iocoder.yudao.module.trade.framework.order.config.TradeOrderProperties;
+import cn.iocoder.yudao.module.trade.service.cart.CartServiceImpl;
+import cn.iocoder.yudao.module.trade.service.delivery.DeliveryExpressService;
+import cn.iocoder.yudao.module.trade.service.delivery.DeliveryExpressServiceImpl;
+import cn.iocoder.yudao.module.trade.service.message.TradeMessageServiceImpl;
+import cn.iocoder.yudao.module.trade.service.order.handler.TradeOrderHandler;
+import cn.iocoder.yudao.module.trade.service.price.TradePriceServiceImpl;
+import cn.iocoder.yudao.module.trade.service.price.calculator.TradePriceCalculator;
+import jakarta.annotation.Resource;
 import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.mock.mockito.MockBean;
 import org.springframework.context.annotation.Import;
 
-import jakarta.annotation.Resource;
 import java.time.Duration;
 
 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
 import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.when;
 
@@ -37,8 +53,10 @@ import static org.mockito.Mockito.when;
  * @author LeeYan9
  * @since 2022-09-07
  */
-@Disabled // TODO 芋艿:后续 fix 补充的单测
-@Import({TradeOrderUpdateServiceImpl.class, TradeOrderConfig.class})
+@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
+@Import({TradeOrderUpdateServiceImpl.class, TradeOrderConfig.class, CartServiceImpl.class, TradePriceServiceImpl.class,
+        DeliveryExpressServiceImpl.class, TradeMessageServiceImpl.class
+})
 public class TradeOrderUpdateServiceTest extends BaseDbUnitTest {
 
     @Resource
@@ -55,7 +73,9 @@ public class TradeOrderUpdateServiceTest extends BaseDbUnitTest {
     private ProductSpuApi productSpuApi;
     @MockBean
     private ProductSkuApi productSkuApi;
-//    @MockBean
+    @MockBean
+    private ProductCommentApi productCommentApi;
+    //    @MockBean
 //    private PriceApi priceApi;
     @MockBean
     private PayOrderApi payOrderApi;
@@ -66,11 +86,22 @@ public class TradeOrderUpdateServiceTest extends BaseDbUnitTest {
 
     @MockBean
     private TradeOrderProperties tradeOrderProperties;
+    @MockBean
+    private TradeNoRedisDAO tradeNoRedisDAO;
+    @MockBean
+    private TradeOrderHandler tradeOrderHandler;
+    @MockBean
+    private TradePriceCalculator tradePriceCalculator;
+    @MockBean
+    private NotifyMessageSendApi notifyMessageSendApi;
+    @Autowired
+    private DeliveryExpressService deliveryExpressService;
 
     @BeforeEach
     public void setUp() {
         when(tradeOrderProperties.getAppId()).thenReturn(888L);
         when(tradeOrderProperties.getPayExpireTime()).thenReturn(Duration.ofDays(1));
+        when(tradeNoRedisDAO.generate(anyString())).thenReturn(IdUtil.randomUUID());
     }
 
 //    @Test
@@ -259,11 +290,18 @@ public class TradeOrderUpdateServiceTest extends BaseDbUnitTest {
         TradeOrderDO order = randomPojo(TradeOrderDO.class, o -> {
             o.setId(1L).setStatus(TradeOrderStatusEnum.UNDELIVERED.getStatus());
             o.setLogisticsId(null).setLogisticsNo(null).setDeliveryTime(null);
+            o.setRefundStatus(TradeOrderRefundStatusEnum.NONE.getStatus());
+            o.setDeliveryType(DeliveryTypeEnum.EXPRESS.getType());
         });
         tradeOrderMapper.insert(order);
+
+        DeliveryExpressCreateReqVO expressCreateReqVO = new DeliveryExpressCreateReqVO();
+        expressCreateReqVO.setCode("code").setName("Name").setLogo("logo").setSort(0).setStatus(CommonStatusEnum.ENABLE.getStatus());
+        Long deliveryExpressId = deliveryExpressService.createDeliveryExpress(expressCreateReqVO);
         // 准备参数
         TradeOrderDeliveryReqVO deliveryReqVO = new TradeOrderDeliveryReqVO().setId(1L)
-                .setLogisticsId(10L).setLogisticsNo("100");
+                .setLogisticsId(deliveryExpressId).setLogisticsNo("100");
+
         // mock 方法(支付单)
 
         // 调用

+ 159 - 116
yudao-module-mall/yudao-module-trade-biz/src/test/resources/sql/create_tables.sql

@@ -1,128 +1,155 @@
-CREATE TABLE IF NOT EXISTS "trade_order" (
-     "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
-     "no" varchar NOT NULL,
-     "type" int NOT NULL,
-     "terminal" int NOT NULL,
-     "user_id" bigint NOT NULL,
-     "user_ip" varchar NOT NULL,
-     "user_remark" varchar,
-     "status" int NOT NULL,
-     "product_count" int NOT NULL,
-     "cancel_type" int,
-     "remark" varchar,
-     "pay_status" bit NOT NULL,
-     "pay_time" datetime,
-     "finish_time" datetime,
-     "cancel_time" datetime,
-     "original_price" int NOT NULL,
-     "order_price" int NOT NULL,
-     "discount_price" int NOT NULL,
-     "delivery_price" int NOT NULL,
-     "adjust_price" int NOT NULL,
-     "pay_price" int NOT NULL,
-     "pay_order_id" bigint,
-     "pay_channel_code" varchar,
-     "delivery_template_id" bigint,
-     "logistics_id" bigint,
-     "logistics_no" varchar,
-     "delivery_time" datetime,
-     "receive_time" datetime,
-     "receiver_name" varchar NOT NULL,
-     "receiver_mobile" varchar NOT NULL,
-     "receiver_area_id" int NOT NULL,
-     "receiver_post_code" int,
-     "receiver_detail_address" varchar NOT NULL,
-     "after_sale_status" int NOT NULL,
-     "refund_price" int NOT NULL,
-     "coupon_id" bigint NOT NULL,
-     "coupon_price" int NOT NULL,
-     "point_price" int NOT NULL,
-     "creator" varchar DEFAULT '',
-     "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
-     "updater" varchar DEFAULT '',
-     "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-     "deleted" bit NOT NULL DEFAULT FALSE,
-     PRIMARY KEY ("id")
+CREATE TABLE IF NOT EXISTS "trade_order"
+(
+    "id"                      bigint   NOT NULL GENERATED BY DEFAULT AS IDENTITY,
+    "no"                      varchar  NOT NULL,
+    "type"                    int      NOT NULL,
+    "terminal"                int      NOT NULL,
+    "user_id"                 bigint   NOT NULL,
+    "user_ip"                 varchar  NOT NULL,
+    "user_remark"             varchar,
+    "status"                  int      NOT NULL,
+    "product_count"           int      NOT NULL,
+    "cancel_type"             int,
+    "remark"                  varchar,
+    "comment_status"          boolean,
+    "brokerage_user_id"       bigint,
+    "pay_status"              bit      NOT NULL,
+    "pay_time"                datetime,
+    "finish_time"             datetime,
+    "cancel_time"             datetime,
+    "total_price"             int      NULL,
+    "order_price"             int      NULL,
+    "discount_price"          int      NOT NULL,
+    "delivery_price"          int      NOT NULL,
+    "adjust_price"            int      NOT NULL,
+    "pay_price"               int      NOT NULL,
+    "delivery_type"           int      NOT NULL,
+    "pay_order_id"            bigint,
+    "pay_channel_code"        varchar,
+    "delivery_template_id"    bigint,
+    "logistics_id"            bigint,
+    "logistics_no"            varchar,
+    "delivery_time"           datetime,
+    "receive_time"            datetime,
+    "receiver_name"           varchar  NOT NULL,
+    "receiver_mobile"         varchar  NOT NULL,
+    "receiver_area_id"        int      NOT NULL,
+    "receiver_post_code"      int,
+    "receiver_detail_address" varchar  NOT NULL,
+    "pick_up_store_id"        long     NULL,
+    "pick_up_verify_code"     varchar  NULL,
+    "refund_status"           int      NULL,
+    "refund_price"            int      NULL,
+    "after_sale_status"       int      NULL,
+    "coupon_id"               bigint   NOT NULL,
+    "coupon_price"            int      NOT NULL,
+    "use_point"               int      NULL,
+    "point_price"             int      NOT NULL,
+    "give_point"              int      NULL,
+    "refund_point"            int      NULL,
+    "vip_price"               int      NULL,
+    "seckill_activity_id"     long     NULL,
+    "bargain_activity_id"     long     NULL,
+    "bargain_record_id"       long     NULL,
+    "combination_activity_id" long     NULL,
+    "combination_head_id"     long     NULL,
+    "combination_record_id"   long     NULL,
+    "creator"                 varchar           DEFAULT '',
+    "create_time"             datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    "updater"                 varchar           DEFAULT '',
+    "update_time"             datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+    "deleted"                 bit      NOT NULL DEFAULT FALSE,
+    PRIMARY KEY ("id")
 ) COMMENT '交易订单表';
 
-CREATE TABLE IF NOT EXISTS "trade_order_item" (
-      "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
-      "user_id" bigint NOT NULL,
-      "order_id" bigint NOT NULL,
-      "spu_id" bigint NOT NULL,
-      "spu_name" varchar NOT NULL,
-      "sku_id" bigint NOT NULL,
-      "properties" varchar,
-      "pic_url" varchar,
-      "count" int NOT NULL,
-      "original_price" int NOT NULL,
-      "original_unit_price" int NOT NULL,
-      "discount_price" int NOT NULL,
-      "pay_price" int NOT NULL,
-      "order_part_price" int NOT NULL,
-      "order_divide_price" int NOT NULL,
-      "after_sale_status" int NOT NULL,
-      "creator" varchar DEFAULT '',
-      "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
-      "updater" varchar DEFAULT '',
-      "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-      "deleted" bit NOT NULL DEFAULT FALSE,
-      PRIMARY KEY ("id")
+CREATE TABLE IF NOT EXISTS "trade_order_item"
+(
+    "id"                bigint   NOT NULL GENERATED BY DEFAULT AS IDENTITY,
+    "user_id"           bigint   NOT NULL,
+    "order_id"          bigint   NOT NULL,
+    "cart_id"           int      NULL,
+    "spu_id"            bigint   NOT NULL,
+    "spu_name"          varchar  NOT NULL,
+    "sku_id"            bigint   NOT NULL,
+    "properties"        varchar,
+    "pic_url"           varchar,
+    "count"             int      NOT NULL,
+    "comment_status"    boolean  NULL,
+    "price"             int      NOT NULL,
+    "discount_price"    int      NOT NULL,
+    "delivery_price"    int      NULL,
+    "adjust_price"      int      NULL,
+    "pay_price"         int      NOT NULL,
+    "coupon_price"      int      NULL,
+    "point_price"       int      NULL,
+    "use_point"         int      NULL,
+    "give_point"        int      NULL,
+    "vip_price"         int      NULL,
+    "after_sale_id"     long     NULL,
+    "after_sale_status" int      NOT NULL,
+    "creator"           varchar           DEFAULT '',
+    "create_time"       datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    "updater"           varchar           DEFAULT '',
+    "update_time"       datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+    "deleted"           bit      NOT NULL DEFAULT FALSE,
+    PRIMARY KEY ("id")
 ) COMMENT '交易订单明细表';
 
-CREATE TABLE IF NOT EXISTS "trade_after_sale" (
-    "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
-    "no" varchar NOT NULL,
-    "status" int NOT NULL,
-    "type" int NOT NULL,
-    "way" int NOT NULL,
-    "user_id" bigint NOT NULL,
-    "apply_reason" varchar NOT NULL,
+CREATE TABLE IF NOT EXISTS "trade_after_sale"
+(
+    "id"             bigint   NOT NULL GENERATED BY DEFAULT AS IDENTITY,
+    "no"             varchar  NOT NULL,
+    "status"         int      NOT NULL,
+    "type"           int      NOT NULL,
+    "way"            int      NOT NULL,
+    "user_id"        bigint   NOT NULL,
+    "apply_reason"   varchar  NOT NULL,
     "apply_description" varchar,
     "apply_pic_urls" varchar,
-    "order_id" bigint NOT NULL,
-    "order_no" varchar NOT NULL,
-    "order_item_id" bigint NOT NULL,
-    "spu_id" bigint NOT NULL,
-    "spu_name" varchar NOT NULL,
-    "sku_id" bigint NOT NULL,
-    "properties" varchar,
-    "pic_url" varchar,
-    "count" int NOT NULL,
-    "audit_time" varchar,
-    "audit_user_id" bigint,
-    "audit_reason" varchar,
-    "refund_price" int NOT NULL,
-    "pay_refund_id" bigint,
-    "refund_time" varchar,
-    "logistics_id" bigint,
-    "logistics_no" varchar,
-    "delivery_time" varchar,
-    "receive_time" varchar,
+    "order_id"       bigint   NOT NULL,
+    "order_no"       varchar  NOT NULL,
+    "order_item_id"  bigint   NOT NULL,
+    "spu_id"         bigint   NOT NULL,
+    "spu_name"       varchar  NOT NULL,
+    "sku_id"         bigint   NOT NULL,
+    "properties"     varchar,
+    "pic_url"        varchar,
+    "count"          int      NOT NULL,
+    "audit_time"     varchar,
+    "audit_user_id"  bigint,
+    "audit_reason"   varchar,
+    "refund_price"   int      NOT NULL,
+    "pay_refund_id"  bigint,
+    "refund_time"    varchar,
+    "logistics_id"   bigint,
+    "logistics_no"   varchar,
+    "delivery_time"  varchar,
+    "receive_time"   varchar,
     "receive_reason" varchar,
-    "creator" varchar DEFAULT '',
-    "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "updater" varchar DEFAULT '',
-    "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-    "deleted" bit NOT NULL DEFAULT FALSE,
+    "creator"        varchar           DEFAULT '',
+    "create_time"    datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    "updater"        varchar           DEFAULT '',
+    "update_time"    datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+    "deleted"        bit      NOT NULL DEFAULT FALSE,
     PRIMARY KEY ("id")
 ) COMMENT '交易售后表';
 
-CREATE TABLE IF NOT EXISTS "trade_after_sale_log" (
-    "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
-    "user_id" bigint NOT NULL,
-    "user_type" int NOT NULL,
-    "after_sale_id" bigint NOT NULL,
-    "order_id" bigint NOT NULL,
-    "order_item_id" bigint NOT NULL,
+CREATE TABLE IF NOT EXISTS "trade_after_sale_log"
+(
+    "id"            bigint   NOT NULL GENERATED BY DEFAULT AS IDENTITY,
+    "user_id"       bigint   NOT NULL,
+    "user_type"     int      NOT NULL,
+    "after_sale_id" bigint   NOT NULL,
+    "order_id"      bigint   NOT NULL,
+    "order_item_id" bigint   NOT NULL,
     "before_status" int,
-    "after_status" int NOT NULL,
-    "content" varchar NOT NULL,
-    "creator" varchar DEFAULT '',
-    "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "updater" varchar DEFAULT '',
-    "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-    "deleted" bit NOT NULL DEFAULT FALSE,
+    "after_status"  int      NOT NULL,
+    "content"       varchar  NOT NULL,
+    "creator"       varchar           DEFAULT '',
+    "create_time"   datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    "updater"       varchar           DEFAULT '',
+    "update_time"   datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+    "deleted"       bit      NOT NULL DEFAULT FALSE,
     PRIMARY KEY ("id")
 ) COMMENT '交易售后日志';
 
@@ -161,7 +188,7 @@ CREATE TABLE IF NOT EXISTS "trade_brokerage_record"
     "updater"       varchar           DEFAULT '',
     "update_time"   datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
     "deleted"       bit      NOT NULL DEFAULT FALSE,
-    "tenant_id"      bigint   not null default '0',
+    "tenant_id" bigint not null default '0',
     PRIMARY KEY ("id")
 ) COMMENT '佣金记录';
 CREATE TABLE IF NOT EXISTS "trade_brokerage_withdraw"
@@ -186,6 +213,22 @@ CREATE TABLE IF NOT EXISTS "trade_brokerage_withdraw"
     "updater"             varchar           DEFAULT '',
     "update_time"         datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
     "deleted"             bit      NOT NULL DEFAULT FALSE,
-    "tenant_id"      bigint   not null default '0',
+    "tenant_id" bigint not null default '0',
+    PRIMARY KEY ("id")
+) COMMENT '佣金提现';
+
+CREATE TABLE IF NOT EXISTS "trade_delivery_express"
+(
+    "id"          int      NOT NULL GENERATED BY DEFAULT AS IDENTITY,
+    "code"        varchar  NULL,
+    "name"        varchar,
+    "logo"        varchar  NULL,
+    "sort"        int      NOT NULL,
+    "status"      int      NOT NULL,
+    "creator"     varchar           DEFAULT '',
+    "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    "updater"     varchar           DEFAULT '',
+    "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+    "deleted"     bit      NOT NULL DEFAULT FALSE,
     PRIMARY KEY ("id")
 ) COMMENT '佣金提现';