Skip to content

目标

  1. 清理废弃及冗余接口
  2. 在尽量维持现有业务接口不变的前提下抽离出商品库微服务
  3. 引入事务,数据库整体从mongo切换到mysql
  4. 修复现有设计中明显的逻辑漏洞
  5. 抽象出新的数据库操作库

商品库涉及模块

  1. 分类
  2. 营销分类
  3. SPU
  4. SKU
  5. 销售单
  6. 时间配置
  7. 销售单商户关系
  8. 营销规则

具体设计

分类

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. 时间配置目前相关接口函数混乱,整理修改需要时间