一、创建表单
1、创建表
准备商品表、订单表、秒杀商品表、秒杀订单表。
(设计较为简单,重点在秒杀,不在设计表。)
商品表:
create table `t_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;
订单表:
CREATE TABLE `t_order` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '订单ID',
`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(20) DEFAULT '0' COMMENT '商品数量',
`goods_price` DECIMAL(10,2) DEFAULT '0.00' COMMENT '商品价格',
`order_channel` TINYINT(4) DEFAULT '0' COMMENT '1 pc,2 android, 3 ios',
`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;
秒杀商品表:
CREATE TABLE `t_seckill_goods`(
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '秒杀商品ID',
`goods_id` BIGINT(20) NOT NULL COMMENT '商品ID',
`seckill_price` DECIMAL(10,2) NOT NULL COMMENT '秒杀家',
`stock_count` INT(10) NOT NULL COMMENT '库存数量',
`start_date` datetime NOT NULL COMMENT '秒杀开始时间',
`end_date` datetime NOT NULL COMMENT '秒杀结束时间',
PRIMARY KEY(`id`)
)ENGINE = INNODB AUTO_INCREMENT=3 DEFAULT CHARSET = utf8mb4;
秒杀订单表:
CREATE TABLE `t_seckill_order` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '秒杀订单ID',
`user_id` BIGINT(20) NOT NULL COMMENT '用户ID',
`order_id` BIGINT(20) NOT NULL COMMENT '订单ID',
`goods_id` BIGINT(20) NOT NULL COMMENT '商品ID',
PRIMARY KEY(`id`)
)ENGINE = INNODB AUTO_INCREMENT=3 DEFAULT CHARSET = utf8mb4;
2、插入数据
插入数据,主要插入商品表和秒杀商品表就行,订单表是在购买时自动生成的。
/* 插入数据 */
insert into `t_goods` values(1, 'IPHONE 12', 'IPHONE 12 64GB', '/img/iphone12.png', 'IPHONE 12 64GB','6299.00', 100),
(2, 'IPHONE 12 PRO', 'IPHONE 12 PRO 128GB', '/img/iphone12pro.png', 'IPHONE 12 PRO 128GB','9299.00', 100);
insert into `t_seckill_goods` values(1, 1, '629.00', 10, '2020-11-01 08:00:00', '2020-11-01 09:00:00'),
(2, 2, '929.00', 10, '2020-11-01 08:00:00', '2020-11-01 09:00:00');
3、逆向工程生成pojo
运行代码生成器
输入要转化的表名:
对应的pojo、controller、service、mapper转化完成,并将生成的代码复制到主工程下。
二、实现商品列表页
1、准备VO对象
因为商品的信息可能存在于两个表或者多个表中,比如秒杀商品的库存信息和秒杀商品的详细信息在两个表中。vo对象就是可以把商品信息全部一次性展示出来的对象。
2、后端服务实现
- 商品页面跳转实现
- 获取商品列表–接口方法
- 获取商品列表–具体实现
- 数据库Mapper接口
- mapper.xml配置sql
3、测试
三、实现商品详情页
1、后端服务实现
-
商品页面详情跳转
-
获取商品详情信息–接口方法
-
获取商品详情信息–具体实现
-
数据库Mapper接口
-
Mapper.xml 配置 sql语句