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