Skip to content

ST云商品导入

云商品库导入

  • 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