4、商品规格实现
2017-10-14 本文已影响0人
海豚的小小海
一、商品描述的保存
数据库中商品信息和商品描述是分开存储的,因为商品描述是大文本,当我们展示商品列表时,只需要商品信息不需要商品描述,分开存储节省性能。
二、商品规格
参考京东商城
方案一:使用多个表来存储
1、每一类商品有多个分组
2、每个分组下有多个项
3、每个商品对应不同的规格参数
规格数据的实现
二维表.png
方案一存在的问题:
1、需要创建多张表来描述规格参数之间的关系。
2、查询时需要复杂的sql语句查询。
3、规格参数数据量是商品信息的几十倍,数据十分庞大。查询时效率很低。
4、如果要求新添加的商品规格项发生改变,之前的商品不变,是不能实现的。
方案二:使用模板的思路实现
1、每一个商品分类对应一个规格参数模板。
[
{
"group": "主体", //组名称
"params": [ // 记录规格成员
"品牌",
"型号",
"颜色",
"上市年份",
"上市月份"
]
},
{
"group": "网络", //组名称
"params": [ // 记录规格成员
"4G",
"3G,
"2G"
]
}
]
2、使用模板
每个商品对应唯一的规格参数。在添加商品时,可以根据规格参数的模板生成一个表单,保存规格参数时,还可以生成规格参数的json数据。保存到数据库
[
{
"group": "主体",
"params": [
{
"k": "品牌",
"v": "苹果(Apple)"
},
{
"k": "型号",
"v": "iPhone 6 A1589"
},
{
"k": "智能机",
"v": "是 "
}
]
}
]
优点:
1、不需要做多表管理。
2、如果要求新添加的商品规格项发生改变,之前的商品不变是很简单的。
缺点:
复杂的表单和json之间的转换。对js的编写要求很高。
三、创建规格参数模板
实现流程
流程实现.png
1、选择商品分类,提交规格参数模板
选择商品分类后根据选择的商品分类到tb_item_param规格参数模板表中取规格模板,取到了说明此商品分类的规格模板已经添加提示不能添加。
如果没有取得正常添加。
2、根据规格参数模板生成表单
在商品添加功能中,读取此商品对应的规格模板,生成表单,供使用者添加规格参数
3、保存商品的规格参数
提交表单之前,先把规格参数表单中的内容转换成json数据然后跟商品基本信息、商品描述同时提交给后台。保存至数据库。
json格式转换.png转换后把规格参数的信息放到表单的hidden域中:
提交数据.png随着表单的提交同时提交。
4、展示规格参数
当现实商品详情页面时,需要把商品的规格参数根据商品id取出来,生成html展示到页面。