Commit b78f814552f31868c580d70e26fbf73ec9ac50e4
1 parent
78b3d2a2
fix:mall promotion SeckillActivity
Showing
9 changed files
with
260 additions
and
146 deletions
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<SeckillProductDO> { |
| 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 | ... | ... |