商品管理SPU

本文详细介绍了电商系统中SPU、SKU和库存表的设计,包括SPU表、SPU详情表、规格参数表、SKU表和库存表的字段及作用。商品管理涉及到商品的分类、品牌、上架状态等信息,以及前端查询和ID回显功能。在商品新增时,需要同时处理SPU、SKU和库存的新增操作。
摘要由CSDN通过智能技术生成

管理内容

具体的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新增即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万码无虫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值