去年我们的美妆社区APP,上线了自有商城。之后经过多次版本迭代,商城系统的模块已经基本健全,值此时间分享一些经验出来,希望可以共同交流。 主要讲讲服务端的架构设计以及商品呈现逻辑。可能对某些PM来说有点难理解,但是我认为这是设计商城系统的PM必须具备的架构能力,而且算是比较基础和底层的部分。 一、商品的基本概念 1.1、对用户而言 一般来说有产品、商品、赠品等概念。 1.2、对数据库而言 可能只有spu,sku两个概念,这是最底层的实体。 SPU(Standard Product Unit)是指标准化产品单元,是商品信息聚合的最小单位。比如iPhone6。 SKU(Stock Keeping Unit)是指库存量单位,即库存进出计量的基本单元。比如iPhone6国行白色16G。 1.3、对功能而言 至少有产品,标准化商品,下单商品3个概念。 下单商品。肯定是一个spu下的sku,对应着商品编码。 标准化产品。对应着spu,是几个sku的集合。 产品。显示在商城货架上,可能是一个spu,可能是不同spu的组合。 注意所谓的sku可能不是单个物理实体,比如美妆行业经常把2款化妆品用胶布绑在一起作为一个sku,存入仓库。 二、商品的存储 一般而言,B2自营商城选择租用第三方仓库并对接其系统,当规模很大的时候才会考虑自建仓库。 目前我们业务刚刚起步没多久,所以只有一个仓库,比较简单。 如果仓库有多个的时候,一般会根据"选择最近仓库-库存是否足够"的原则来处理配货发货,当然可能还涉及到合并包裹的问题。 三、商品的实体关系 以上讲了商品架构中需要涉及到的实体,而他们的属性和关系决定着数据库中商品表该如何设计。 可以参考这篇文章《如何用ER图绘制业务实体模型 》,了解关于实体关系模型的更多知识。 四、商品状态机 商品的上下架状态是用来区分商品是否展示给用户,以及是否可以成功下单。 赠品是一种特殊的spu,支持上架并支持用户购买,但是建议设为已下架并且是正确价格。 需要说明的是,售完下架和我下架的,是为了方便运营客服童鞋操作商城运营系统而设计的,采用了和淘宝卖家的商品状态机相似的做法。 可以参考这篇文章《如何绘画状态机来描述业务变化》来了解其原理。 五、商品的呈现 大部分电商的商品详情,呈现逻辑是相似的。 另外京东自营会根据收货地址和仓库的位置进行匹配、部分电商会在进入该页面的时候会选中sku并且自动跳过库存不足的。 六、总结 我没有讲到类目、商品标签、商品关键属性、销售属性、其他属性,包括商品库存。 不是觉得不重要,而是我只讲了最基础最底层的设计,其他的都是根据业务在此基础上面演变而来。 更多关于商品设计的内容,可以点击DEMO。 相关阅读 如何绘画状态机来描述业务变化 如何用ER图绘制业务实体模型