持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第25天,点击查看活动详情
每日英语:
All we need to survive is one person who truly loves us.
翻译:只要有一个爱我们的人,我们就能够生存下来了。 ——《迷失》
活动管理
活动管理包括每日秒杀和节假日秒杀,但无论是什么活动,基本都是一件商品不会重复参与秒杀活动,我们先对秒杀的活动做一个分析。
秒杀活动分析
秒杀活动有很多种,并非只有大家平时看到的双十一,其实每天都有秒杀活动,但我们设计秒杀活动表结构应该满足不同类型的秒杀活动,我们再来看下秒杀活动表结构:
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_time和end_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。
总结
本篇主要介绍了一下秒杀活动分析和秒杀活动列表查询的代码实现。