ST云商品导入
云商品库导入
Head
- Author: GuLong
- Status: create
- Type: Standards
- Created: 2019-01-08
数据库相关
mysql
xnn_core_product_2.auth_permission
添加权限: 云商品导入 (codename: import_spu_by_template)
sql:
INSERT INTO `xnn_core_product_2`.`auth_permission` ( `name`, `name_en`, `content_type_id`, `codename`, `level2_id` )
VALUES ( '云商品导入', 'Import Spu By Template', 14, 'import_spu_by_template', 12 );
mongodb
merchandise库 spu_product表
对于通过云商品库创建的SPU添加template_id字段,来引用云商品库的商品ID;
原来方式创建的SPU没有该字段
新增 merchandise_template 库,新建以下表
(参考原商品库结构,去掉group_id、station_id相关字段)
1. category_level1 云商品库一级分类表
_id
modify_time
create_time
name
pstatus 物理状态,0:正常--默认,1:已删除
rank
2. category_level2 云商品库二级分类表
_id
modify_time
create_time
name
pstatus 物理状态,0:正常--默认,1:已删除
upstream_id 一级分类ID
rank
3. pinlei 云商品库品类分类表
_id
modify_time
create_time
name
pstatus 物理状态,0:正常--默认,1:已删除
upstream_id 二级分类ID
4. spu_product 云商品库表
_id
alias 别名
desc 描述信息
images 图片列表
modify_time 修改时间
create_time 创建时间
creator 创建人账号
name 名称
category_id_1 一级分类ID
category_id_2 二级分类ID
pinlei_id 品类ID
std_unit_name 基本单位
pstatus 物理状态,0:正常--默认,1:已删除
is_active 是否有效,0:有效--默认,1:无效
search_text 搜索关键字列表
5. system_key_generator 云商品库主键生成表
_id 固定值:system_key_generator
modify_time 修改时间
spu_category_first 一级分类主键值
spu_category_second 二级分类主键值
pinlei_key 品类主键值
spu_product_primary 云商品SPU主键值
初始云商品库数据的导入
通过脚本,读取提供的云商品库Excel,导入云商品库相关的信息到mongodb的merchandise_template库下相应的表中
Station接口改动
/merchandise/template/category1/get (新增接口)
接口描述
拉取云商品库一级分类信息列表(默认拉取全部)
Method
GET
请求
无
响应
{
"code": 0,
"data": [
{
"name": "肉类",
"id": "A7731",
"rank": 0
},
...
],
"msg": "ok"
}
/merchandise/template/category2/get (新增接口)
接口描述
拉取云商品库二级分类信息列表(默认拉取全部)
Method
GET
请求
upstream_ids O list 一级分类ID列表
响应
{
"code": 0,
"data": [
{
"name": "叶菜",
"rank": 0,
"id": "B21010",
"upstream_id": "A4506" # 一级分类ID
},
...
],
"msg": "ok"
}
/merchandise/template/pinlei/get (新增接口)
接口描述
拉取云商品库品类信息列表(默认拉取全部)
Method
GET
请求
upstream_ids O list 二级分类ID列表
响应
{
"code": 0,
"data": [
{
"name": "叶菜1",
"id": "P350040",
"upstream_id": "B21010" # 二级分类ID
},
...
],
"msg": "ok"
}
/merchandise/template/spu/list (新增接口)
接口描述
拉取云商品列表接口(有效的商品)
Method
GET
请求
# 查询参数, 存在优先级:pinlei_ids > category2_ids > category1_ids
category1_ids O list 一级分类ID列表
category2_ids O list 二级分类ID列表
pinlei_ids O list 品类ID列表
q O string 搜索参数(按SPU别名、SPUID搜索)
# 分页参数,可参考[分页规范详解](https://doc.guanmai.cn/模块文档/分页/)
page_obj O string 起始页(不包含),默认第0页
reverse O bool 是否反向查询。1:是,0:不是。默认为否。
limit O int 返回条数,默认10。传0表示返回所有数据。
offset O int 查询起点偏移条数,默认0
peek O int 是否需要 pick,默认 false;peek 必须大于 limit。
count O bool 是否需要 count,1:是,0:不是。默认为否。(部分接口可能不实现本功能, 因为如果数据量极大,count 会很耗时)
响应
{
"code": 0, # 返回码,0表示成功,其他表示错误
"msg": "ok",
"data": [
{
"desc":"", # 商品描述
"name":"苹果", # 商品名称
"id":"C920973", # 云商品ID
"std_unit_name":"斤", # 基本单位
"images":["http://testpic.guanmai.cn/pic/bc3d.png"], # 商品图片列表, 可能不存在图片
"category_id_1":"A21321", # 商品一级分类
"category_name_1":"水果",
"category_id_2":"B21012",
"category_name_2":"进口水果",
"pinlei_id":"P350044",
"pinlei_name":"进口香蕉"
},
...
],
"pagination": { M dict
"peek": 100, O int 前端传 peek 的话,后端就会返回这个字段
"more": true, M bool 是否有更多数据
"page_obj": "xx", M string
"count": 2000 O int 前端传 count 的话,后端就会返回这个字段
}
}
/merchandise/spu/import_by_template (新增接口)
接口描述
客户选中某些云商品,导入到客户站点的商品库中(异步任务方式)
Method
POST
请求
# 方式1:选中N个云商品(当参数template_ids有值时 将忽略方式2的参数)
template_ids O list 云商品ID列表
# 方式2:全选云商品列表(列表查询的参数)
category1_ids O list 一级分类ID列表
category2_ids O list 二级分类ID列表
pinlei_ids O list 品类ID列表
q O string 搜索参数(按SPU别名、SPUID搜索)
# 导入相关的参数
category1_id M string 选择导入的一级分类ID
category2_id M string 选择导入的二级分类ID
auto_create_pinlei M bool 导入时是否自动创建品类(1:是,0:不是)
pinlei_id O string 选择导入的品类,当 auto_create_pinlei=1 时有效
响应
{
"code": 0, # 返回码,0表示成功,其他表示错误
"msg": "ok",
"data": {
"async": 1, # 0:同步,1:异步
"task_url": None, # 异步返回url,同步则为None
"data": None # 异步为None
}
}
需要前端根据task_url获取异步任务执行的全部结果并展示, task_result的格式
[
{ # 新加'error_msg'字段
"error_msg": "该商品已存在,不可重复创建",
"desc":"",
"name":"苹果",
"id":"C920973",
"std_unit_name":"斤",
"image":"http://testpic.guanmai.cn/pic/bc3d.png",
"category_id_2":"B21012",
"category_name_1":"水果",
"category_name_2":"进口水果",
"pinlei_id":"P350044",
"pinlei_name":"进口香蕉"
},
...
]
逻辑
权限检查
效验品类或SPU名称是否重复
通过云商品创建的SPU添加template_id字段,来关联对应的云商品ID(云商品SPU和站点SPU是1:N)
gm_server_merchandise接口改动
新增以下接口
/v1/template/category1/get
/v1/template/category2/get
/v1/template/pinlei/get
/v1/template/spu/get