秒杀系统逻辑

使用SSM框架进行开发:
1.在pom.xml中进行一下配置:
1)junit4,测试
2)slf4j+logback
3)数据库相关依赖:数据库驱动+c3p0数据库连接池
4)myBatis依赖:
5)spring-mabatis整合依赖
6)servlet-web相关依赖:jstl+json+servlet+taglib
7)spring依赖:core+springBean+spring-context+spring-jdbc+spring-web+spring-webmvc+spring-test


dao层:(数据访问层)
1.创建dao接口:业务接口:减少库存,插入秒杀成功明细表
2.dao接口的实现:通过mybatis的mapper进行实现,并存放进spring容器中
3.配置mybatis:列别名+数据库自增值+驼峰命名法
4.配置spring-dao.xml:实现spring与mybatis的整合---获取数据库连接池,(同时给出数据库接口,用户名和密码),mapper.xml,entity来配置mybatis的sqlSessionFactory,并将其注入到spring容器当中,通过spring包扫描(在@autowired会用到),进而动态实现dao接口


service层:(业务层)
1.创建service接口:查询seckill列表所有字段,根据id查询seckill字段,获取秒杀接口URL,执行秒杀操作
2.实现service接口:
获取秒杀接口URL:创建秒杀接口URLdto:属性有:seckillID,exposer,md5,now,start和end
判定1)是否是表中商品;2)是否属于秒杀时间:给出秒杀地址
执行秒杀操作:创建执行秒杀dto:属性值有:seckillID,state,stateInfo,successKill对象
使用事务管理:判定1)md5是否被篡改;2)是否购买行为成功;3)减库存;
3.配置spring-service.xml:
1)扫描service包中所有注解类型
2)配置事务管理器,注入数据库连接池
3)配置基于注解的声明式事务,使用注解管理事务


controller层:(控制层)
1.配置web.xml:配置DispatcherServlet+springMVC配置加载的文件(spring-*.xml)
2.配置spring-web.xml:开启spring注解模式+静态资源默认servlet配置+配置jsp视图解析器+扫描web相关的controller
3.创建controller类:方法包括:
获取列表页;
获取详情页;
根据请求来封装json数据(创建执行结果dto;属性有:success,json的数据,error错误信息):
1)封装exposer方法
2)封装seckillExecution方法
3)封装系统时间

开发前端页面(bootstrap):引入jstl中c,format标签
1)list页面:各类商品的库存情况列表
2)detail页面:各类商品的秒杀情况:通过CDN获取jq的cookie和countdown插件
3)通过js写交互逻辑:(模块化)
1.实现详情页秒杀逻辑(在init方法中实现):
1)通过cookie获取用户手机
2)通过json获取开始时间,结束时间,seckillID
3)验证手机号:未输入手机号-----显示弹出层,提交后用cookie存储手机号,刷新页面(再执行init方法)
手机号不存在---显示手机号错误的信息
4)成功登陆后:①计时交互:通过后端请求拿到当前系统时间;将start,end,now作为参数传进countdown方法作时间判断,now>end-->秒杀结束;now
秒杀未开始,计时事件绑定(countdown),并在计时结束后,获取秒杀地址,控制现实逻辑,执行秒杀[handleSeckill(exposer)],即出现按钮;now>start&&now ②执行秒杀:获取exposer,判断是否开启秒杀,是:给出秒杀地址,并且绑定一次点击事件以执行秒杀请求(1.禁用按钮;2.发送秒杀请求),根据实际情况判断秒杀成功与秒杀异常(重复秒杀,秒杀结束,系统异常等);否:获取now,start,end,再次执行countdown操作



你可能感兴趣的:(秒杀系统逻辑)