Skip to content

供港 多币种 明细

供港-多币种

  • 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"
    }
响应
    拉取当前站点下的汇率设置

报价单

/salemenu/sale/create 报价单创建 (修改老接口)

Method
    post
请求
    # 新增参数
    fee_type        O       str     币种类型, 默认人民币币种 CNY
响应
    不变

/salemenu/sale/list 报价单列表1 (修改老接口)

/salemenu/list 报价单列表2 (修改老接口)

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的币种类型 默认限制为 所属报价单的币种类型

/product/sku_salemenu/list 报价单-销售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
请求
    不变
响应
    基础单位,销售价字段(异步、同步)

/product/sku/smart_formula_pricing/update智能定价 (修改老接口,保存接口 不用修改)

接口描述
    智能定价
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