供港 多币种 明细
供港-多币种
Head
- Author: GuLong
- Status: create
- Type: Standards
- Created: 2019-06-17
改动点
1. 报价单新增币种类型
2. sku新增币种类型, 跟随所属报价单
3. 订单新增币种类型,订单记录中明细里sku的币种只能有一种(创建、更新时效验)
4. 商户的账号新增币种类型
5. 商户和报价单绑定时,币种要求一致
6. bshop注册时,商户账号跟随邀请码报价单的币种
数据库相关
mysql
-- xnn_core_product_2
-- 新增 货币种类表
CREATE TABLE tbl_fee_type (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`fee_type` varchar(32) NOT NULL COMMENT '货币类型,如CNY、HKD',
`unit` varchar(128) NOT NULL COMMENT '单位,如:元、港元',
`name` varchar(128) NOT NULL COMMENT '货币名称',
`symbol` varchar(32) NOT NULL COMMENT '货币符号',
);
-- 新增 站点汇率设置表
CREATE TABLE tbl_fee_rate (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`from_fee_type` varchar(32) NOT NULL COMMENT '原币种类型',
`to_fee_type` varchar(32) NOT NULL COMMENT '目标币种类型, 通常是人民币',
`value` decimal(15,4) NOT NULL COMMENT '汇率 from_fee = value * to_fee',
`station_id` varchar(16) NOT NULL,
`group_id` int(11) NOT NULL,
`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 NOT NULL DEFAULT '0',
`extra2` int NOT NULL DEFAULT '0',
`extra3` int 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 '1-1-1 00:00:00',
`extra8` datetime NOT NULL DEFAULT '1-1-1 00:00:00',
`extra9` datetime NOT NULL DEFAULT '1-1-1 00:00:00',
`extra10` decimal(15,4) NOT NULL DEFAULT '0.0000',
PRIMARY KEY (id),
KEY `uniq_fee_rate` (`station_id`,`from_fee_type`,`to_fee_type`,`delete_time`)
);
management.tbl_user 用户表
+ fee_type
ALTER TABLE `management`.`tbl_user` ADD ( `fee_type` VARCHAR ( 32 ) NOT NULL DEFAULT 'CNY' COMMENT '币种类型' );
order.tbl_strike_balance 到账凭证表
+ fee_type
ALTER TABLE `order`.`tbl_strike_balance` ADD ( `fee_type` VARCHAR ( 32 ) NOT NULL DEFAULT 'CNY' COMMENT '币种类型' );
order.tbl_order_pay_flow 支付流水表
+ fee_type
ALTER TABLE `order`.`tbl_order_pay_flow` ADD ( `fee_type` VARCHAR ( 32 ) NOT NULL DEFAULT 'CNY' COMMENT '币种类型' );
order.tbl_order_strike_flow 冲账记录表
+ fee_type
ALTER TABLE `order`.`tbl_order_strike_flow` ADD ( `fee_type` VARCHAR ( 32 ) NOT NULL DEFAULT 'CNY' COMMENT '币种类型' );
order.tbl_order_refund_flow 退款记录表
+ fee_type
ALTER TABLE `order`.`tbl_order_refund_flow` ADD ( `fee_type` VARCHAR ( 32 ) NOT NULL DEFAULT 'CNY' COMMENT '币种类型' );
order.tbl_user_balance 用户余额表
+ fee_type
ALTER TABLE `order`.`tbl_user_balance` ADD ( `fee_type` VARCHAR ( 32 ) NOT NULL DEFAULT 'CNY' COMMENT '币种类型' );
order.tbl_user_gift_balance 用户赠送余额表
+ fee_type
ALTER TABLE `order`.`tbl_user_gift_balance` ADD ( `fee_type` VARCHAR ( 32 ) NOT NULL DEFAULT 'CNY' COMMENT '币种类型' );
order.tbl_saas_user_balance saas用户余额
+ fee_type
ALTER TABLE `order`.`tbl_saas_user_balance` ADD ( `fee_type` VARCHAR ( 32 ) NOT NULL DEFAULT 'CNY' COMMENT '币种类型' );
order.tbl_saas_user_gift_balance saas用户赠送余额
+ fee_type
ALTER TABLE `order`.`tbl_saas_user_gift_balance` ADD ( `fee_type` VARCHAR ( 32 ) NOT NULL DEFAULT 'CNY' COMMENT '币种类型' );
order*.tbl_order* 所有分库分表的订单表
+ fee_type, order微服务 tools/add_order_fee_type.py
###
mongodb
sku_product_new
+ fee_type # sku表 新增币种字段
salemenu
+ fee_type # 报价单表 新增币种字段
order_new
+ fee_type # mongo的order表 新增币种字段
# 上面三张mongodb的表,可以不刷数据,兼容fee_type, 当fee_type不存在时默认为人民币,fee_type=CNY
###
-- 插入初始币种类型
INSERT INTO `xnn_core_product_2`.`tbl_fee_type` ( `fee_type`, `unit`, `name`, `symbol` )
VALUES
( 'CNY', '元', '人民币', '¥' ),
( 'HKD', '港元', '港币', '$' );
###
-- station权限
-- 【查看汇率】权限 get_fee_rate (控制汇率管理页面的显示)
INSERT INTO `xnn_core_product_2`.`auth_permission`(`name`, `name_en`, `content_type_id`, `codename`, `level2_id`) VALUES ('查看汇率', 'Get Fee Rate', 70, 'get_fee_rate', 19);
-- 【汇率编辑】权限 edit_fee_rate (汇率设置接口)
INSERT INTO `xnn_core_product_2`.`auth_permission`(`name`, `name_en`, `content_type_id`, `codename`, `level2_id`) VALUES ('汇率编辑', 'Edit Fee Rate', 70, 'edit_fee_rate', 19);
-- 【修改报价单货币类型】 edit_salemenu_fee_type (控制新建报价单是否能选择币种)
INSERT INTO `xnn_core_product_2`.`auth_permission`( `name`, `name_en`, `content_type_id`, `codename`, `level2_id`) VALUES ('修改报价单的货币类型', 'Edit Salemenu Fee Type', 15, 'edit_salemenu_fee_type', 8);
-- ma权限
-- 【设置商户货币类型】 edit_customer_fee_type (控制新建商户时是否能选择币种)
INSERT INTO `management`.`tbl_permission`(`name`, `name_en`, `content_type_id`, `codename`, `pm_can_see`, `level2_id`) VALUES ('设置商户货币类型', 'Edit Customer Fee Type', 16, 'edit_customer_fee_type', NULL, 20);
-- 【设置到账凭证货币类型】edit_chongzhang_fee_type (控制新建到账凭证时是否能选择币种)
INSERT INTO `management`.`tbl_permission`(`name`, `name_en`, `content_type_id`, `codename`, `pm_can_see`, `level2_id`) VALUES ('设置到账凭证货币类型', 'Edit Chongzhang Fee Type', 32, 'edit_chongzhang_fee_type', NULL, 33);
Station接口改动
汇率
/fee/type/list 币种类型列表 (新接口)
接口描述
币种设置页面,获取币种类型列表
Method
get
请求
无
响应
{
"code": 0,
"data": [
{
"symbol": "¥", # 币种符号
"type": "CNY", # 币种类型(缩写),唯一标识
"name": "人民币", # 币种名称
}
]
"msg": "ok"
}
/fee/type/get 获取币种详情 (新接口)
接口描述
更加fee_type获取币种详情
Method
get
请求
type M str # fee_type的值
响应
{
"code": 0,
"data": {
"symbol": "¥", # 币种符号
"type": "CNY", # 币种类型(缩写),唯一标识
"name": "人民币", # 币种名称
}
"msg": "ok"
}
/fee/rate/save 汇率设置保存 (新接口)
Method
post
请求
# xx_fee_type: /fee_type/list中的type
from_fee_type M str 原币种类型
to_fee_type M str 目标的币种类型
value M float 汇率值,小数后四位
响应
逻辑
储存每个站点的历史汇率设置
/fee/rate/list 汇率设置列表 (新接口)
Method
get
请求
from_fee_type O str 原币种类型
to_fee_type O str 目标币种类型
响应
{
"code": 0,
"data": [
{
"from_fee_type": "CNY", # 原币种
"to_fee_type": "HKD", # 目标币种
"value": 0.1234, # 汇率值
}
]
"msg": "ok"
}
响应
拉取当前站点下的汇率设置
报价单
Method
post
请求
# 新增参数
fee_type O str 币种类型, 默认人民币币种 CNY
响应
不变
Method
get
请求
不变
响应
报价单的信息增加fee_type字段, data[0].fee_type
商品sku
/product/sale/create 销售sku创建 (修改老接口)
接口描述
报价单中新建销售规格
商品库中新建销售规格
Method
post
请求
不变
响应
不变
逻辑
创建的销售sku的币种类型 默认限制为 所属报价单的币种类型
/product/batchsku/create 批量创建销售sku (修改老接口)
/product/sku/import 批量导入新建销售规格 (修改老接口)
/merchandise/spu/import_by_template 云商品库新建销售规格 (修改老接口)
请求
不变
响应
不变
逻辑
创建的销售sku的币种类型 默认限制为 所属报价单的币种类型
接口描述
【商品-商品管理-报价单管理 页面】的商品列表
Method
get
请求
不变
响应
sku的信息增加fee_type字段,data[0].fee_type, 根据fee_type显示币种
/merchandise/spu/index 商品库-商品列表 (修改老接口)
接口描述
【商品-商品管理-商品库 页面】的商品列表
Method
get
请求
不变
响应
sku的信息增加fee_type字段(path: data[0].skus[0].fee_type)
/product/sku_sale/list 销售规格信息 (修改老接口)
接口描述
【商品-商品管理 销售规格信息 页面】
Method
get
请求
不变
响应
sku的信息增加fee_type字段,data[0].fee_type
/product/sku/export 商品库页面的商品导出 (修改老接口)
接口描述
商品库页面的商品导出
Method
get
请求
不变
响应
基础单位,销售价字段(异步、同步)
接口描述
智能定价
Method
post
请求
不变
响应
/product/sku/smart_pricing/list 商品智能定价-列表 (修改老接口)
接口描述
商品智能定价-列表
Method
post
请求
不变
响应
+ data.sku_list[0].fee_type
订单
/station/order/create (order微服务做统一修改)
(批量创建、导入创建、补录创建)......
所有创建订单的接口,只有details.sku的fee_type都是一种,并且和下单用户的fee_type一致时,才能创建。
创建订单时根据details的sku类型设置订单的货币类型fee_type
/station/orders 订单列表 (修改老接口)
接口描述
订单列表
Method
get
请求
不变
响应
分别展现人民币和港币的汇总金额,添加汇总金额字典的字段:
data.total_sale_money_with_freight_dict = {fee_type1: money1}
list中的订单项添加币种类型字段: data.list[0].fee_type
/station/order/order_sku_list 订单列表-按商品查看 (修改老接口)
接口描述
订单列表-按商品查看
Method
get
请求
不变
响应
普通时:
list中的sku项添加币种类型字段: data.list[0].fee_type
全选点击【手动同步单价】 参数return_all=yes时
+ data["0"].orders["0"].fee_type
+ data["0"].fee_type
/station/order/edit 订单详情 (修改老接口)
接口描述
获取订单详情信息
Method
get
请求
不变
响应
订单信息添加币种类型字段: data.fee_type
details中的sku项添加币种类型字段: data.details[0].fee_type
/station/order/customer/search 新建订单-商户列表 (修改老接口)
接口描述
新建订单-商户列表
Method
get
请求
不变
响应
list中的商户项添加币种类型字段: data.list[0].fee_type
/station/skus/addr 新建订单-商品搜索 (修改老接口)
接口描述
新建订单页面-商品搜索
Method
get
请求
不变
响应
list中的sku项添加币种类型字段: data[0].fee_type
/station/skus/recognize 新建订单-智能识别 (修改老接口)
接口描述
新建订单页面-智能识别
Method
get
请求
不变
响应
list中的sku项添加币种类型字段: data[0].fee_type
/station/sales_analysis/orderdetail 订单导出 (修改老接口)
接口描述
新建订单-商户列表
Method
get
请求
不变
响应
订单明细,最后一列,增加“货币类型”
商品明细,最后一列增加“货币类型”
参考成本
订单详情-参考成本 /station/order/edit (last_in_stock_price last_purchase_price last_quote_price)
商品库-商品列表 /merchandise/spu/index
报价单-商品列表 /product/sku_salemenu/list
商品详情 /product/sku_spec/list
# 根据商品货币类型判断是否需要进行汇率换算
打印配送单 (客户自定义的,下面两接口不用修改)
/station/distribute/get_order_by_id 老-打印配送单 (修改老接口)
接口描述
供应链-订单-订单列表 订单详情中的打印
Method
get
请求
不变
响应
data中的订单项添加汇率类型字段: data[0].fee_type
/delivery/print 新-打印配送单 (修改老接口)
接口描述
供应链-订单-订单列表 编辑配送单的打印
Method
post
请求
不变
响应
delivery_details中的订单项添加汇率类型字段: data.delivery_details[0].fee_type
配送任务
/station/task/distribute/orders/get 配送-订单任务列表 (修改老接口)
接口描述
供应链-配送-配送任务 订单任务列表
供应链-配送-配送任务 司机任务列表明细
Method
get
请求
不变
响应
order中的订单项添加汇率类型字段: data.order[0].fee_type
/station/task/distribute/driver_tasks/get 司机任务列表汇总 (修改老接口)
接口描述
供应链-配送-配送任务 司机任务列表汇总
fixme多个不同币种的订单,汇总金额如何展示
Method
get
请求
不变
响应
/station/task/distribute/orders/products/get 配送-司机任务列表-明细 (修改老接口)
接口描述
配送-司机任务列表-明细
Method
get
请求
不变
响应
sku项添加汇率类型字段: data["0"].fee_type
/station/task/distribute/route_task 线路任务列表 (修改老接口)
接口描述
供应链-配送-配送任务 线路任务列表
fixme多个不同币种的订单,汇总金额如何展示
Method
get
请求
不变
响应
Bshop接口改动
sku相关接口添加fee_type字段
/product/sku/promotion + data[0].skus[0].skus[0].fee_type
/product/sku/detail + data.skus[0].fee_type
/product/sku/get + data[0].skus[0].fee_type
/cart/get + data.info.fee_type (放info里,现阶段bshop只能有一种货币类型的sku)
/favorite/list/detail + data.products[0].skus[0].fee_type
...
订单相关接口添加fee_type
/order/list + data[0].fee_type 订单币种
/order/detail + data.fee_type 订单币种
+ data.details[0].fee_type 订单明细sku的币种
/order/confirm
/order/cart
/order/unpaid_list
/order/partpay_list
...
用户信息接口添加fee_type(优惠券、流水币种类型由此接口的fee_type控制)
/user/account + data.fee_type KID的币种
用户注册
/register 有邀请码就用对应报价单的币种,没有邀请码默认人民币币种
MA接口改动
/fee/type/list 币种类型列表 (新接口)
接口描述
新建商户、冲账的时候需要选择币种
Method
get
请求
无
响应
{
"code": 0,
"data": [
{
"symbol": "¥", # 币种符号
"type": "CNY", # 币种类型(缩写),唯一标识
"name": "人民币", # 币种名称
}
]
"msg": "ok"
}
/custommanage/restaurant/add 商户创建
接口描述
商户-商户管理-商户列表 商户创建
Method
post
请求
# 新增币种类型参数
fee_type O 默认为人民币币种CNY
响应
逻辑
添加效验: 商户账号的币种类型 和 绑定报价单的币种类型 必须一致
/custommanage/restaurant/import 商户导入批量创建
接口描述
商户-商户管理-商户列表 商户创建
Method
post
请求
# 新增币种类型参数
fee_type O 默认为人民币币种CNY
响应
逻辑
添加效验: 商户账号的币种类型 和 绑定报价单的币种类型 必须一致
/custommanage/edit 商户编辑
接口描述
商户详情中的编辑
Method
post
请求
不变
响应
不变
逻辑
当编辑绑定报价单时: status: modifySSM
添加效验: 商户账号的币种类型 和 绑定报价单的币种类型 必须一致
售后异常
/ordermanage/daily/search 每日订单 (修改老接口)
接口描述
售后-异常-每日订单
Method
get
请求
不变
响应
+ data[0].fee_type 订单币种类型
/ordermanage/get 按订单查看 异常详情 (修改老接口) [用订单号搜索才能触发搜索按钮????]
/ordermanage/get/lkorder
/ordermanage/get/plorder
接口描述
售后-异常-售后管理 按订单查看
Method
get
请求
不变
响应
+ data.order_info.fee_type 订单币种类型
商户结算 (财务-结算)
/finance/order/search 商户结算列表 (修改老接口)
接口描述
财务-结算-商户结算 商户结算列表
Method
get
请求
不变
响应
+ data.orders[0].fee_type 订单币种类型
/finance/order/update/arrival 商户结算列表 冲账 (修改老接口)
接口描述
财务-结算-商户结算 商户结算列表-冲账
Method
POST
请求
不变
响应
逻辑
不同币种的冲账
/finance/order/trade/flow 商户结算列表 交易流水 (修改老接口)
接口描述
财务-结算-商户结算 商户结算列表
Method
get
请求
不变
响应
+ data[0].fee_type 流水币种类型
/finance/order/export 商户结算列表 导出 (修改老接口)
接口描述
财务-结算-商户结算 商户结算列表导出
Method
get
请求
不变
响应
+ 流水币种类型、订单币种类型
到账凭证 (财务-结算)
/finance/strike/balance/search 到账凭证列表
接口描述
财务-结算-到账凭证 到账凭证列表
Method
get
请求
不变
响应
+ data.strike_balances[0].fee_type 到账凭证的币种类型
/finance/strike/balance/get 冲账详情
接口描述
财务-结算-到账凭证 冲账详情
Method
get
请求
不变
响应
+ data.strike_balance.fee_type 到账凭证的币种类型
商户对账单 (财务-结算)
/custommanage/bill/search 商户对账单列表 + 导出(异步、同步)
接口描述
财务-结算-商户对账单 商户对账单列表、导出
Method
get
请求
不变
响应
+ data[0].fee_type KID的币种类型
/custommanage/bill/detail 商户对账单详情 + 打印 + 打印明细
接口描述
财务-结算-商户对账单 商户对账单详情 + 打印 + 打印明细
Method
get
请求
不变
响应
+ data.fee_type KID的币种类型
现金流水 (财务-流水)
/finance/cash/money 现金流水列表
接口描述
财务-流水-现金流水 现金流水列表
Method
get
请求
不变
响应
+ data.balances[0].fee_type KID的币种类型
/finance/strike/balance/add 新增到账信息
接口描述
财务-流水-现金流水 现金流水列表
Method
POST
请求
# 新增
fee_type O 币种类型,默认CNY
响应
逻辑
kid和凭证的币种一致效验
请求、响应均不变的接口
财务/结算/商户结算-(手动指定订单)冲账
/finance/order/update/arrival
冲账的到账凭证【tbl_strike_balance】币种类型 跟随 订单币种类型
订单冲账流水【tbl_order_strike_flow】币种类型 跟随 到账凭证币种类型
财务/结算/到账凭证 冲账-冲账确认
/finance/strike/balance/submit
效验订单和冲账的币种类型是否一致
退款
/finance/order/refund
退款流水币种【tbl_order_refund_flow】类型 跟随 订单币种类型
报表类 (运营数据-订单分析、商品分析)
改动接口:
/report/customer_order/static 订单分析-统计数据
从ES聚合出来的,mongodb订单数据同步写入es时,需要写入币种字段,es的老数据的币种字段如何处理?
/report/order/list 订单分析-订单明细列表
从ES聚合查询的
/report/order/export 订单分析-导出
script工程,从ES聚合查询的
/report/orders 商品分析-搜索|导出
从mongodb查询的 (老接口,已废弃)
/report/sku/static 商品分析-统计数据
从es聚合出来的
/report/sku/list 商品分析-明细列表
从es聚合出来的
/report/sku/export 商品分析-导出
script工程,从ES聚合查询的
改动点:
后台的逻辑改动:如果金额的币种是港币,将金额数值按照汇率转为人民币。
请求、响应均不变。
司机App接口改动
/driver/delivery/list 订单任务列表
接口描述
订单任务列表
Method
get
请求
不变
响应
+ data[0].fee_type 订单的币种类型
/driver/delivery/detail 订单详情
接口描述
订单任务详情
Method
get
请求
不变
响应
+ data.fee_type 订单的币种类型
/driver/delivery/order/exception/get 售后异常
接口描述
订单任务列表中的 售后异常
Method
get
请求
不变
响应
+ data.fee_type 订单的币种类型
其他
注意点:
马来的站点,在刷数据时应该默认是马来的币种类型(多币种的fee_type优先级 比 站点的货币配置优先级高)
开发计划
开发时间
06.20 - 06.21 2天 币种、汇率设置、报价单创建、sku创建等接口
06.24 - 06.25 2天 bshop接口
06.26 - 07.02 5天 st接口
07.03 - 07.09 5天 ma接口
07.10 - 07.11 2天 司机app接口
联调完时间
1 【配置】完成联调时间 07-01
2 【bshop】完成联调时间 07-01(创建报价单、sku的币种也这里完成)
3 【station】完成联调时间 07-04
4 【ma】完成联调时间 07-11
5 【其他应用】完成联调时间 07-15