基于销售属性生成SKU
电商系统中商品系统最重要的功能就是SKU的创建以及维护,所以一旦出错就会影响电商后面的流程。
业务总流程图
主要的设计思考是全排列,
1、新增、删除、修改属性,skuchange方法进行重新全部组合
改成以属性组名称和属性值作为判断,通过map结构存储,键值为属性组名称和属性名称组合成为唯一attrValId
全排列组合,每一个组合与sku map结构对比,包含(新增维度)被包含(删除维度,删除属性值)命中(新增属性,编辑属性值)
生成一个唯一标识的attrValId
同一维度属性值不能重复
属性组名称不能重复
2、删掉的销售属性不能够被重新生成出来
1、记录上一次的销售属性值,上一次销售属性(笛卡尔积)组合之后的属性值唯一标识attrValId组合
2、上一次的skus,上一次的sku列表map结构生成
3、map.keys()与销售属性全排列组合对比,对比差异(全等)取差集
4、当前的销售属性进行笛卡尔积,遍历
5、差集不生成sku
3、勾选属性值、取消勾选属性值
判断是不是取消勾选操作,取消勾选之后再次勾选
取消勾选:cancelSkusMap添加当前map键为id,值为上一次的skusMap包含当前id的skus信息数组
取消勾选之后再次勾选:cancelSkusMap中是否有数据,并且当前不是只有一条数据被checked(最后一条数据不能用取消勾选的数据,要保留skuId原则)