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,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<SeckillProductDO> { | @@ -21,6 +21,10 @@ public interface SeckillProductMapper extends BaseMapperX<SeckillProductDO> { | ||
| 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 |