采购优先供应商
采购优先供应商
Head
- Author: GuLong
- Status: create
- Type: Standards
- Created: 2019-04-25
- 需求文档:https://shimo.im/docs/iNI7pPRn7PwxEHQJ/read
数据库相关
mysql
xnn_core_product_2.auth_permission (mysql)
# 添加 设置优先供应商(codename: edit_priority_supplier)
sql: INSERT INTO `xnn_core_product_2`.`auth_permission`(`name`, `name_en`,
`content_type_id`, `codename`, `level2_id`)
VALUES ('设置优先供应商', 'Edit Priority Supplier', 15, 'edit_priority_supplier', 8);
-- xnn_core_product_2 库:
-- 新增 tbl_priority_supplier 优先供应商表 (商品-商户-供应商 关系表)
CREATE TABLE `tbl_priority_supplier` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`station_id` varchar(32) NOT NULL COMMENT '站点ID',
`group_id` int(11) NOT NULL COMMENT 'group ID',
`sku_id` varchar(32) NOT NULL COMMENT '销售商品ID',
`spu_id` varchar(32) NOT NULL COMMENT 'spu id',
`address_id` int(11) NOT NULL COMMENT '商户id',
`supplier_id` varchar(32) NOT NULL COMMENT '供应商id',
`salemenu_id` varchar(32) NOT NULL COMMENT '销售单ID',
`create_time` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '创建时间',
`modify_time` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '修改时间',
`delete_time` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '删除时间',
`pstatus` int(11) NOT NULL DEFAULT '0' COMMENT '物理状态,0:正常--默认,1:已删除',
`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_salemenu_id` (`salemenu_id`),
KEY `idx_supplier_id` (`supplier_id`),
KEY `idx_sku_id_address_id` (`sku_id`, `address_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Station接口改动
/supplier/priority_supplier/list 优先供应商列表 (新接口)
接口描述
报价单下所有优先供应商的关系列表
Method
GET
请求
salemenu_id M string 报价单id
route_id O string 线路id,route_id=-1时为无线路
q O string 搜索商品名/商品ID/销售规格名/销售规格ID/商户ID/
商户名称/供应商ID/供应商名称、
或[商品,商户,供应商]组合搜索(参考订单列表-按商品查看)
# 分页参数,可参考[分页规范详解](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,
"data": [
{
id 记录id
address_id 商户ID
address_name 商户名称
sku_id 商品id
sku_name 商品名称
spu_id
spu_name
sale_ratio 销售规格信息
sale_unit_name
std_unit_name
route_name 线路
supplier_id 供应商ID
supplier_name 供应商名称
},
...
],
"msg": "ok"
}
/supplier/priority_supplier/export 优先供应商导出 (新接口)
接口描述
导出报价单下所有优先供应商的关系列表
Method
GET
请求
# 同接口 【优先供应商列表】
salemenu_id M string 报价单id
route_id O string 线路id,route_id=-1时为无线路
q O string 搜索商品名/商品ID/销售规格名/销售规格ID/商户ID/
商户名称/供应商ID/供应商名称、
或[商品,商户,供应商]组合搜索(参考订单列表-按商品查看)
响应
{
"code": 0, # 返回码,0表示成功,其他表示错误
"msg": "ok",
"data": {
"async": 0, # 0:同步,1:异步
"task_url": None, # 异步返回url,同步则为None
"data": $data # 同步时返回数据,异步则为None
"filename": "x" # 同步时返回生成的文件名
}
}
$data格式
[
{
id 记录id
address_id 商户ID
address_name 商户名称
sku_id 商品id
sku_name 商品名称
sale_ratio 销售规格信息
sale_unit_name
std_unit_name
route_name 线路
supplier_id 供应商ID
supplier_name 供应商名称
},
...
]
当数据量<=500时 前端生成,>500走异步任务下载
/supplier/priority_supplier/delete 删除优先供应商 (新接口)
接口描述
删除优先供应商的关系
Method
POST
请求
ids M list 优先供应商记录的id列表
响应
{
"code": 0,
"data": null,
"msg": "ok"
}
/supplier/priority_supplier/address/list 商户列表 (新接口)
接口描述
获取商户列表
Method
GET
请求
salemenu_id O string 报价单id,筛选出该报价单所关联的商户
响应
{
"code": 0,
"data": [
{
address_id 商户ID
address_name 商户名称
route_id 线路id
route_name 线路
},
...
]
"msg": "ok"
}
接口描述
营销活动sku tree列表
Method
GET
请求
# 新增参数
salemenu_ids O list 报价单id数组,只筛选出这些报价单下的sku
响应
不变
/supplier/priority_supplier/batch_set 批量更新优先供应商 (新接口)
接口描述
批量设置的优先供应商关系
Method
POST
请求
supplier_id M string 需要设置的供应商id
address_ids M list 商户id列表
sku_ids M list 商品id列表
# (address_ids 和 sku_ids 进行全组合)
响应
同接口/supplier/priority_supplier/batch_update
/supplier/priority_supplier/batch_update 批量更新优先供应商 (新接口)
接口描述
批量更新的优先供应商关系
Method
POST
请求
all M int 是否全选(0 不全选, 1 全选)
# 当 all=1 时
salemenu_id M string 报价单id
route_id O string 线路id,route_id=-1时为无线路
q O string 搜索字符串
supplier_id M string 需要设置的供应商id
# 当 all=0 时
data: [ M list 优先供应商关的参数列表
{
# 如果 sku_id + address_id 已设置对应的优先供应商则为更新操作
sku_id 商品id
address_id 商户id
supplier_id 供应商id
},
...
]
响应
{
"code": 0, # 返回码,0表示成功,其他表示错误
"msg": "ok",
"data": {
"async": 0, # 0:同步,1:异步 (异步任务type=13)
"task_url": None, # 异步返回url,同步则为None
"total_num": 1,
"error_num": 1,
"error_list": $data # 同步时返回数据,异步则为None
}
}
$data格式
[
{
address_id 商户id
address_name 商户名称
sku_id 商品id
sku_name 商品名称
sale_ratio 销售规格信息
sale_unit_name
std_unit_name
route_name 线路名称
before_supplier_id 修改前供应商id
before_supplier_name 修改前供应商名称
supplier_id 修改后(当前)供应商id
supplier_name 修改后(当前)供应商名称
status status=0 操作成功
status=1 供应商无法供商品
status=2 服务器错误
},
...
]
/supplier/priority_supplier/batch_set/task 批量设置优先供应商异步结果 (新接口)
接口描述
获取异步任务执行结果
Method
GET
请求
task_id M int 任务id
响应
{
"code": 0, # 返回码,0表示成功,其他表示错误
"msg": "ok",
"data": {
"total_num": 1,
"error_num": 1,
"error_list": [
{
address_id 商户id
address_name 商户名称
sku_id 商品id
sku_name 商品名称
sale_ratio 销售规格信息
sale_unit_name
std_unit_name
route_name 线路名称
before_supplier_id 修改前供应商id
before_supplier_name 修改前供应商名称
supplier_id 修改后(当前)供应商id
supplier_name 修改后(当前)供应商名称
status status=0 操作成功
status=1 供应商无法供商品
status=2 服务器错误
},
...
]
}
}
/supplier/priority_supplier/batch_set_import 导入批量设置优先供应商 (新接口)
接口描述
通过导入excel,批量设置的优先供应商关系
先检查,发现有一条错误直接返回, 全部返回,status+index
Method
POST
请求
同 【批量设置优先供应商】 接口
data: [ M list 优先供应商关的参数列表
{
# 如果 sku_id + customer_id 已设置对应的优先供应商则为更新操作
sku_id 商品id
customer_id 商户id
supplier_id 供应商id
},
...
]
响应
大于500条走异步任务
{
"code": 0, # 返回码,0表示成功,其他表示错误
"msg": "ok",
"data": {
"status": 0, # 0: 参数检查通过,1: 参数检查不通过
# status=1时:检查不通过时,错误列表
# status=0时:检查通过,执行结果(同步结果、异步任务)
"async": 0, # 0:同步,1:异步
"task_url": None, # 异步返回url,同步则为None
"data": $data # 同步时返回数据,异步则为None
}
}
$data格式 参数检查通过,同步执行的结果
[
{
customer_id 商户id
customer_name 商户名称
sku_id 商品id
sku_name 商品名称
sale_ratio 销售规格信息
sale_unit_name
std_unit_name
route_name 线路名称
before_supplier_id 修改前供应商id
before_supplier_name 修改前供应商名称
supplier_id 修改后(当前)供应商id
supplier_name 修改后(当前)供应商名称
status status=0 操作成功
status=1 供应商无法供商品
status=2 服务器错误
},
...
]
/supplier/priority_supplier/batch_set_import/task 导入批量设置优先供应商异步结果 (新接口)
接口描述
获取异步任务执行结果
Method
GET
请求
task_id M int 任务id
响应
{
"code": 0, # 返回码,0表示成功,其他表示错误
"msg": "ok",
"data": [
{
customer_id 商户id
customer_name 商户名称
sku_id 商品id
sku_name 商品名称
sale_ratio 销售规格信息
sale_unit_name
std_unit_name
route_name 线路名称
before_supplier_id 修改前供应商id
before_supplier_name 修改前供应商名称
supplier_id 修改后(当前)供应商id
supplier_name 修改后(当前)供应商名称
status status=0 操作成功
status=1 供应商无法供商品
status=2 服务器错误
},
...
]
}
/supplier/priority_supplier/all_type/list 全部供应商列表 (新接口)
接口描述
页面【设置全部供应商】
报价单下的单个商品sku的所有供应商关系,
拉取该商品的所有商户以及其对应的供应商,包含默认供应商与优先供应商
Method
GET
请求
sku_id M string 商品id
route_id O string 线路id
q O string 商户ID/商户名称/供应商ID/供应商名称
或[商户,供应商]组合搜索
# 分页参数,可参考[分页规范详解](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,
"data": [
id 记录id # 为空时 该条目是默认供应商记录项
spu_id spu id
spu_name spu name
customer_id 商户ID
customer_name 商户名称
route_name 线路
supplier_id 供应商ID # 为空时 该条目是默认供应商记录项
supplier_name 供应商名称 # 为空时 该条目是默认供应商记录项
]
"msg": "ok"
}
/supplier/priority_supplier/all_type/batch_set 批量设置全部供应商 (新接口)
接口描述
批量设置的全部供应商关系, 数据量较少,暂时全部同步处理
Method
POST
请求
all M int 是否全选(0 不全选, 1 全选)
sku_id M string sku id
supplier_id M string 需要设置的供应商id
# 当 all=1 时
route_id O string 线路id,route_id=-1时为无线路
q O string 搜索字符串
# 当 all=0 时
address_ids O list 商户id列表
响应
{
"code": 0, # 返回码,0表示成功,其他表示错误
"msg": "ok",
"data": {
"total_num": 1,
"error_num": 1,
"error_list": [
{
address_id 商户id
address_name 商户名称
sku_id 商品id
sku_name 商品名称
sale_ratio 销售规格信息
sale_unit_name
std_unit_name
route_name 线路名称
before_supplier_id 修改前供应商id
before_supplier_name 修改前供应商名称
supplier_id 修改后(当前)供应商id
supplier_name 修改后(当前)供应商名称
status status=0 操作成功
status=1 供应商无法供商品
status=2 服务器错误
},
...
]
}
}
/supplier/priority_supplier/statistics 统计信息 (新接口)
接口描述
展示列表时获取相应商户数、商品数的统计信息, 全选列表去设置优先供应商时需要展示
Method
GET
请求
# salemenu_id、sku_id 二选一
# 当传递salemenu_id时 统计报价单下的商户数、商品数
# 当传递sku_id时 统计某个商品的全部供应商下的商户数、商品数
salemenu_id O string 报价单id
sku_id O string 商品id
route_id O string 线路id,route_id=-1时为无线路
q O string 搜索字符串
响应
{
"code": 0,
"data": {
"address_num": 1, # 商户数
"sku_num": 1, # 商品数
}
"msg": "ok"
}
其他逻辑
订单采购任务的异步创建
func: create_task_from_order 逻辑变更:
判断对应 sku-customer 是否存在已设置的优先供应商
有
生成对应的采购任务时使用优先供应商
没有
原逻辑
开发计划
04.29 列表、导出接口
04.30 批量设置
05.05 删除接口、全部供应商列表
05.06 采购任务相关逻辑
05.07 其他接口