Bootstrap

Java秒杀项目需求汇总

1.环境搭建&&数据表设计
  • SpringBoot+Mybatis+Druid+Thymeleaf

  • Jedis+通用缓存Key封装

  • Result结果集封装

    通用缓存Key封装: 采用接口+抽象类+实现类的模板模式。这样做能偶避免键重复,导致值被覆盖。

//1.商品表
CREATE TABLE `goods`(
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT "商品ID",
  `goods_name` VARCHAR(16) DEFAULT NULL COMMENT "商品名称",
  `goods_title` VARCHAR(64) DEFAULT NULL COMMENT "商品标题",
  `goods_img` VARCHAR(64) DEFAULT NULL COMMENT "商品图片",
  `goods_detail` LONGTEXT COMMENT "商品的详情介绍",
  `goods_price` DECIMAL(10,2) DEFAULT 0.00 COMMENT "商品单价",
  `goods_stock` INT(11) DEFAULT 0 COMMENT "商品库存,-1表示没有限制",
  PRIMARY KEY(`id`)
)ENGINE=INNODB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;


INSERT INTO `goods` VALUES(1,"iphoneX","银色64GB移动联通电信","/img/iphonex.png","移动联通电信",10000.1,500);

//2.秒杀商品表
CREATE TABLE `miaosha_goods`(
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT "秒杀商品ID",
  `goods_id` BIGINT(20) DEFAULT NULL COMMENT "商品ID",
  `miaosha_price` DECIMAL(10,2) DEFAULT 0.00 COMMENT "秒杀价",
 `stock_count` INT(11) DEFAULT NULL COMMENT "库存数量",
 `start_date` DATETIME DEFAULT NULL COMMENT "秒杀开始时间",
 `end_date` DATETIME DEFAULT NULL COMMENT "秒杀结束时间",
 PRIMARY KEY(`id`)
 )ENGINE=INNODB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;
 
insert into `miaosha_goods` values(1,1,0.01,4,"2017-11-05 15:18:00","2017-11-09 15:18:00"),
(2,2,0.03,6,"2017-11-05 15:18:00","2017-11-09 15:18:00");

//3.订单表
CREATE TABLE `order_info`(
 `id` BIGINT(20) NOT NULL AUTO_INCREMENT,
 `user_id` BIGINT(20) DEFAULT NULL COMMENT "用户ID",
 `goods_id` BIGINT(20) DEFAULT NULL COMMENT "商品ID",
 `delivery_addr_id` BIGINT(20) DEFAULT NULL COMMENT "收货地址ID",
 `goods_name` VARCHAR(16) DEFAULT NULL COMMENT "冗余过来的商品名称",
  `goods_count` INT(11) DEFAULT 0 COMMENT "商品数量",
 `goods_price` DECIMAL(10,2) DEFAULT 0.00  COMMENT "商品单价",
 `order_channel` TINYINT(4) DEFAULT 0 COMMENT "1pc,2android,3ios",
 `status` TINYINT(4) DEFAULT 0 COMMENT "订单状态,0新建未支付,1已经支付,2已发货,3已收货,4已经退款,5已经完成",
 `create_date` DATETIME DEFAULT NULL COMMENT "订单创建时间",
 `pay_date` DATETIME DEFAULT NULL COMMENT "支付时间",
 PRIMARY KEY(`id`)
)ENGINE=INNODB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4;

//4.秒杀订单表
CREATE TABLE `miaosha_order`(
 `id` BIGINT(20) NOT NULL AUTO_INCREMENT,
 `user_id` BIGINT(20) DEFAULT NULL COMMENT "用户ID",
 `order_id` BIGINT(20) DEFAULT NULL COMMENT "订单ID",
 `goods_id` BIGINT(20) DEFAULT NULL COMMENT "商品ID",
 PRIMARY KEY(`id`)
)ENGINE=INNODB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;

//5.miaosha_user表
CREATE TABLE `miaosha_user` (
  `id` bigint(20) NOT NULL COMMENT '用户ID,手机号码',
  `nickname` varchar(255) NOT NULL,
  `password` varchar(32) DEFAULT NULL COMMENT 'MD5(MD5(pass明文+固定salt),salt)',
  `salt` varchar(10) DEFAULT NULL,
  `head` varchar(128) DEFAULT NULL 
;