前言
SKU百度百科为 库存保有单位 (Stock keeping Unit 或者SKU)是对每一个产品和服务的唯一标示符。 也就是说sku 为商品对应的很多种类规格情况下的 库存,价格 各有不同。需要通过sku 这样一种组合结构存储这些计量值。
在移动电商时代,网购已然成为潮流。更是全民参与。每一年都有购物节 : 京东618 , 淘宝天猫双11, 双12 。 一个淘宝店家月销售额30万背后 ,他的商品sku有上千种。 一个卖橱柜的,小到抽屉,拉篮,五金 ,把手,螺丝钉 都可以细分成很小的SKU。移动电商商品背后的SKU种类的复杂性。可正是因为商品SKU的多样化,才能商家带来巨量的销售额。
从详情页认识SKU
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21这个商品包含的SKU信息:{
规格类型:[{
尺寸:[XS, S, M, L,XL, XXL]
},{
颜色: [白色,珊瑚粉,草木绿]
}],
规格明细组合描述: {
XS-白色:{
图片: 图片url,
价格: ¥328,
库存: 188件,
扩展..字段: 值
},
其他规格组合:{
图片: 图片url,
价格: 价格..,
库存: 库存数量..,
扩展..字段: 值
}
}
}
SKU功能操作流程图
说明
新增商品SKU
1) 从规格容器中选择需要的规格。已选择的规格类型也可移除。
2) 在已选规格类型下 可新增规格属性。已新增的规格属性可选中或取消。
3) 规格属性的选择或取消 触发自有组合排列。生成规格明细的表单。
4) 填写规格明细
- 单项填写: 挨个填写,过滤条件填写。
- 批量填写。
5) 提交sku明细项数据。
修改商品SKU
1) 加载已选择的规格类型属性;
注意:根据业务控制已选规格类型 是否可新增 ,是否可删除的条件,因为直接涉及到规格明细的排列组合结构。 当商品库的某商品已经在店铺上线了,如果再新增规格类型的话,排列组合将改变,之前设置的价格和库存都会跟着改变。所以不可以再新增或删减规格类型。
2) 自由排列组合 ,把各项值 赋值到规格明细表中。
3) 修改数据后,重新提交SKU 的明细表单。
修改SKU的场景
1) 以衣服为例:白色 + M 卖完的时候,在规格sku 修改的时候,可以把已选的颜色为白色去掉。
2) 以手机 为例:由于热销,厂家又上了 升级版本玫瑰金色。可新增一个玫瑰金色再设置相应的价格。
1、技术讲解
1.1 服务器下发的Json数据结构
1 | //注释: 服务器返回的商品规格类型属性。用于页面头部显示已选的规格类型,和其属性。 |
1 |
|
1 |
|
说明:
先根据已选的 规格大类型propertyCatId 值排序。 这样做的原因是:无论 A+B+C ,B+A+C 或 C+A+B 都是表示同一种SKU组合。以 “11:167918-101:123253-102:123259” 为列,根据规格大类型id值排序。 最终都以 A:aa+B:bb+C:cc 组合提交给服务器, 以此来维护该组合对应的价格和库存;
2、页面组成
- 2.1 页面全局变量
- 2.2 构建一个树结构
- 2.3 根据已选的规格类型 自由排列组合 出明细列表各项组合数据
- 2.4 自由排列组合 ,把各项值 赋值到规格明细表中
- 2.5 properties的自由组合id值拼接
- 2.6 列表的UI显示: tableView相关委托
- 2.7 修改规格明细 的表单值
- 2.8 提交的表单条件判断
文章代码片段较多,但也都是技术核心部分。里面逻辑性较强,需要慢慢理解透彻。
详细见sku业务代码片段
3、业务:店铺商品和产品库关系图
说明
产品库:只负责管理产品的价格:无论拼团价 还 是秒杀价,活动价 或普通价 都可统一在库中管理该规格明细信息。 这样做的目的是提供商品信息的复用。当在店铺上架一个商品时,不用每次都去创建一个全新的商品,可通过产品库进行选择添加。
从商户角色进行区分:
- 个人开淘宝店模式:店铺需单独管理商品的库存, 运费的设置 是否包邮等信息。
- 厂家和连锁店模式:连锁店去库存只负责代销,无需管理库存和发货。当用户下单,统一指向厂家来发货。 厂家统计设置产品信息 , 价格, 库存。
- 联盟的概念: 联盟设置好了商品。已加入联盟的商家可直接代销联盟总店的商品进行售卖,取得分佣。类似多多进宝,可售卖平台已存在的可分成的商品。
4、 技术总结
- 所有的重点在于建立树层级结构,根据已选的规格大类型循环其已选择的规格属性数组。通过ConditionFilter实体的属性statusItem 可以取到子节点ConditionFilter 的数组。
- 从最后一个层级一次往上一层级的节点赋值子节点数组statusItem。为防止对数据来源的污染,一定要使用深拷贝。深拷贝model 要实现NSCopying,NSMutableCopying 相关协议方法。
- 从向服务器提交每一项规格明细的组合项来看,我们对ConditionFilter 的属性parent 进行遍历,依次取得上一节点的相关属性,直到最上一级节点的parent 属性为null 的时候便停止拼接。properties的拼接就完成了。
- 在表单填写的时候,采取对存储的模型skuModel属性作更改。而每一项skuModel 所存储的map 字典的key 是由排列组合得到的UI显示的拼接字符窜。如商品手机: 64G+黑色+标准版。 方便在cell显示的时候直接读取。
- UI交互上提供批量和条件过滤快速筛选 进行填写每一项明细的表单值。有利于商户高效填写设置sku 组合。