【系统设计】不同分类的商品动态添加扩展属性的方法(WMS、小型电商)
在做公司WMS系统的时候,遇到了一个商品模块的设计问题,具体业务流程如下。
客户提供需要存放的商品清单,根据商品清单生成收货单给客户,然后生成入库单进行商品入库操作。
在生成这两个单之前首先要录入商品,而由于公司业务范围大,每个客户的货物属性有很大的不同,需要实现像电商那样的扩展属性,但也不需要太过于复杂。和电商系统不同的是,在商品入库的时候也有一些入库的扩展属性。
根据产品的要求,商品的扩展属性有可能是number,string,datetime,单选,多选 等可能的情况。扩展属性有可能是商品基础属性,也有可能是入库是填写的入库属性,而单选和多选需要写成动态的,在数据字典中自己定义。
由此设计了以下的方法。具体业务流程如下,并没有使用标准的流程图。
根据上图流程,设计出商品的分类扩展表goods_extend (sortId联商品表),商品属性表goood_extenddata(extendId联goods_extend表)
添加goods_extend 扩展属性
goods_extendData 表的 DataValue 字段储存的是数字、字符、日期。如果是单选和多选,那么储存的是数据字典表中的code值
商品编辑时,选择分类后加载出goods_extend中的扩展属性,保存在goods_extendData表中
最后实现的效果如上