博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
后台管理系统之商品规格管理
阅读量:2389 次
发布时间:2019-05-10

本文共 5105 字,大约阅读时间需要 17 分钟。

SKU的特有属性是商品规格参数的一部分

1.商品规格数据结构

SPU和SKU

SPU:Standard Product Unit (标准产品单位) ,一组具有共同属性的商品集

SKU:Stock Keeping Unit(库存量单位),SPU商品集因具体特性不同而细分的每个商品

在这里插入图片描述

  • 本页的 华为Mate10 就是一个商品集(SPU)
  • 因为颜色、内存等不同,而细分出不同的Mate10,如亮黑色128G版。(SKU)

可以看出:

  • SPU是一个抽象的商品集概念,为了方便后台的管理。
  • SKU才是具体要销售的商品,每一个SKU的价格、库存可能会不一样,用户购买的是SKU而不是SPU
    SKU的特有属性是商品规格参数的一部分
    在这里插入图片描述
    在这里插入图片描述

规格组

规格参数分组表:tb_spec_group

CREATE TABLE `tb_spec_group` (  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',  `cid` bigint(20) NOT NULL COMMENT '商品分类id,一个分类下有多个规格组',  `name` varchar(50) NOT NULL COMMENT '规格组的名称',  PRIMARY KEY (`id`),  KEY `key_category` (`cid`)) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8 COMMENT='规格参数的分组表,每个商品分类下有多个规格参数组';

规格参数

规格参数表:tb_spec_param

CREATE TABLE `tb_spec_param` (  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',  `cid` bigint(20) NOT NULL COMMENT '商品分类id',  `group_id` bigint(20) NOT NULL,  `name` varchar(255) NOT NULL COMMENT '参数名',  `numeric` tinyint(1) NOT NULL COMMENT '是否是数字类型参数,true或false',  `unit` varchar(255) DEFAULT '' COMMENT '数字类型参数的单位,非数字类型可以为空',  `generic` tinyint(1) NOT NULL COMMENT '是否是sku通用属性,true或false',  `searching` tinyint(1) NOT NULL COMMENT '是否用于搜索过滤,true或false',  `segments` varchar(1000) DEFAULT '' COMMENT '数值类型参数,如果需要搜索,则添加分段间隔值,如CPU频率间隔:0.5-1.0',  PRIMARY KEY (`id`),  KEY `key_group` (`group_id`),  KEY `key_category` (`cid`)) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8 COMMENT='规格参数组下的参数名';

通用属性

用一个布尔类型字段来标记是否为通用:

  • generic来标记是否为通用属性:
    • true:代表通用属性
    • false:代表sku特有属性

搜索过滤

与搜索相关的有两个字段:

  • searching:标记是否用作过滤
    • true:用于过滤搜索
    • false:不用于过滤
  • segments:某些数值类型的参数,在搜索时需要按区间划分,这里提前确定好划分区间

数值类型

某些规格参数可能为数值类型,这样的数据才需要划分区间,我们有两个字段来描述:

  • numberic:是否为数值类型
    • true:数值类型
    • false:不是数值类型
  • unit:参数的单位

商品规格参数管理

规格组的查询

实体类

leyou-item-interface中添加实体类:

在这里插入图片描述
leyou-item-service中编写业务:

在这里插入图片描述

controller

先分析下需要的东西,在页面的ajax请求中可以看出:

  • 请求方式:get

  • 请求路径:/spec/groups/{cid} ,这里通过路径占位符传递商品分类的id

  • 请求参数:商品分类id

  • 返回结果:页面是直接把resp.data赋值给了groups:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CxvLY8jm-1586586492503)(assets/1528429342796.png)]

    那么我们返回的应该是规格组SpecGroup的集合

    我们访问:http://api.leyou.com/api/item/spec/groups/76
    在这里插入图片描述

规格参数查询

在这里插入图片描述

3.SPU和SKU数据结构

3.1.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`)) ENGINE=InnoDB AUTO_INCREMENT=208 DEFAULT CHARSET=utf8 COMMENT='spu表,该表描述的是一个抽象的商品,比如 iphone8';

与我们前面分析的基本类似,但是似乎少了一些字段,比如商品描述。

我们做了表的垂直拆分,将SPU的详情放到了另一张表:tb_spu_detail

这张表中的数据都比较大,为了不影响主表的查询效率我们拆分出这张表。

CREATE TABLE `tb_spu_detail` (  `spu_id` bigint(20) NOT NULL,  `description` text COMMENT '商品描述信息',  `generic_spec` varchar(10000) NOT NULL DEFAULT '' COMMENT '通用规格参数数据',  `special_spec` varchar(1000) NOT NULL COMMENT '特有规格参数及可选值信息,json格式',  `packing_list` varchar(3000) DEFAULT '' COMMENT '包装清单',  `after_service` varchar(3000) DEFAULT '' COMMENT '售后服务',  PRIMARY KEY (`spu_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

需要注意的是这两个字段:generic_spec和special_spec。

前面讲过规格参数与商品分类绑定,一个分类下的所有SPU具有类似的规格参数。SPU下的SKU可能会有不同的规格参数信息,因此我们计划是这样:

  • SPUDetail中保存通用的规格参数信息。
  • SKU中保存特有规格参数。

3.2.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格式',  `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) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='sku表,该表表示具体的商品实体,如黑色的64GB的iphone 8';

特别需要注意的是sku表中的indexes字段和own_spec字段。sku中应该保存特有规格参数的值,就在这两个字段中。

还有一张表,tb_stock代表库存:

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`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='库存表,代表库存,秒杀库存等信息';

3.3.导入图片信息

现在商品表中虽然有数据,但是所有的图片信息都是无法访问的,我们需要把图片导入到虚拟机:

首先,把提供的数据上传到虚拟机下:/leyou/static目录:在leyou下创建static目录

然后,使用命令解压缩:

unzip images.zip

修改Nginx配置,使nginx反向代理这些图片地址:

vim /opt/nginx/config/nginx.conf

修改成如下配置:

server {    listen       80;    server_name  image.leyou.com;    # 监听域名中带有group的,交给FastDFS模块处理    location ~/group([0-9])/ {        ngx_fastdfs_module;    }    # 将其它图片代理指向本地的/leyou/static目录    location / {        root   /leyou/static/;    }    error_page   500 502 503 504  /50x.html;    location = /50x.html {        root   html;    }}

不要忘记重新加载nginx配置

nginx -s reload

转载地址:http://fxxab.baihongyu.com/

你可能感兴趣的文章
安装pydev到eclipse
查看>>
[WAF]apache和modsecurity的安装
查看>>
写给换工作和找工作的同学
查看>>
Island Hopping the SpiderLabs Way
查看>>
Top Ten Web Protection Techniques of 2011
查看>>
Faster Blind MySQL Injection Using Bit Shifting
查看>>
Safely Dumping Hashes from Live Domain Controllers
查看>>
PHP CGI Argument Injection
查看>>
sgx模拟器
查看>>
SGX相关资源
查看>>
nessus 购买地址
查看>>
Google Security Architecture
查看>>
web server信息收集(附带plesk xday)
查看>>
JBoss AS Administrative Console Password Disclosure
查看>>
Securely Developing on Mobile
查看>>
ModSecurity Updates: Nginx Stable Release and Google Summer of Code Participation
查看>>
Ubuntu 12.04 Precise LTS: Install ModSecurity for Apache 2 web server
查看>>
Java Web 三层架构详解
查看>>
iphone for PPT遥控器 MyPoint PowerPoint Remote
查看>>
ZPanel 10.0.0.2 Remote Command Execution
查看>>