目标
- 清理废弃及冗余接口
- 在尽量维持现有业务接口不变的前提下抽离出商品库微服务
- 引入事务,数据库整体从mongo切换到mysql
- 修复现有设计中明显的逻辑漏洞
- 抽象出新的数据库操作库
商品库涉及模块
- 分类
- 营销分类
- SPU
- SKU
- 销售单
- 时间配置
- 销售单商户关系
- 营销规则
具体设计
分类
1. 目前状态
- 分类现有逻辑涉及分类管理,分类拉取,数据库涉及分类表,图标表
- 现有的分类图标不支持个性定制,但又有相应需求,目前由前端处理
- 分类和商品直接相关,但目前修改分类无法在商品快照上体现当时的状况
- 品类已经无用
2. 计划
- 图标表添加字段支持个性化需求
- 分类添加快照
- 由于一二级分类非常类似,分类表合二为一
- 分类信息在很多地方使用,可以的话通过前端缓存代替后端查询
营销分类
1. 目前状态
- 营销分类独立于一般分类主要用于微信端展示
2. 计划
- 逻辑保持不变,数据库移到mysql后拆分成两张表
SPU
1. 目前状态
- spu作为sku的上一层起到连接供应链上下游和维护库存的作用
- 作为商品库的一环,同样缺少快照
2. 计划
- 添加快照
- sku一部分字段移到spu来管理,spu作为商品管理的最后单位
SKU
1. 目前状态
- 目前sku上放了绝大多数的商品信息以及供应关系
- sku主表没有和商品库的其他表放在一个库里
- sku有独立的快照表,订单内也存了部分快照
- sku站点内挂在特定销售单下维护
2. 计划
- 新的快照,里面的一些字段也同样需要是快照
- 逻辑上,编辑之后立刻就会产生快照,而不是下单的时候产生快照,分类和spu也同理
- 改变主表不合理的结构,分拆出供应表,一些字段移到spu上
- 商品相关的所有浮点都改成整形
- 改变目前维护商品的逻辑,商品维护归集到商品库管理下
- sku只关注规格,价格下沉到营销规则下
销售单&营销规则&销售单商户关系
1. 目前状态
- 作为商品直接的载体维护上下游供应以及商户的关系
- 库表方面,主表和station中的销售单字段共存,另外还有同步关系及商户关系表
- 营销规则针对不同的对象和时间设置不同的规则
2. 计划
- 本质上销售单和营销规则都是营销概念,并且同样是针对商户或站点以及商品做配置,
区别在于营销规则比销售单后置,后端设计合二为一
- 另外这里我觉得可以不放在商品库里面,放在营销配置的微服务里
时间配置
1. 目前状态
- 时间配置分为普通和预售两种
- 目前只能添加和编辑,不能删除,并且编辑时间配置和销售单的关系,会导致老订单无法拉出
2. 计划
- 统一简化普通和预售的库表设计和代码逻辑
- 添加快照
- 这个同样可以放在营销配置的微服务里
接口梳理
新的微服务接口
/merchandise/category/create
/merchandise/category/update
/merchandise/category/get
/merchandise/category/delete
/merchandise/spu/create
/merchandise/spu/update
/merchandise/spu/delete
/merchandise/spu/get
/merchandise/sku/create
/merchandise/sku/update
/merchandise/sku/delete
/merchandise/sku/get
/merchandise/sku/sync
==============
/market_rule/create
/market_rule/update
/market_rule/get
/market_rule/delete
/market_rule/sync
/service_time/create
/service_time/update
/service_time/get
/service_time/delete
/market_category/create
/market_category/update
/market_category/get
/market_category/delete
业务接口变动
需要删除的接口
接口直接废弃,需要产品及前端配合
/station/supplier/(?P{?\w+}?)/
需要跳转兼容的接口
老接口直接跳转新接口进行处理
/merchandise/category1/create
/merchandise/category1/update
/merchandise/category1/delete
/merchandise/category1/get
/merchandise/category1/icon
/merchandise/category2/create
/merchandise/category2/update
/merchandise/category2/delete
/merchandise/category2/get
/merchandise/pinlei/create
/merchandise/pinlei/update
/merchandise/pinlei/delete
/merchandise/pinlei/get
/merchandise/pinlei/detail
/station/skucategories
需要替换到微服务
剩余接口需要做的是修改query操作,数据迁移,事务
比较困难的点
1. 下单接口,营销规则逻辑修改,商品查询逻辑修改,可能顺便把thrift去掉
2. 销售单同步,考虑用异步队列的方式来做
3. 时间配置目前相关接口函数混乱,整理修改需要时间