秒杀活动管理

86 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第25天,点击查看活动详情

每日英语:

All we need to survive is one person who truly loves us.

翻译:只要有一个爱我们的人,我们就能够生存下来了。 ——《迷失》

活动管理

活动管理包括每日秒杀和节假日秒杀,但无论是什么活动,基本都是一件商品不会重复参与秒杀活动,我们先对秒杀的活动做一个分析。

秒杀活动分析

1609742088286.png

秒杀活动有很多种,并非只有大家平时看到的双十一,其实每天都有秒杀活动,但我们设计秒杀活动表结构应该满足不同类型的秒杀活动,我们再来看下秒杀活动表结构:

CREATE TABLE `seckill_activity` (
  `id` varchar(60) NOT NULL,
  `activity_name` varchar(60) NOT NULL COMMENT '活动名字',
  `type` int(1) NOT NULL COMMENT '活动分类  0 shop秒杀、1 每日特价、2 大牌闪购  、 3 品类秒杀 、 4 节日活动',
  `start_time` datetime NOT NULL COMMENT '开始时间',
  `end_time` datetime NOT NULL COMMENT '结束时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

活动时间: 秒杀有活动开始时间和结束时间,这两个时间可以灵活设计,可以设计到商品里面,也可以设计到活动里面,我们这里选择设计到活动里面,更符合显示需求,但也有特定的业务需求需要设计到商品里面。

每日秒杀: 如果是上图的每日秒杀,start_timeend_time就是时间间隔,而type则是活动类型,活动类型并非是商品分类,而是活动分类,分类的值为0,1,2,3均为每日秒杀。

节假日秒杀: 如果type=4则表示节假日秒杀活动,例如双十一等,节假日秒杀活动并非。

我们这里做shop秒杀功能,因此首先需要根据活动表查询出活动时间,再每次点击一个活动时间加载对应的商品列表即可。

活动列表

活动列表查询我们需要分析一下如何查询,需要满足如下几个条件:

1:活动未结束、已开始的要查询
2:活动只查询5个出来
3:每个活动下显示对应活动的商品列表

SQL语句:

SELECT * FROM seckill_activity WHERE end_time>NOW() ORDER BY start_time ASC LIMIT 5

活动列表查询

1)Dao

修改com.xz.mall.seckill.mapper.SeckillActivityMapper添加查询方法,代码如下:

/**
 * 有效活动查询
 * @return
 */
@Select("SELECT * FROM seckill_activity WHERE end_time>NOW() ORDER BY start_time ASC LIMIT 5")
List<SeckillActivity> validActivity();

2)Service

接口:修改com.xz.mall.seckill.service.SeckillActivityService添加活动查询方法

//有效活动时间查询
List<SeckillActivity> validActivity();

实现类:修改com.xz.mall.seckill.service.impl.SeckillActivityServiceImpl添加实现方法

/****
 * 有效活动时间查询
 * @return
 */
@Override
public List<SeckillActivity> validActivity() {
    return seckillActivityMapper.validActivity();
}

3)Controller

修改com.xz.mall.seckill.controller.SeckillActivityController添加调用方法

/***
 * 未过期的活动列表
 */
@GetMapping
public RespResult<List<SeckillActivity>> list(){
    //有效的活动时间查询
    List<SeckillActivity> list = seckillActivityService.validActivity();
    return RespResult.ok(list);
}

有效活动列表测试

访问:http://localhost:8092/activity

总结

本篇主要介绍了一下秒杀活动分析和秒杀活动列表查询的代码实现。