实现秒杀功能

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jcsyl_mshot/article/details/81047896

1.数据库设计

商品表
订单表(只包含用户id,商品id,订单详细表id)
订单详细表
秒杀商品表(活动太多,商品表将很难维护,单独秒杀商品表)

2.前端实现

2.1页面设计

商品列表页
商品详情页
订单详情页

2.2 前端搭建

1.编写Dao 层

goodsDao:实现在数据库中商品列表查询,商品的查询,商品库存减少函数

OrderDao:实现秒杀订单的查询,秒杀订单的插入

2.编写Service层

GoodService:实现获取商品的列表信息,商品详细信息

OrderService:实现秒杀订单的查询,秒杀订单的创建
MiaoshaService:事务操作,库存减少,下订单,写入秒杀订单

3.编写Controller 层

实现不同业务逻辑对应下的商品列表,详情获取,商品秒杀

2.3 业务逻辑

商品列表页:首先获得用户信息,如果用户信息为空代表尚未登陆。点击具体商品,传入商品ID,进入商品详情页

商品详情页时候:获取商品信息和秒杀商品信息(秒杀开始时间,结束时间,秒杀价格)并且添加秒杀的状态【尚未开始,秒杀中,秒杀结束】到该页面,隐藏域中添加商品Id(如可秒杀开始,通过商品ID传入服务端进行秒杀)

注意:秒杀未开始或则结束无法进行秒杀按钮操作
同时,秒杀未开始,应该显示还剩下多少秒,由客户端实现功能,避免造成服务器端压力,可能会出现客户端和服务端时间不一致情况。【通过脚本编写回调函数实现秒数减少和显示,动态的进行秒杀状态的切换 故无论是否秒杀处于何种状态,都应该获取秒杀剩余时间(不应该仅仅是秒杀未开始时候才去获取),所以用隐藏域保存】

秒杀过程:判断用户是否登录,判断商品库存量是否够,判断用户是否以及下过单,满足条件后事务方式新建秒杀订单【秒杀订单详情(包含用户信息,被秒杀商品信息,订单状态(是否支付等),创建时间)和秒杀订单(用户id,商品id,秒杀订单详情id)】,不满足条件返回错误页面,显示错误codeMsg 信息。

订单详情页实现:创建订单后应该跳转订单详情页,获取商品信息,订单状态等信息。
如果未支付,可以进行点击支付。

猜你喜欢

转载自blog.csdn.net/jcsyl_mshot/article/details/81047896
今日推荐