Skip to content

商城进销存

商城进销存

数据库表改动

新增mysql表tbl_order_in_stock存储订单中入库和删除的sku信息

新增mysql表存储订单中入库记录删除和已入库的sku,每次返回订单中的sku数据需要在此表中过滤一次
id
order_id, 
sku_id,
status,   // 1-已入库 2-已删除

pstatus,        // 物理删除
create_time,
modify_time,
delete_time,

CREATE TABLE `tbl_order_in_stock` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `order_id` varchar(16) NOT NULL,
  `sku_id` varchar(16) NOT NULL COMMENT 'sku id',
  `status` tinyint(4) NOT NULL COMMENT '1-已入库 2-已删除',

  `create_time` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
  `modify_time` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
  `pstatus` tinyint(4) NOT NULL DEFAULT '0',
  `delete_time` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
  `extra1` int(11) NOT NULL DEFAULT '0',
  `extra2` int(11) NOT NULL DEFAULT '0',
  `extra3` int(11) NOT NULL DEFAULT '0',
  `extra4` varchar(128) NOT NULL DEFAULT '',
  `extra5` varchar(128) NOT NULL DEFAULT '',
  `extra6` varchar(128) NOT NULL DEFAULT '',
  `extra7` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
  `extra8` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
  `extra9` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
  `extra10` decimal(15,4) NOT NULL DEFAULT '0.0000',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uniq_order_sku` (`order_id`,`sku_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

新增mysql表tbl_address_stock_log存储出入库信息

每次sku入库都生成一条入库记录,spu出库都生成一条出库详情记录

tbl_address_stock_log

id              // 操作id,自增主键

station_id,     // 站点id, 操作的spu所属站点
address_id,     // 商户id,从session中拿
spu_id,         // spu_id
order_id,       // 入库的order_id, 出库的时候为空字符串
sku_id,         // 入库的sku_id,出库的时候为空字符串         

op_user,        // 操作人
std_unit_name,  // 基本单位
std_quantity,   // spu出或入库变动数量, 入库的时候是sku数量
std_unit_price, // spu出或入库单价, 入库的时候是sku单价
op_type,        // 操作类型 1.入库, 2. 出库 3. 删除spu库存
stock,          // 变动后库存
old_stock,      // 变动前库存

pstatus,        // 物理删除
create_time,
modify_time,
delete_time,


CREATE TABLE `tbl_address_stock_log` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `group_id` int(11) NOT NULL COMMENT 'spu所属于的group',
  `station_id` varchar(16) NOT NULL COMMENT 'spu所属于的站点',
  `address_id` varchar(16) NOT NULL,
  `order_id` varchar(20) NOT NULL DEFAULT '' COMMENT '入库的sku所属订单id',  
  `spu_id` varchar(20) NOT NULL,  
  `sku_id` varchar(20) NOT NULL DEFAULT '' COMMENT '入库的sku',

  `std_unit_name` varchar(16) NOT NULL COMMENT '单位',
  `std_quantity` Decimal(15, 4) NOT NULL COMMENT '数量, 浮点数',
  `std_unit_price` Decimal(15, 4) NOT NULL COMMENT '单价单位元,浮点数',
  `op_user` varchar(32) NOT NULL COMMENT '操作人',
  `op_type` tinyint(4) NOT NULL COMMENT '操作类型:1.入库, 2. 出库 3. 删除spu库存',
  `stock` Decimal(15, 4) NOT NULL COMMENT '变动前库存, 浮点数',
  `old_stock` Decimal(15, 4) NOT NULL COMMENT '变动后库存,浮点数', 
  `create_time` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
  `modify_time` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
  `pstatus` tinyint(4) NOT NULL DEFAULT '0',
  `delete_time` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
  `extra1` int(11) NOT NULL DEFAULT '0',
  `extra2` int(11) NOT NULL DEFAULT '0',
  `extra3` int(11) NOT NULL DEFAULT '0',
  `extra4` varchar(128) NOT NULL DEFAULT '',
  `extra5` varchar(128) NOT NULL DEFAULT '',
  `extra6` varchar(128) NOT NULL DEFAULT '',
  `extra7` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
  `extra8` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
  `extra9` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
  `extra10` decimal(15,4) NOT NULL DEFAULT '0.0000',
  PRIMARY KEY (`id`),
  KEY `idx_address_id` (`address_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;


新增mysql表tbl_address_stockinfo存储最新库存,库存均价,库存货值信息

逻辑: 每次出库入库删除三种操作,重新计算当前的库存量,和库存均价,存在即更新,不存在就创建

维护每个spu规格的当前库存、库存均价库存货值,除非pstatus为物理删除状态,否则每个spu只有一条记录

tbl_address_stockinfo

id              // 自增主键
station_id,
address_id,
spu_id,         // 商品spu_id

avg_price,       // 库存均价
stock,           // 当前库存量
stock_value,     // 当前库存货值
last_op_type     // 最后一次操作导致变动的类型:1-入库 2-出库 3-删除spu库存

pstatus,
create_time,
modify_time,
delete_time,

CREATE TABLE `tbl_address_stockinfo` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `group_id` int(11) NOT NULL COMMENT 'spu所属于的group',
  `station_id` varchar(16) NOT NULL COMMENT 'spu所属于的站点',
  `address_id` varchar(16) NOT NULL COMMENT '商户id',
  `spu_id` varchar(20) NOT NULL COMMENT '商品id',
  `std_unit_name` varchar(16) NOT NULL COMMENT '单位',
  `avg_price` Decimal(15, 4) NOT NULL COMMENT '当前库存均价,浮点数',
  `stock` Decimal(15, 4) NOT NULL COMMENT '当前库存,浮点数',
  `stock_value` Decimal(15, 4) NOT NULL COMMENT '当前库存货值, 浮点数',
  `last_op_type` tinyint(4) NOT NULL COMMENT '操作类型:1.入库, 2. 出库 3. 删除spu库存',
  `create_time` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
  `modify_time` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
  `pstatus` tinyint(4) NOT NULL DEFAULT '0',
  `delete_time` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
  `extra1` int(11) NOT NULL DEFAULT '0',
  `extra2` int(11) NOT NULL DEFAULT '0',
  `extra3` int(11) NOT NULL DEFAULT '0',
  `extra4` varchar(128) NOT NULL DEFAULT '',
  `extra5` varchar(128) NOT NULL DEFAULT '',
  `extra6` varchar(128) NOT NULL DEFAULT '',
  `extra7` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
  `extra8` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
  `extra9` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
  `extra10` decimal(15,4) NOT NULL DEFAULT '0.0000',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uniq_addr_spu` (`address_id`,`spu_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

bshop部分

https://bshop.guanmai.cn/stock/spu/count [新增接口: 获取库存概况统计数据]

请求方法:GET

请求:
    address_id             M    str   商户id
    search                 O    str   商品名搜索参数

响应:
    code                   M    int  0 为成功,其它为失败
    msg                    M    str  错误提示信息
    data                   M    map  概况统计数据

例子:
request: 
无
response:
{
    code: 0,
    msg: 'ok',
    data: {
        'total_stock_value': 300.00,      // 总货值,保留两位小数
        'spu_count': 1,                   // 库存商品数
    }
}    

https://bshop.guanmai.cn/stock/spu/list [新增接口: 获取库存概况]

请求方法:GET

请求:
    address_id             M    商户id
    sort                   M    排序: 1-最近出入库操作时间降序,2-商品名称升序                     3-商品名称降序, 4-库存数升序, 5-库存数降序
    search                 O    str   商品名搜索参数

响应:
    code                   M    int  0 为成功,其它为失败
    msg                    M    str  错误提示信息
    data                   M    list spu库存数据列表
    pagination             M    map  分页信息

例子:
request: 
无
response:
{
    code: 0,
    msg: 'ok',
    data: [
            {
                'spu_id': 'C5678921',
                'spu_name': '西红柿',
                'stock': 30,                 // 库存,单位std_unit_name
                'std_unit_name': '斤',
                'avg_price': 10.00,          // 单位元,保留两位小数
                'stock_value':300.00         // 货值stock*avg_price,单位元,保留两位小数
                'img_url': 'http://testpic.guanmai.cn/product_pic/1e30e0e919bc9fca.jpg'
            }
        ]
   pagination: {
        more: true,
        page_obj: '[[[P1234567], false], [[P456789], true]]'
    }
}

https://bshop.guanmai.cn/stock/spu/delete [新增接口: 库存商品删除]

请求方法:POST

请求:
    address_id             M    str   商户id
    spu_id                 M    str   库存商品spu_id

响应:
    code                   M    int  0 为成功,其它为失败
    msg                    M    str  错误提示信息
    data                   M    null

例子:
无

https://bshop.guanmai.cn/stock/sku/wait_in_stock/count [新增接口:获取待入库商品统计数据]

    请求方法:GET

请求:
    address_id             M    str  商户id    
    query_type             O    int   查询类型1:按照下单时间,2:按照收货时间
    start_time             O    str   开始日期
    end_time               O    str   结束日期
    order_status           O    int   订单状态-1:全部 10:正在配送, 15:已签收
    search                 O    str   搜索参数

响应:
    code                   M    int  0 为成功,其它为失败
    msg                    M    str  错误提示信息
    data                   M    map  sku商品数和入库总金额信息

例子:
request:
无
response:
{
    code: 0,
    msg: 'ok',
    data: {
        'sku_count': 45,   // 商品数
        'amount': 24,      // 商品金额,元
    }
}   

https://bshop.guanmai.cn/stock/sku/wait_in_stock/list [新增接口:获取待入库商品列表]

请求方法:GET

请求:
    address_id             M    str  商户id    
    query_type             O    int   查询类型1:按照下单时间,2:按照收货时间
    start_time             O    str   开始日期
    end_time               O    str   结束日期
    order_status           O    int   订单状态-1:全部 10:正在配送, 15:已签收
    sort                   O    int   排序-1-按照下单时间降序, 1-按照下单时间升序
    search                 O    str   搜索参数

响应:
    code                   M    int  0 为成功,其它为失败
    msg                    M    str  错误提示信息
    data                   M    list  sku数据 
    pagination             M    map  分页信息

逻辑: 拉取最近订单状态为配送中和已签收的订单中的sku商品,过滤掉已入库和已删除的sku,根据下单时间进行排序分页作为待入库商品

例子:
request:
无
response:
{
    code: 0,
    msg: 'ok',
    data: [
       {
         'order_id': 'PL230345',                 // 订单id
         'spu_id': 'C7656004',                   // spu_id
         'sku_id': 'D456789',                    // sku_id
         'sku_name': '萝卜',                      // sku名
         'order_id': 'PL234567',                 // 订单号
         'order_time': '2019-05-29 10:00:00',    // 下单时间
         'order_status': 10,                     // 订单状态, 10-正在配送, 15-已签收
         'std_unit_name': '斤',                  // 基本单位
         'std_quantity': 12,                     // 入库数
         'std_unit_price': 1.2                   // 商品销售单价     
        }
    ],
    pagination {
        more: true,
        page_obj: '[[[P1234567], false], [[P456789], true]]'
    }
}

https://bshop.guanmai.cn/stock/spu/in_stock/create [新增接口:批量创建入库]

请求方法:POST

全选请求:
    address_id                 M    str    商户id
    all                        M    int    是否是全选,1:是,0:否
    order_status               O    int    订单状态, -1-全部状态 10-正在配送, 15-已签收
    query_type                 O    int    过滤的时间类型 1-按照下单日期 2-按照收货日期
    start_time                 O    str    开始日期
    end_time                   O    str    结束日期
    search                     O    str    全选时需要传搜索参数过来

批量请求:
    address_id                 M    str    商户id
    batch_list [               O    list   批量列表,  // todo sku list
        {                      M    map    每个订单的入库信息
            order_id           M    str    订单id
            sku_id             M    str    sku id
            std_quantity       M    float  sku入库数量, 基本单位
            std_unit_price     M    float  sku入库单价,基本单位  
        }
    ]

响应:
    code    M   int  0 为成功,其它为失败
    msg     M   str  错误提示信息
    data    M   str  null

逻辑:
取出当前要操作入库的spu的当前库存,库存均价,货值,插入入库出库记录,重新计算当前库存,库存均价,货值.

https://bshop.guanmai.cn/stock/sku/delete [新增接口: 待入库记录删除]

请求方法:POST

请求:
    address_id             M    str   商户id
    order_id               M    str   订单id
    sku_id                 M    str   订单中的sku_id

响应:
    code                   M    int  0 为成功,其它为失败
    msg                    M    str  错误提示信息
    data                   M    null

例子:
无

逻辑:
把sku_id加入订单入库表中

https://bshop.guanmai.cn/stock/address/spu/list [新增接口:spu搜索接口]

请求方法:GET

请求:
    address_id             M    str    商户id
    search                 O    str    spu名搜索参数

响应(不变):
    code        M   int  0 为成功,其它为失败
    msg         M   str  错误提示信息
    data        M   list 分页数据
逻辑:
拉取库存不为0的的spu返回

例子:
request:
无
response:
{
    code: 0,
    msg: 'ok',
    data: [
        {
            'spu_id': 'C832019',
            'spu_name': '芹菜',
            'avg_price': 10,
            'std_unit_name': '斤'
        }
    ]
}

https://bshop.guanmai.cn/stock/spu/out_stock/create [新增接口:批量创建出库]

请求方法:POST

请求:
    address_id             M    str
    batch_list [           M    list   批量列表
        {                  M    map    每个出库的spu详细信息
            spu_id         M    str    spu id
            std_quantity   M    float  出库数量
            std_unit_price M    float  出库单价
        }
    ]

响应(不变):
    code    M   int  0 为成功,其它为失败
    msg     M   str  错误提示信息
    data    M   str  null
逻辑:

https://bshop.guanmai.cn/stock/spu/stock/change/count [新增接口:spu出入库明细页汇总信息]

请求方法:GET

请求:
    address_id             M     str       商户id
    spu_id                 M     str       spu的id
    start_time             M     str       筛选起始时间
    end_time               M     str       筛选结束时间

响应:
    code    M   int  0 为成功,其它为失败
    msg     M   str  错误提示信息
    data    M   map  返回变动信息

例子:
request:
无
response:
{
    code: 0,
    msg: 'ok',
    data:{
        'spu_id': 'C10086',
        'spu_name': '萝卜',
        'stock': 2,                          // 当前库存
        'stock_value': 24                    // 当前货值
        'std_unit_name': '斤',               // 基本单位
        'delta_value': 20,                   // 变动金额
        'delta_stock': 2                     // 变动库存
    }
}   

https://bshop.guanmai.cn/stock/spu/stock/change_log/list [新增接口:spu出入库明细]

请求方法:GET

请求:
    address_id             M     str       商户id
    spu_id                 M     str       spu的id
    start_time             M     str       筛选起始时间
    end_time               M     str       筛选结束时间

响应(不变):
    code        M   int  0 为成功,其它为失败
    msg         M   str  错误提示信息
    data        M   list 返回详细的出入库记录分页数据
    pagination  M   map  分页对象
例子:
request:
无
response:
{
    code: 0,
    msg: 'ok',
    data: [
    {
        'op_time': '2019-05-06 10:00:00',
        'op_type': 1,                     //  1-入库, 2-出库
        'std_quantity': 100,              // 数量,基本单位(std_unit_name)
        'std_unit_price': 2,              // 单价, 基本单位(std_unit_name)
        'amount': 200,                    // 金额, 单位元
    },],
    pagination: {
        more: true,
        page_obj: '[[[84345], false], [[67456], true]]'
    }
}

station部分

https://station.guanmai.cn/bshop_stock/address/stock_val/count [新增接口:商户数总货值,统计接口]

请求方法:GET

请求:
    search                 O     str       搜索条件:商户名或者商户id
响应:
    code            M   int  0 为成功,其它为失败
    msg             M   str  错误提示信息
    data            M   map 返回商户信息
例子:
request:
无
response:
{   
    code: 0,
    msg: 'ok',
    data: {
        'address_count': 3,                    // 商户数
        'total_stock_value': 300,              // 总货值
    }
}

https://station.guanmai.cn/bshop_stock/address/stock_val/list[新增接口:获取分页的货值统计列表以及导出]

请求方法:GET

请求:
    search                 O     str       搜索条件:商户名或者商户id
    export                 M     int       是否导出:0: 否 1: 是
    // 分页规范
    page_obj               O     str       分页参数
    reverse                O     bool      是否反向查询。1:是,0:不是。默认为否。
    limit                  O     int       返回条数,默认10。传0表示返回所有数据。
    offset                 O     int       查询起点偏移条数,默认0
    peek                   O     int       是否需要 peek,默认 false;peek 必须大于 limit。
    count                  O     bool      是否需要 count,1:是,0:不是。默认为否。(部分接口可能不实现本功能, 因为如果数据量极大,count 会很耗时)
响应(不变):
    code            M   int  0 为成功,其它为失败
    msg             M   str  错误提示信息
    data            M   map 返回商户信息
    pagination      M   map  分页信息   

例子:
非导出:
request:
无
response:
{
    code: 0,
    msg: 'ok',
    data:[{                 // 商户货值分页列表
            'address_id': 'S201817',
            'address_name': '测试商户',
            'stock_value': 300                 // 计算逻辑过滤该address_id的所有spu的货值,计算商户的总货值。
        }],
    pagination {
        more: true,
        page_obj: '[[[84345], false], [[67456], true]]'
    }
}

导出:

同步:
response:
{
    code: 0,
    msg: 'ok',
    data: {
        "async": 0,
        "filename": "商户货值成本_2019-05-23 10:51:28_to_2019-05-28 10:51:28.xlsx",
        "output_data":{
            "stock_value_list": [                               // 商户货值统计sheet
                {
                    'start_time':'2019-05-23 10:51:28',    // 起始日期
                    'end_time': '2019-05-28 10:51:28',      // 结束日期
                    'address_id': 'S808888',                // 商户id
                    'address_name': '商户名',                // 商户名
                    'stock_value': 300,                    // 当前货值,单位元
                },
            ],
            "address_stock_details": [                      // 商品货值统计sheet
                {
                    'start_time':'2019-05-23 10:51:28',    // 起始日期
                    'end_time': '2019-05-28 10:51:28',      // 结束日期
                    'address_id': 'S808888',                // 商户id
                    'address_name': '商户名',                // 商户名
                    'category1_id': 'A8486',                // 一级分类id
                    'category1_name': '奶类',                // 一级分类名
                    'category2_id': 'B40047',               // 二级分类id
                    'category2_name': '纯奶类',              // 二级分类名
                    'spu_id': 'C1470826',                   // SPU_ID
                    'spu_name': '伊利纯牛奶',                 // 商品名称
                    'std_unit_name': '件',                   // 基本单位
                    'stock': 300.00,                        // 当前库存
                    'avg_price': 1.00,                      // 当前库存均价
                    'stock_value': 300.00,                  // 当前货值
                }
            ]
        }  
    }
}
异步:
response:
{
    code: 0,
    msg: 'ok',
    data:  {"task_url": "/task/get?task_id=60", "async": 1}
}    

https://station.guanmai.cn/bshop_stock/address/spu_stock/list[新增接口:获取某个商户的详细spu库存货值情况]

请求方法:GET

请求:
    address_id      M   str    商户id
    // 分页规范
    page_obj        O   str    分页参数
    reverse         O   bool   是否反向查询。1:是,0:不是。默认为否。
    limit           O   int    返回条数,默认10。传0表示返回所有数据。
    offset          O   int    查询起点偏移条数,默认0
    peek            O   int    是否需要 peek,默认 false;peek 必须大于 limit。
    count           O   bool   是否需要 count,1:是,0:不是。默认为否。(部分接口可能不实现本功能, 因为如果数据量极大,count 会很耗时)
响应:
    code            M   int  0 为成功,其它为失败
    msg             M   str  错误提示信息
    data            M   list  返回商户信息
    pagination      M   map  分页信息   

例子:
request:
无
response:
{
    code: 0,
    msg: 'ok',
    data: [
        {
            'spu_id': 'C8123456',
            'spu_name': '土豆',
            'std_unit_name': '斤',   
            'stock': 100,           // 当前库存
            'avg_price': 1,         // 库存均价 单位元
            'stock_value':100       // 当前货值 单位元
        }
    ],
    pagination {
        more: true,
        page_obj: '[[[C81234564], false], [[C8125656], true]]'
    }
}

https://station.guanmai.cn/bshop_stock/address/spu_stock/detail[新增接口:获取商户某个spu的详情信息]

请求方法:GET

请求:
    address_id      M   str    商户id
    spu_id          M   str    spu_id
响应:
    code            M   int  0 为成功,其它为失败
    msg             M   str  错误提示信息
    data            M   map  返回spu信息

例子:
request:
无
response:
{
    code: 0,
    'msg': 'ok',
    'data': {
        'address_id': 'S808567',
        'address_name': '商户名',
        'spu_id': 'C123344',
        'spu_name': '美皮大土豆2号',              // 商品名
        'stock': 100,                           // 库存
        'stock_value': 100,                     // 货值,单位元 
        'std_unit_name': '斤',                  // 库存单位,例如斤
    }
}

https://station.guanmai.cn/bshop_stock/address/spu_stock/log/list[新增接口:获取某个商户的某个spu操作日记]

请求方法:GET

请求:
    start_time      M   str    搜索开始时间
    end_time        M   str    搜索结束时间
    address_id      M   str    商户id
    spu_id          M   str    spu_id
    op_type         M   int    操作类型:  -1:全部 1: 入库 2. 出库 3. 删除
    export          M   int    是否导出:0: 否 1: 是
    // 分页规范
    page_obj        O   str    分页参数
    reverse         O   bool   是否反向查询。1:是,0:不是。默认为否。
    limit           O   int    返回条数,默认10。传0表示返回所有数据。
    offset          O   int    查询起点偏移条数,默认0
    peek            O   int    是否需要 peek,默认 false;peek 必须大于 limit。
    count           O   bool   是否需要 count,1:是,0:不是。默认为否。(部分接口可能不实现本功能, 因为如果数据量极大,count 会很耗时)
响应:
    code            M   int  0 为成功,其它为失败
    msg             M   str  错误提示信息
    data            M   list  返回商户信息
    pagination      M   map  分页信息   

例子:
非导出:
request:
无
response:
{
    code: 0,
    msg: 'ok',
    data:[{
        'op_time': '2019-05-13 17:23:20',
        'op_type': 1,                       // 1: 入库 2. 出库 3. 删除
        'delta_stock': 100,                 // 变动库存
        'std_unit_price': 3,                // 单价,
        'std_unit_name': '斤',              // 单位
        'amount': 300,                      // 金额
        'old_stock': 0,                     // 变动前库存
        'stock': 100,                       // 变动后库存
        'op_user': 'miaomiao'               // 操作人
        }]
    },
    pagination {
        more: true,
        page_obj: '[[[C81234564], false], [[C8125656], true]]'
    }
}

导出:
同步:
response:
{
    code: 0,
    msg: 'ok',
    data: {
        "async": 0,
        "filename": "商户货值变动明细_2019-05-23 10:51:28_to_2019-05-28 10:51:28.xlsx",
        "output_data":{
            'address_id': 'S803456',                    // 商户id
            'address_name': '商户名',                    // 商户名
            'category1_id': 'A8486',                    // 一级分类id
            'category1_name': '奶类',                    // 一级分类名
            'category2_id': 'B40047',                   // 二级分类id
            'category2_name': '纯奶类',                  // 二级分类名
            'spu_id': 'C1470826',                       // SPU_ID
            'spu_name': '伊利纯牛奶',                     // 商品名称
            'std_unit_name': '件',                      // 件 
            "stock_log_details": [                      // 商品货值统计sheet
                {
                    'op_time': '2019-05-13 17:23:20',
                    'op_type': 1,                       // 变动类型1: 入库 2. 出库 3. 删除
                    'delta_stock': 100,                 // 变动数量
                    'std_unit_price': 3,                // 单价
                    'money': 300,                       // 金额
                    'old_stock': 0,                     // 变动前库存
                    'stock': 100,                       // 变动后库存
                    'op_user': 'miaomiao'               // 操作人
                }
            ],
        }  
    }
}
异步:
response:
{
    code: 0,
    msg: 'ok',
    data:  {"task_url": "/task/get?task_id=60", "async": 1}
} 

https://station.guanmai.cn/station/customized/update [修改老接口:更新店铺信息]

请求方法: POST

请求:
    ...
    is_open_manage_stock    O       新增: 是否开启商户自主管理进销存, 0:不开启 1:开启

响应(不变):
    code    M   int  0 为成功,其它为失败
    msg     M   str  错误提示信息
    data    M   null

https://station.guanmai.cn/station/customized [修改老接口:获取店铺信息]

请求方法: GET

请求:
    无

响应:
    code    M   int  0 为成功,其它为失败
    msg     M   str  错误提示信息
    data    M   null

例子:
request:
无
response:
{
    code: 0,
    msg: 'ok',
    data {
        ...
        is_open_manage_stock: 1,       // 是否开启商户自主管理进销存
    }
}

新增权限: 查看商户货值权限

INSERT INTO auth_permission(
        `name`, `name_en`, `content_type_id`, `codename`, `level2_id`) VALUES(
        '查看商户货值', 'Get Address Stock Value', 19, 'get_address_stock_value', 26
    );

开发计划:

15个新增接口,修改两个老接口,开发时间10天, 计划联调4天

6-4 :完成库表创建及代码结构设计,以及获取库存概况统计数据以及查询待入库商品列表接口

6-5: 完成批量创建入库

6-6:完成 spu搜索接口

6-10: 完成批量出库接口

6-11:完成库存商品删除,以及待入库记录删除接口

6-12:  完成spu出入库明细以及库存概况接口

6-13:  完成获取货值统计列表以及导出接口

6-14: 完成获取某个商户详细spu库存货值情况

6-17: 获取某个商户的某个spu操作日记及导出

6-18: 修改两个老接口,并添加权限.