Commit b78f814552f31868c580d70e26fbf73ec9ac50e4

Authored by puhui999
1 parent 78b3d2a2

fix:mall promotion SeckillActivity

yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/SeckillActivityController.java
... ... @@ -2,6 +2,9 @@ package cn.iocoder.yudao.module.promotion.controller.admin.seckill;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  5 +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
  6 +import cn.iocoder.yudao.module.product.api.spu.ProductSpuApi;
  7 +import cn.iocoder.yudao.module.product.api.spu.dto.ProductSpuRespDTO;
5 8 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.activity.*;
6 9 import cn.iocoder.yudao.module.promotion.convert.seckill.seckillactivity.SeckillActivityConvert;
7 10 import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillactivity.SeckillActivityDO;
... ... @@ -18,6 +21,7 @@ import javax.annotation.Resource;
18 21 import javax.validation.Valid;
19 22 import java.util.Collection;
20 23 import java.util.List;
  24 +import java.util.Set;
21 25  
22 26 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
23 27  
... ... @@ -29,6 +33,8 @@ public class SeckillActivityController {
29 33  
30 34 @Resource
31 35 private SeckillActivityService seckillActivityService;
  36 + @Resource
  37 + private ProductSpuApi spuApi;
32 38  
33 39 @PostMapping("/create")
34 40 @Operation(summary = "创建秒杀活动")
... ... @@ -69,11 +75,8 @@ public class SeckillActivityController {
69 75 @PreAuthorize("@ss.hasPermission('promotion:seckill-activity:query')")
70 76 public CommonResult<SeckillActivityDetailRespVO> getSeckillActivity(@RequestParam("id") Long id) {
71 77 SeckillActivityDO seckillActivity = seckillActivityService.getSeckillActivity(id);
72   - if (seckillActivity == null) {
73   - return success(null);
74   - }
75   - List<SeckillProductDO> seckillProducts = seckillActivityService.getSeckillProductListByActivityId(id);
76   - return success(SeckillActivityConvert.INSTANCE.convert(seckillActivity,seckillProducts));
  78 + List<SeckillProductDO> seckillProducts = seckillActivityService.getSeckillProductListByActivityId(id);
  79 + return success(SeckillActivityConvert.INSTANCE.convert(seckillActivity, seckillProducts));
77 80 }
78 81  
79 82 @GetMapping("/list")
... ... @@ -90,7 +93,11 @@ public class SeckillActivityController {
90 93 @PreAuthorize("@ss.hasPermission('promotion:seckill-activity:query')")
91 94 public CommonResult<PageResult<SeckillActivityRespVO>> getSeckillActivityPage(@Valid SeckillActivityPageReqVO pageVO) {
92 95 PageResult<SeckillActivityDO> pageResult = seckillActivityService.getSeckillActivityPage(pageVO);
93   - return success(SeckillActivityConvert.INSTANCE.convertPage(pageResult));
  96 + Set<Long> aIds = CollectionUtils.convertSet(pageResult.getList(), SeckillActivityDO::getId);
  97 + List<SeckillProductDO> seckillProducts = seckillActivityService.getSeckillProductListByActivityId(aIds);
  98 + Set<Long> spuIds = CollectionUtils.convertSet(pageResult.getList(), SeckillActivityDO::getSpuId);
  99 + List<ProductSpuRespDTO> spuList = spuApi.getSpuList(spuIds);
  100 + return success(SeckillActivityConvert.INSTANCE.convertPage(pageResult, seckillProducts, spuList));
94 101 }
95 102  
96 103 }
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/vo/activity/SeckillActivityRespVO.java
... ... @@ -6,6 +6,7 @@ import lombok.Data;
6 6 import lombok.EqualsAndHashCode;
7 7 import lombok.ToString;
8 8  
  9 +import java.time.LocalDateTime;
9 10 import java.util.List;
10 11  
11 12 /**
... ... @@ -19,6 +20,12 @@ import java.util.List;
19 20 @ToString(callSuper = true)
20 21 public class SeckillActivityRespVO extends SeckillActivityBaseVO {
21 22  
  23 + @Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "618大促")
  24 + private String spuName;
  25 +
  26 + @Schema(description = "商品主图", requiredMode = Schema.RequiredMode.REQUIRED, example = "618大促")
  27 + private String picUrl;
  28 +
22 29 @Schema(description = "秒杀活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
23 30 private Long id;
24 31  
... ... @@ -28,4 +35,22 @@ public class SeckillActivityRespVO extends SeckillActivityBaseVO {
28 35 @Schema(description = "活动状态 开启:0 禁用:1", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
29 36 private Integer status;
30 37  
  38 + @Schema(description = "订单实付金额,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "22354")
  39 + private Integer totalPrice;
  40 +
  41 + @Schema(description = "秒杀库存", example = "10")
  42 + private Integer stock;
  43 +
  44 + @Schema(description = "秒杀总库存", example = "20")
  45 + private Integer totalStock;
  46 +
  47 + @Schema(description = "新增订单数", example = "20")
  48 + private Integer orderCount;
  49 +
  50 + @Schema(description = "付款人数", example = "20")
  51 + private Integer userCount;
  52 +
  53 + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
  54 + private LocalDateTime createTime;
  55 +
31 56 }
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/convert/seckill/seckillactivity/SeckillActivityConvert.java
... ... @@ -3,11 +3,13 @@ package cn.iocoder.yudao.module.promotion.convert.seckill.seckillactivity;
3 3 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
4 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 5 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
  6 +import cn.iocoder.yudao.module.product.api.spu.dto.ProductSpuRespDTO;
6 7 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.activity.SeckillActivityCreateReqVO;
7 8 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.activity.SeckillActivityDetailRespVO;
8 9 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.activity.SeckillActivityRespVO;
9 10 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.activity.SeckillActivityUpdateReqVO;
10 11 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.product.SeckillProductBaseVO;
  12 +import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.product.SeckillProductRespVO;
11 13 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.product.SeckillProductUpdateReqVO;
12 14 import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillactivity.SeckillActivityDO;
13 15 import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillactivity.SeckillProductDO;
... ... @@ -40,9 +42,27 @@ public interface SeckillActivityConvert {
40 42  
41 43 PageResult<SeckillActivityRespVO> convertPage(PageResult<SeckillActivityDO> page);
42 44  
43   - SeckillActivityDetailRespVO convert(SeckillActivityDO seckillActivity, List<SeckillProductDO> seckillProducts);
  45 + default PageResult<SeckillActivityRespVO> convertPage(PageResult<SeckillActivityDO> page, List<SeckillProductDO> seckillProducts, List<ProductSpuRespDTO> spuList) {
  46 + Map<Long, ProductSpuRespDTO> spuMap = CollectionUtils.convertMap(spuList, ProductSpuRespDTO::getId, c -> c);
  47 + PageResult<SeckillActivityRespVO> pageResult = convertPage(page);
  48 + pageResult.getList().forEach(item -> {
  49 + item.setSpuName(spuMap.get(item.getSpuId()).getName());
  50 + item.setPicUrl(spuMap.get(item.getSpuId()).getPicUrl());
  51 + item.setProducts(convertList2(seckillProducts));
  52 + });
  53 + return pageResult;
  54 + }
  55 +
  56 + SeckillActivityDetailRespVO convert1(SeckillActivityDO seckillActivity);
  57 +
  58 + default SeckillActivityDetailRespVO convert(SeckillActivityDO seckillActivity, List<SeckillProductDO> seckillProducts) {
  59 + SeckillActivityDetailRespVO respVO = convert1(seckillActivity);
  60 + respVO.setProducts(convertList2(seckillProducts));
  61 + return respVO;
  62 + }
44 63  
45 64 @Mappings({
  65 + @Mapping(target = "id", expression = "java(null)"),
46 66 @Mapping(target = "activityId", source = "activityDO.id"),
47 67 @Mapping(target = "configIds", source = "activityDO.configIds"),
48 68 @Mapping(target = "spuId", source = "activityDO.spuId"),
... ... @@ -76,4 +96,6 @@ public interface SeckillActivityConvert {
76 96 return list;
77 97 }
78 98  
  99 + List<SeckillProductRespVO> convertList2(List<SeckillProductDO> productDOs);
  100 +
79 101 }
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/seckill/seckillactivity/SeckillProductMapper.java
... ... @@ -21,6 +21,10 @@ public interface SeckillProductMapper extends BaseMapperX&lt;SeckillProductDO&gt; {
21 21 return selectList(SeckillProductDO::getActivityId, id);
22 22 }
23 23  
  24 + default List<SeckillProductDO> selectListByActivityId(Collection<Long> ids) {
  25 + return selectList(SeckillProductDO::getActivityId, ids);
  26 + }
  27 +
24 28 default List<SeckillProductDO> selectListBySkuIds(Collection<Long> skuIds) {
25 29 return selectList(SeckillProductDO::getSkuId, skuIds);
26 30 }
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/seckill/seckillactivity/SeckillActivityService.java
... ... @@ -79,4 +79,12 @@ public interface SeckillActivityService {
79 79 */
80 80 List<SeckillProductDO> getSeckillProductListByActivityId(Long id);
81 81  
  82 + /**
  83 + * 通过活动编号获取活动商品
  84 + *
  85 + * @param ids 活动编号
  86 + * @return 活动商品列表
  87 + */
  88 + List<SeckillProductDO> getSeckillProductListByActivityId(Collection<Long> ids);
  89 +
82 90 }
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/seckill/seckillactivity/SeckillActivityServiceImpl.java
... ... @@ -160,7 +160,7 @@ public class SeckillActivityServiceImpl implements SeckillActivityService {
160 160 if (CollUtil.isNotEmpty(u)) {
161 161 List<SeckillProductUpdateReqVO> vos = CollectionUtils.filterList(products, item -> u.contains(item.getSkuId()));
162 162 List<SeckillProductDO> productDOs = SeckillActivityConvert.INSTANCE.convertList1(updateObj, vos, seckillProductDOs);
163   - seckillProductMapper.insertBatch(productDOs);
  163 + seckillProductMapper.updateBatch(productDOs);
164 164 }
165 165 }
166 166  
... ... @@ -206,7 +206,7 @@ public class SeckillActivityServiceImpl implements SeckillActivityService {
206 206  
207 207 @Override
208 208 public SeckillActivityDO getSeckillActivity(Long id) {
209   - return seckillActivityMapper.selectById(id);
  209 + return validateSeckillActivityExists(id);
210 210 }
211 211  
212 212 @Override
... ... @@ -224,4 +224,9 @@ public class SeckillActivityServiceImpl implements SeckillActivityService {
224 224 return seckillProductMapper.selectListByActivityId(id);
225 225 }
226 226  
  227 + @Override
  228 + public List<SeckillProductDO> getSeckillProductListByActivityId(Collection<Long> ids) {
  229 + return seckillProductMapper.selectListByActivityId(ids);
  230 + }
  231 +
227 232 }
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/util/PromotionUtils.java
1 1 package cn.iocoder.yudao.module.promotion.util;
2 2  
  3 +import cn.hutool.core.collection.CollUtil;
3 4 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
4 5 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
5 6 import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils;
... ... @@ -35,7 +36,8 @@ public class PromotionUtils {
35 36 Set<Long> skuIdsSet = CollectionUtils.convertSet(products, func);
36 37 Set<Long> skuIdsSet1 = CollectionUtils.convertSet(skus, ProductSkuRespDTO::getId);
37 38 // 校验 skuId 是否存在
38   - if (!skuIdsSet1.containsAll(skuIdsSet) || !skuIdsSet.containsAll(skuIdsSet1)) {
  39 + List<Long> f = CollectionUtils.filterList(skuIdsSet, s -> !skuIdsSet1.contains(s));
  40 + if (CollUtil.isNotEmpty(f)) {
39 41 throw exception(SKU_NOT_EXISTS);
40 42 }
41 43 }
... ...
yudao-module-mall/yudao-module-promotion-biz/src/test/resources/sql/clean.sql
1   -DELETE FROM "market_activity";
2   -DELETE FROM "promotion_coupon_template";
3   -DELETE FROM "promotion_coupon";
4   -DELETE FROM "promotion_reward_activity";
5   -DELETE FROM "promotion_discount_activity";
6   -DELETE FROM "promotion_discount_product";
7   -DELETE FROM "promotion_seckill_config";
  1 +DELETE
  2 +FROM "market_activity";
  3 +DELETE
  4 +FROM "promotion_coupon_template";
  5 +DELETE
  6 +FROM "promotion_coupon";
  7 +DELETE
  8 +FROM "promotion_reward_activity";
  9 +DELETE
  10 +FROM "promotion_discount_activity";
  11 +DELETE
  12 +FROM "promotion_discount_product";
  13 +DELETE
  14 +FROM "promotion_seckill_config";
  15 +DELETE
  16 +FROM "promotion_combination_activity";
... ...
yudao-module-mall/yudao-module-promotion-biz/src/test/resources/sql/create_tables.sql
1   -CREATE TABLE IF NOT EXISTS "market_activity" (
2   - "id" bigint(20) NOT NULL GENERATED BY DEFAULT AS IDENTITY,
3   - "title" varchar(50) NOT NULL,
4   - "activity_type" tinyint(4) NOT NULL,
5   - "status" tinyint(4) NOT NULL,
6   - "start_time" datetime NOT NULL,
7   - "end_time" datetime NOT NULL,
8   - "invalid_time" datetime,
9   - "delete_time" datetime,
  1 +CREATE TABLE IF NOT EXISTS "market_activity"
  2 +(
  3 + "id" bigint(20) NOT NULL GENERATED BY DEFAULT AS IDENTITY,
  4 + "title" varchar(50) NOT NULL,
  5 + "activity_type" tinyint(4) NOT NULL,
  6 + "status" tinyint(4) NOT NULL,
  7 + "start_time" datetime NOT NULL,
  8 + "end_time" datetime NOT NULL,
  9 + "invalid_time" datetime,
  10 + "delete_time" datetime,
10 11 "time_limited_discount" varchar(2000),
11   - "full_privilege" varchar(2000),
12   - "creator" varchar(64) DEFAULT '',
13   - "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
14   - "updater" varchar(64) DEFAULT '',
15   - "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
16   - "deleted" bit NOT NULL DEFAULT FALSE,
17   - "tenant_id" bigint(20) NOT NULL,
  12 + "full_privilege" varchar(2000),
  13 + "creator" varchar(64) DEFAULT '',
  14 + "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  15 + "updater" varchar(64) DEFAULT '',
  16 + "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  17 + "deleted" bit NOT NULL DEFAULT FALSE,
  18 + "tenant_id" bigint(20) NOT NULL,
18 19 PRIMARY KEY ("id")
19   - ) COMMENT '促销活动';
  20 +) COMMENT '促销活动';
20 21  
21   -CREATE TABLE IF NOT EXISTS "promotion_coupon_template" (
22   - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
23   - "name" varchar NOT NULL,
24   - "status" int NOT NULL,
25   - "total_count" int NOT NULL,
26   - "take_limit_count" int NOT NULL,
27   - "take_type" int NOT NULL,
28   - "use_price" int NOT NULL,
29   - "product_scope" int NOT NULL,
30   - "product_spu_ids" varchar,
31   - "validity_type" int NOT NULL,
32   - "valid_start_time" datetime,
33   - "valid_end_time" datetime,
34   - "fixed_start_term" int,
35   - "fixed_end_term" int,
36   - "discount_type" int NOT NULL,
37   - "discount_percent" int,
38   - "discount_price" int,
39   - "discount_limit_price" int,
40   - "take_count" int NOT NULL DEFAULT 0,
41   - "use_count" int NOT NULL DEFAULT 0,
42   - "creator" varchar DEFAULT '',
43   - "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
44   - "updater" varchar DEFAULT '',
45   - "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
46   - "deleted" bit NOT NULL DEFAULT FALSE,
47   - PRIMARY KEY ("id")
  22 +CREATE TABLE IF NOT EXISTS "promotion_coupon_template"
  23 +(
  24 + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
  25 + "name" varchar NOT NULL,
  26 + "status" int NOT NULL,
  27 + "total_count" int NOT NULL,
  28 + "take_limit_count" int NOT NULL,
  29 + "take_type" int NOT NULL,
  30 + "use_price" int NOT NULL,
  31 + "product_scope" int NOT NULL,
  32 + "product_spu_ids" varchar,
  33 + "validity_type" int NOT NULL,
  34 + "valid_start_time" datetime,
  35 + "valid_end_time" datetime,
  36 + "fixed_start_term" int,
  37 + "fixed_end_term" int,
  38 + "discount_type" int NOT NULL,
  39 + "discount_percent" int,
  40 + "discount_price" int,
  41 + "discount_limit_price" int,
  42 + "take_count" int NOT NULL DEFAULT 0,
  43 + "use_count" int NOT NULL DEFAULT 0,
  44 + "creator" varchar DEFAULT '',
  45 + "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  46 + "updater" varchar DEFAULT '',
  47 + "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  48 + "deleted" bit NOT NULL DEFAULT FALSE,
  49 + PRIMARY KEY ("id")
48 50 ) COMMENT '优惠劵模板';
49 51  
50   -CREATE TABLE IF NOT EXISTS "promotion_coupon" (
51   - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
52   - "template_id" bigint NOT NULL,
53   - "name" varchar NOT NULL,
54   - "status" int NOT NULL,
55   - "user_id" bigint NOT NULL,
56   - "take_type" int NOT NULL,
57   - "useprice" int NOT NULL,
58   - "valid_start_time" datetime NOT NULL,
59   - "valid_end_time" datetime NOT NULL,
60   - "product_scope" int NOT NULL,
61   - "product_spu_ids" varchar,
62   - "discount_type" int NOT NULL,
63   - "discount_percent" int,
64   - "discount_price" int,
  52 +CREATE TABLE IF NOT EXISTS "promotion_coupon"
  53 +(
  54 + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
  55 + "template_id" bigint NOT NULL,
  56 + "name" varchar NOT NULL,
  57 + "status" int NOT NULL,
  58 + "user_id" bigint NOT NULL,
  59 + "take_type" int NOT NULL,
  60 + "useprice" int NOT NULL,
  61 + "valid_start_time" datetime NOT NULL,
  62 + "valid_end_time" datetime NOT NULL,
  63 + "product_scope" int NOT NULL,
  64 + "product_spu_ids" varchar,
  65 + "discount_type" int NOT NULL,
  66 + "discount_percent" int,
  67 + "discount_price" int,
65 68 "discount_limit_price" int,
66   - "use_order_id" bigint,
67   - "use_time" datetime,
68   - "creator" varchar DEFAULT '',
69   - "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
70   - "updater" varchar DEFAULT '',
71   - "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
72   - "deleted" bit NOT NULL DEFAULT FALSE,
  69 + "use_order_id" bigint,
  70 + "use_time" datetime,
  71 + "creator" varchar DEFAULT '',
  72 + "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  73 + "updater" varchar DEFAULT '',
  74 + "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  75 + "deleted" bit NOT NULL DEFAULT FALSE,
73 76 PRIMARY KEY ("id")
74 77 ) COMMENT '优惠劵';
75 78  
76   -CREATE TABLE IF NOT EXISTS "promotion_reward_activity" (
77   - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
78   - "name" varchar NOT NULL,
79   - "status" int NOT NULL,
80   - "start_time" datetime NOT NULL,
81   - "end_time" datetime NOT NULL,
82   - "remark" varchar,
83   - "condition_type" int NOT NULL,
84   - "product_scope" int NOT NULL,
85   - "product_spu_ids" varchar,
86   - "rules" varchar,
87   - "creator" varchar DEFAULT '',
88   - "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
89   - "updater" varchar DEFAULT '',
90   - "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
91   - "deleted" bit NOT NULL DEFAULT FALSE,
92   - PRIMARY KEY ("id")
  79 +CREATE TABLE IF NOT EXISTS "promotion_reward_activity"
  80 +(
  81 + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
  82 + "name" varchar NOT NULL,
  83 + "status" int NOT NULL,
  84 + "start_time" datetime NOT NULL,
  85 + "end_time" datetime NOT NULL,
  86 + "remark" varchar,
  87 + "condition_type" int NOT NULL,
  88 + "product_scope" int NOT NULL,
  89 + "product_spu_ids" varchar,
  90 + "rules" varchar,
  91 + "creator" varchar DEFAULT '',
  92 + "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  93 + "updater" varchar DEFAULT '',
  94 + "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  95 + "deleted" bit NOT NULL DEFAULT FALSE,
  96 + PRIMARY KEY ("id")
93 97 ) COMMENT '满减送活动';
94 98  
95   -CREATE TABLE IF NOT EXISTS "promotion_discount_activity" (
96   - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
97   - "name" varchar NOT NULL,
98   - "status" int NOT NULL,
99   - "start_time" datetime NOT NULL,
100   - "end_time" datetime NOT NULL,
101   - "remark" varchar,
102   - "creator" varchar DEFAULT '',
103   - "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
104   - "updater" varchar DEFAULT '',
105   - "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
106   - "deleted" bit NOT NULL DEFAULT FALSE,
107   - PRIMARY KEY ("id")
  99 +CREATE TABLE IF NOT EXISTS "promotion_discount_activity"
  100 +(
  101 + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
  102 + "name" varchar NOT NULL,
  103 + "status" int NOT NULL,
  104 + "start_time" datetime NOT NULL,
  105 + "end_time" datetime NOT NULL,
  106 + "remark" varchar,
  107 + "creator" varchar DEFAULT '',
  108 + "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  109 + "updater" varchar DEFAULT '',
  110 + "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  111 + "deleted" bit NOT NULL DEFAULT FALSE,
  112 + PRIMARY KEY ("id")
108 113 ) COMMENT '限时折扣活动';
109 114  
110 115 -- 将该建表 SQL 语句,添加到 yudao-module-promotion-biz 模块的 test/resources/sql/create_tables.sql 文件里
111   -CREATE TABLE IF NOT EXISTS "promotion_seckill_activity" (
112   - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
113   - "spu_id" bigint NOT NULL,
114   - "name" varchar NOT NULL,
115   - "status" int NOT NULL,
116   - "remark" varchar,
117   - "start_time" varchar NOT NULL,
118   - "end_time" varchar NOT NULL,
119   - "sort" int NOT NULL,
120   - "config_ids" varchar NOT NULL,
121   - "order_count" int NOT NULL,
122   - "user_count" int NOT NULL,
123   - "total_price" int NOT NULL,
124   - "total_limit_count" int,
  116 +CREATE TABLE IF NOT EXISTS "promotion_seckill_activity"
  117 +(
  118 + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
  119 + "spu_id" bigint NOT NULL,
  120 + "name" varchar NOT NULL,
  121 + "status" int NOT NULL,
  122 + "remark" varchar,
  123 + "start_time" varchar NOT NULL,
  124 + "end_time" varchar NOT NULL,
  125 + "sort" int NOT NULL,
  126 + "config_ids" varchar NOT NULL,
  127 + "order_count" int NOT NULL,
  128 + "user_count" int NOT NULL,
  129 + "total_price" int NOT NULL,
  130 + "total_limit_count" int,
125 131 "single_limit_count" int,
126   - "stock" int,
127   - "total_stock" int,
128   - "creator" varchar DEFAULT '',
129   - "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
130   - "updater" varchar DEFAULT '',
131   - "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
132   - "deleted" bit NOT NULL DEFAULT FALSE,
133   - "tenant_id" bigint NOT NULL,
  132 + "stock" int,
  133 + "total_stock" int,
  134 + "creator" varchar DEFAULT '',
  135 + "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  136 + "updater" varchar DEFAULT '',
  137 + "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  138 + "deleted" bit NOT NULL DEFAULT FALSE,
  139 + "tenant_id" bigint NOT NULL,
134 140 PRIMARY KEY ("id")
135 141 ) COMMENT '秒杀活动';
136 142  
137   -CREATE TABLE IF NOT EXISTS "promotion_seckill_config" (
138   - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
139   - "name" varchar NOT NULL,
140   - "start_time" varchar NOT NULL,
141   - "end_time" varchar NOT NULL,
142   - "pic_url" varchar NOT NULL,
143   - "status" int NOT NULL,
144   - "creator" varchar DEFAULT '',
  143 +CREATE TABLE IF NOT EXISTS "promotion_seckill_config"
  144 +(
  145 + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
  146 + "name" varchar NOT NULL,
  147 + "start_time" varchar NOT NULL,
  148 + "end_time" varchar NOT NULL,
  149 + "pic_url" varchar NOT NULL,
  150 + "status" int NOT NULL,
  151 + "creator" varchar DEFAULT '',
145 152 "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
146   - "updater" varchar DEFAULT '',
  153 + "updater" varchar DEFAULT '',
147 154 "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
148   - "deleted" bit NOT NULL DEFAULT FALSE,
149   - "tenant_id" bigint NOT NULL,
  155 + "deleted" bit NOT NULL DEFAULT FALSE,
  156 + "tenant_id" bigint NOT NULL,
150 157 PRIMARY KEY ("id")
151 158 ) COMMENT '秒杀时段配置';
  159 +
  160 +CREATE TABLE IF NOT EXISTS "promotion_combination_activity"
  161 +(
  162 + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
  163 + "name" varchar NOT NULL,
  164 + "spu_id" bigint,
  165 + "total_limit_count" int NOT NULL,
  166 + "single_limit_count" int NOT NULL,
  167 + "start_time" varchar NOT NULL,
  168 + "end_time" varchar NOT NULL,
  169 + "user_size" int NOT NULL,
  170 + "total_num" int NOT NULL,
  171 + "success_num" int NOT NULL,
  172 + "order_user_count" int NOT NULL,
  173 + "virtual_group" int NOT NULL,
  174 + "status" int NOT NULL,
  175 + "limit_duration" int NOT NULL,
  176 + "creator" varchar DEFAULT '',
  177 + "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  178 + "updater" varchar DEFAULT '',
  179 + "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  180 + "deleted" bit NOT NULL DEFAULT FALSE,
  181 + "tenant_id" bigint NOT NULL,
  182 + PRIMARY KEY ("id")
  183 +) COMMENT '拼团活动';
152 184 \ No newline at end of file
... ...