v0.4.0的版本增加了商品属性和商品规格,虽然商品规格和sku是两个不同的概念,但是为了简单起见,在zenglMall中我们会把它们当成一个概念来处理。
页面导航:
zenglMall源代码的相关地址:https://github.com/zenglong/zenglMall 当前版本对应的tag标签为:v0.4.0
v0.4.0的版本增加了商品属性和商品规格,虽然商品规格和sku是两个不同的概念,但是为了简单起见,在zenglMall中我们会把它们当成一个概念来处理,也就是定义了一个商品规格也就定义了一个sku也就是某个商品的最小销售单元或者叫做库存量单位。例如:白色128G苹果手机就是苹果手机商品中的一个规格,该规格包含了一个白色商品属性和一个128G存储容量的商品属性。
在后台管理页面的商品管理菜单中,增加了一个商品属性的子菜单,用来管理商品属性:
后台管理商品属性
在该页面可以添加所需的商品属性,例如:颜色,尺码等,每个商品属性都可以用于不同的规格,例如衣服商品可以使用颜色的属性,手机也可以使用颜色属性等。
定义好商品属性后,就可以在添加或编辑商品时,使用商品属性来定义商品规格了:
后台设置商品规格
设置规格后,就可以在前台商品详情页面看到设置的商品规格了,还可以选择购买所需的规格:
商品详情页面选择规格
在选择了规格支付成功后,在普通用户会员中心和后台管理的订单详情页面中就可以看到购买的规格信息:
订单详情页面包含规格信息
上面的订单详情页面就包含了购买的规格名称和规格属性等。
当前版本增加了商品属性表,商品属性值表,商品规格表,商品规格属性表,可以在api/cmd/update_table.zl更新升级脚本中,看到这些新增的表结构和一些新增的字段的定义:
................................................................................................ elif(bltVersionCompare(update_version, '0.3.0') <= 0) // 创建商品属性表 Mysql.Exec(db, "CREATE TABLE goods_attr( id int NOT NULL AUTO_INCREMENT, `name` varchar(80) NOT NULL DEFAULT '' COMMENT '属性名称', `created_at` datetime NULL DEFAULT NULL COMMENT '创建时间', `updated_at` datetime NULL DEFAULT NULL COMMENT '更新时间', `delete_time` datetime NULL DEFAULT NULL COMMENT '删除时间', PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET utf8 COLLATE utf8_general_ci COMMENT='商品属性表'"); print 'create table goods_attr'; // 创建商品属性值表 Mysql.Exec(db, "CREATE TABLE goods_attr_value( id int NOT NULL AUTO_INCREMENT, `aid` int NOT NULL DEFAULT '0' COMMENT '所属的属性的ID', `name` varchar(80) NOT NULL DEFAULT '' COMMENT '属性值名称', `created_at` datetime NULL DEFAULT NULL COMMENT '创建时间', `updated_at` datetime NULL DEFAULT NULL COMMENT '更新时间', `delete_time` datetime NULL DEFAULT NULL COMMENT '删除时间', PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET utf8 COLLATE utf8_general_ci COMMENT='商品属性值表'"); print 'create table goods_attr_value'; // 创建商品规格表 Mysql.Exec(db, "CREATE TABLE goods_sku( id int NOT NULL AUTO_INCREMENT, name varchar(255) NOT NULL DEFAULT '' COMMENT '规格名称', thumbnail varchar(255) NOT NULL DEFAULT '' COMMENT '规格缩略图', price decimal(10,2) DEFAULT '0.00' COMMENT '规格价格', gid int NOT NULL DEFAULT '0' COMMENT '规格所属商品的ID', num int NOT NULL DEFAULT '0' COMMENT '规格库存', `created_at` datetime NULL DEFAULT NULL COMMENT '创建时间', `updated_at` datetime NULL DEFAULT NULL COMMENT '更新时间', `delete_time` datetime NULL DEFAULT NULL COMMENT '删除时间', PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET utf8 COLLATE utf8_general_ci COMMENT='商品规格表'"); print 'create table goods_sku'; // 创建商品规格属性表 Mysql.Exec(db, "CREATE TABLE goods_sku_attr( id int NOT NULL AUTO_INCREMENT, sku_id int NOT NULL DEFAULT '0' COMMENT '规格ID', attr_id int NOT NULL DEFAULT '0' COMMENT '属性ID', attr_value_id int NOT NULL DEFAULT '0' COMMENT '属性值ID', `created_at` datetime NULL DEFAULT NULL COMMENT '创建时间', `updated_at` datetime NULL DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET utf8 COLLATE utf8_general_ci COMMENT='商品规格属性表'"); print 'create table goods_sku_attr'; // 订单表添加规格ID Mysql.Exec(db, "ALTER TABLE orders ADD COLUMN `sku_id` int NOT NULL DEFAULT '0' COMMENT '规格ID' AFTER gid"); print 'add column sku_id to orders table'; // 订单表添加规格名称 Mysql.Exec(db, "ALTER TABLE orders ADD COLUMN `sku_name` varchar(255) NOT NULL DEFAULT '' COMMENT '规格名称' AFTER name"); print 'add column sku_name to orders table'; // 订单表添加规格属性信息 Mysql.Exec(db, "ALTER TABLE orders ADD COLUMN `sku_attr_info` varchar(2048) NOT NULL DEFAULT '' COMMENT '规格属性信息' AFTER sku_name"); print 'add column sku_attr_info to orders table'; endif ................................................................................................
如果当前是0.3.0的版本的话,直接运行上面这个脚本即可升级到0.4.0的版本。
“生活就像一盒巧克力,你永远不知道下一个是什么。”
—— 汤姆·汉克斯