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,6 +2,9 @@ package cn.iocoder.yudao.module.promotion.controller.admin.seckill;
2 2
3 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 import cn.iocoder.yudao.framework.common.pojo.PageResult; 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 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.activity.*; 8 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.activity.*;
6 import cn.iocoder.yudao.module.promotion.convert.seckill.seckillactivity.SeckillActivityConvert; 9 import cn.iocoder.yudao.module.promotion.convert.seckill.seckillactivity.SeckillActivityConvert;
7 import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillactivity.SeckillActivityDO; 10 import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillactivity.SeckillActivityDO;
@@ -18,6 +21,7 @@ import javax.annotation.Resource; @@ -18,6 +21,7 @@ import javax.annotation.Resource;
18 import javax.validation.Valid; 21 import javax.validation.Valid;
19 import java.util.Collection; 22 import java.util.Collection;
20 import java.util.List; 23 import java.util.List;
  24 +import java.util.Set;
21 25
22 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 26 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
23 27
@@ -29,6 +33,8 @@ public class SeckillActivityController { @@ -29,6 +33,8 @@ public class SeckillActivityController {
29 33
30 @Resource 34 @Resource
31 private SeckillActivityService seckillActivityService; 35 private SeckillActivityService seckillActivityService;
  36 + @Resource
  37 + private ProductSpuApi spuApi;
32 38
33 @PostMapping("/create") 39 @PostMapping("/create")
34 @Operation(summary = "创建秒杀活动") 40 @Operation(summary = "创建秒杀活动")
@@ -69,11 +75,8 @@ public class SeckillActivityController { @@ -69,11 +75,8 @@ public class SeckillActivityController {
69 @PreAuthorize("@ss.hasPermission('promotion:seckill-activity:query')") 75 @PreAuthorize("@ss.hasPermission('promotion:seckill-activity:query')")
70 public CommonResult<SeckillActivityDetailRespVO> getSeckillActivity(@RequestParam("id") Long id) { 76 public CommonResult<SeckillActivityDetailRespVO> getSeckillActivity(@RequestParam("id") Long id) {
71 SeckillActivityDO seckillActivity = seckillActivityService.getSeckillActivity(id); 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 @GetMapping("/list") 82 @GetMapping("/list")
@@ -90,7 +93,11 @@ public class SeckillActivityController { @@ -90,7 +93,11 @@ public class SeckillActivityController {
90 @PreAuthorize("@ss.hasPermission('promotion:seckill-activity:query')") 93 @PreAuthorize("@ss.hasPermission('promotion:seckill-activity:query')")
91 public CommonResult<PageResult<SeckillActivityRespVO>> getSeckillActivityPage(@Valid SeckillActivityPageReqVO pageVO) { 94 public CommonResult<PageResult<SeckillActivityRespVO>> getSeckillActivityPage(@Valid SeckillActivityPageReqVO pageVO) {
92 PageResult<SeckillActivityDO> pageResult = seckillActivityService.getSeckillActivityPage(pageVO); 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 +6,7 @@ import lombok.Data;
6 import lombok.EqualsAndHashCode; 6 import lombok.EqualsAndHashCode;
7 import lombok.ToString; 7 import lombok.ToString;
8 8
  9 +import java.time.LocalDateTime;
9 import java.util.List; 10 import java.util.List;
10 11
11 /** 12 /**
@@ -19,6 +20,12 @@ import java.util.List; @@ -19,6 +20,12 @@ import java.util.List;
19 @ToString(callSuper = true) 20 @ToString(callSuper = true)
20 public class SeckillActivityRespVO extends SeckillActivityBaseVO { 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 @Schema(description = "秒杀活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") 29 @Schema(description = "秒杀活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
23 private Long id; 30 private Long id;
24 31
@@ -28,4 +35,22 @@ public class SeckillActivityRespVO extends SeckillActivityBaseVO { @@ -28,4 +35,22 @@ public class SeckillActivityRespVO extends SeckillActivityBaseVO {
28 @Schema(description = "活动状态 开启:0 禁用:1", requiredMode = Schema.RequiredMode.REQUIRED, example = "0") 35 @Schema(description = "活动状态 开启:0 禁用:1", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
29 private Integer status; 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,11 +3,13 @@ package cn.iocoder.yudao.module.promotion.convert.seckill.seckillactivity;
3 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; 3 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
4 import cn.iocoder.yudao.framework.common.pojo.PageResult; 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; 5 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
  6 +import cn.iocoder.yudao.module.product.api.spu.dto.ProductSpuRespDTO;
6 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.activity.SeckillActivityCreateReqVO; 7 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.activity.SeckillActivityCreateReqVO;
7 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.activity.SeckillActivityDetailRespVO; 8 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.activity.SeckillActivityDetailRespVO;
8 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.activity.SeckillActivityRespVO; 9 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.activity.SeckillActivityRespVO;
9 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.activity.SeckillActivityUpdateReqVO; 10 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.activity.SeckillActivityUpdateReqVO;
10 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.product.SeckillProductBaseVO; 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 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.product.SeckillProductUpdateReqVO; 13 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.product.SeckillProductUpdateReqVO;
12 import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillactivity.SeckillActivityDO; 14 import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillactivity.SeckillActivityDO;
13 import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillactivity.SeckillProductDO; 15 import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillactivity.SeckillProductDO;
@@ -40,9 +42,27 @@ public interface SeckillActivityConvert { @@ -40,9 +42,27 @@ public interface SeckillActivityConvert {
40 42
41 PageResult<SeckillActivityRespVO> convertPage(PageResult<SeckillActivityDO> page); 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 @Mappings({ 64 @Mappings({
  65 + @Mapping(target = "id", expression = "java(null)"),
46 @Mapping(target = "activityId", source = "activityDO.id"), 66 @Mapping(target = "activityId", source = "activityDO.id"),
47 @Mapping(target = "configIds", source = "activityDO.configIds"), 67 @Mapping(target = "configIds", source = "activityDO.configIds"),
48 @Mapping(target = "spuId", source = "activityDO.spuId"), 68 @Mapping(target = "spuId", source = "activityDO.spuId"),
@@ -76,4 +96,6 @@ public interface SeckillActivityConvert { @@ -76,4 +96,6 @@ public interface SeckillActivityConvert {
76 return list; 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,6 +21,10 @@ public interface SeckillProductMapper extends BaseMapperX&lt;SeckillProductDO&gt; {
21 return selectList(SeckillProductDO::getActivityId, id); 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 default List<SeckillProductDO> selectListBySkuIds(Collection<Long> skuIds) { 28 default List<SeckillProductDO> selectListBySkuIds(Collection<Long> skuIds) {
25 return selectList(SeckillProductDO::getSkuId, skuIds); 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,4 +79,12 @@ public interface SeckillActivityService {
79 */ 79 */
80 List<SeckillProductDO> getSeckillProductListByActivityId(Long id); 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,7 +160,7 @@ public class SeckillActivityServiceImpl implements SeckillActivityService {
160 if (CollUtil.isNotEmpty(u)) { 160 if (CollUtil.isNotEmpty(u)) {
161 List<SeckillProductUpdateReqVO> vos = CollectionUtils.filterList(products, item -> u.contains(item.getSkuId())); 161 List<SeckillProductUpdateReqVO> vos = CollectionUtils.filterList(products, item -> u.contains(item.getSkuId()));
162 List<SeckillProductDO> productDOs = SeckillActivityConvert.INSTANCE.convertList1(updateObj, vos, seckillProductDOs); 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,7 +206,7 @@ public class SeckillActivityServiceImpl implements SeckillActivityService {
206 206
207 @Override 207 @Override
208 public SeckillActivityDO getSeckillActivity(Long id) { 208 public SeckillActivityDO getSeckillActivity(Long id) {
209 - return seckillActivityMapper.selectById(id); 209 + return validateSeckillActivityExists(id);
210 } 210 }
211 211
212 @Override 212 @Override
@@ -224,4 +224,9 @@ public class SeckillActivityServiceImpl implements SeckillActivityService { @@ -224,4 +224,9 @@ public class SeckillActivityServiceImpl implements SeckillActivityService {
224 return seckillProductMapper.selectListByActivityId(id); 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 package cn.iocoder.yudao.module.promotion.util; 1 package cn.iocoder.yudao.module.promotion.util;
2 2
  3 +import cn.hutool.core.collection.CollUtil;
3 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; 4 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
4 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; 5 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
5 import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils; 6 import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils;
@@ -35,7 +36,8 @@ public class PromotionUtils { @@ -35,7 +36,8 @@ public class PromotionUtils {
35 Set<Long> skuIdsSet = CollectionUtils.convertSet(products, func); 36 Set<Long> skuIdsSet = CollectionUtils.convertSet(products, func);
36 Set<Long> skuIdsSet1 = CollectionUtils.convertSet(skus, ProductSkuRespDTO::getId); 37 Set<Long> skuIdsSet1 = CollectionUtils.convertSet(skus, ProductSkuRespDTO::getId);
37 // 校验 skuId 是否存在 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 throw exception(SKU_NOT_EXISTS); 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 "time_limited_discount" varchar(2000), 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 PRIMARY KEY ("id") 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 ) COMMENT '优惠劵模板'; 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 "discount_limit_price" int, 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 PRIMARY KEY ("id") 76 PRIMARY KEY ("id")
74 ) COMMENT '优惠劵'; 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 ) COMMENT '满减送活动'; 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 ) COMMENT '限时折扣活动'; 113 ) COMMENT '限时折扣活动';
109 114
110 -- 将该建表 SQL 语句,添加到 yudao-module-promotion-biz 模块的 test/resources/sql/create_tables.sql 文件里 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 "single_limit_count" int, 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 PRIMARY KEY ("id") 140 PRIMARY KEY ("id")
135 ) COMMENT '秒杀活动'; 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 "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, 152 "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
146 - "updater" varchar DEFAULT '', 153 + "updater" varchar DEFAULT '',
147 "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 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 PRIMARY KEY ("id") 157 PRIMARY KEY ("id")
151 ) COMMENT '秒杀时段配置'; 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 \ No newline at end of file 184 \ No newline at end of file