管理内容
具体的SKU和SPU的查询
SPU表
CREATE TABLE `tb_spu` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'spu id',
`title` varchar(255) NOT NULL DEFAULT '' COMMENT '标题',
`sub_title` varchar(255) DEFAULT '' COMMENT '子标题',
`cid1` bigint(20) NOT NULL COMMENT '1级类目id',
`cid2` bigint(20) NOT NULL COMMENT '2级类目id',
`cid3` bigint(20) NOT NULL COMMENT '3级类目id',
`brand_id` bigint(20) NOT NULL COMMENT '商品所属品牌id',
`saleable` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否上架,0下架,1上架',
`valid` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否有效,0已删除,1有效',
`create_time` datetime DEFAULT NULL COMMENT '添加时间',
`last_update_time` datetime DEFAULT NULL COMMENT '最后修改时间',
PRIMARY KEY (`id`)
)
SPU表详情
为了更加清晰,把详情从SPU表中拆分了出来。
CREATE TABLE `tb_spu_detail` (
`spu_id` bigint(20) NOT NULL,
`description` text COMMENT '商品描述信息',
`specifications` varchar(3000) NOT NULL DEFAULT '' COMMENT '全部规格参数数据',
`spec_template` varchar(1000) NOT NULL COMMENT '特有规格参数及可选值信息,json格式',
`packing_list` varchar(1000) DEFAULT '' COMMENT '包装清单',
`after_service` varchar(1000) DEFAULT '' COMMENT '售后服务',
PRIMARY KEY (`spu_id`)
)
specifications
- specifications中包含全局属性与特有属性。
- SPU中的specifications与规格参数表中的模板相比,最大的区别就是,这里会指定全局属性具体的值。
- 特有属性会跟在规格参数表中一样保留options选项的下拉列表。
spec_template
- spec_template包含了规格参数中的特有属性,但只有key和待选项。这么做是因为我们经常会查询特有规格属性,每次查询再分离比较麻烦。
-
SKU表
CREATE TABLE `tb_sku` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'sku id',
`spu_id` bigint(20) NOT NULL COMMENT 'spu id',
`title` varchar(255) NOT NULL COMMENT '商品标题',
`images` varchar(1000) DEFAULT '' COMMENT '商品的图片,多个图片以‘,’分割',
`price` bigint(15) NOT NULL DEFAULT '0' COMMENT '销售价格,单位为分',
`indexes` varchar(100) COMMENT '特有规格属性在spu属性模板中的对应下标组合',
`own_spec` varchar(1000) COMMENT 'sku的特有规格参数,json格式,反序列化时应使用linkedHashMap,保证有序',
`enable` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否有效,0无效,1有效',
`create_time` datetime NOT NULL COMMENT '添加时间',
`last_update_time` datetime NOT NULL COMMENT '最后修改时间',
PRIMARY KEY (`id`),
KEY `key_spu_id` (`spu_id`) USING BTREE
)
indexes
这里保存的是SPU中属性的排列组合,对应options数组的下标的拼接。
- 红米4X,香槟金,2GB内存,16GB存储
这样做,用户点击了之后,可以快速定位到sku.
own_spec
SPU中保存特有属性的可选项,own_spec中保存具体的键值对。
库存表
CREATE TABLE `tb_stock` (
`sku_id` bigint(20) NOT NULL COMMENT '库存对应的商品sku id',
`seckill_stock` int(9) DEFAULT '0' COMMENT '可秒杀库存',
`seckill_total` int(9) DEFAULT '0' COMMENT '秒杀总数量',
`stock` int(9) NOT NULL COMMENT '库存数量',
PRIMARY KEY (`sku_id`)
)
单独建立一张库存表,是因为操作比较频繁,而且比较关键。
前端查询
请求参数:
page:当前页
rows:每页大小
sortBy:排序字段
desc:是否降序
key:过滤条件
saleable:上架或下架
返回结果:商品SPU的分页信息。
这里使用通用Mapper查询即可。通用Mapper详情
这里利用PageHelper来分页。PageHelper详情
ID回显
商品的分类和商品的品牌在SPU中都是以id的形式存在的。
在这里需要新建一个类,继承SPU,并且在原有基础上进行属性拓展cname和bname,即具体的商品分类名称和品牌名称。
public class SpuBo extends Spu {
String cname;// 商品分类名称
String bname;// 品牌名称
// 略 。。
}
使用通用Mapper,根据ID查询即可。
商品新增
saveGoods,除了对Spu新增以外,还要新增SpuDetail,Sku,Stock。
使用通用mapper新增即可。