Skip to content

短信平台接入

短信平台接入

概要

bshop或者station下单后, 通过短信提醒商户。短信放在通知微服务里,通知微服务记录客户充值及短信发送的明细, 并提供接口给station和gmadmin工程调用。

注: 所有导出都是前端做, 后端一次性返回所有数据给前端

DB变化

mongo -> xnn_core_product_2 新增字段

station表新增字段
sms_signature                   string      站点短信签名
is_open_sms_bshop_order         bool      是否开启bshop下单短信提醒
is_open_sms_station_order       bool      是否开启staiton下单短信提醒

mysql -> xnn_core_product_2 新增权限

tbl_permission_class
id    name    level   parent_id   create_time   update_time     delete
35  短信管理    2         6           now()         now()           0

django_content_type
id   name    app_label     model
75   短信    sms_manage   sms_manage

auth_permission
id       name         name_en                  content_type_id      codename             level2_id
455   查看短信管理    Get Sms Manage                 75           get_sms_manage             35
456   短信充值       Add Sms Recharge Record         75           add_sms_recharge_record     35
457   查看充值记录    Get Sms Recharge Record        75           get_sms_recharge_record    35
458   查看发送记录    Get Sms Send Record            75           get_sms_send_record        35
459   编辑短信设置     Edit Sms Setting              75           edit_sms_setting            35

mysql -> notify 新增库表

充值套餐包 tbl_sms_combo

id                  int
name                varchar(50)    套餐包名(eg:套餐包:1000条)
price               int(11)        套餐价格(分)
sms_nums            int(11)        套餐条数(条)
unit                varchar(5)     单位(条)
unit_price          int(3)         单价(分/条)
create_time         datetime       创建时间
modify_time         datetime       修改时间

充值记录 tbl_sms_recharge_record

id                  int(11)
station_id          varchar(11)     站点id
combo_id            int(5)          套餐id
recharge_nums       int(11)         充值条数(条)
recharge_money      int(11)         充值价格(分)
deal_code           varchar(100)    到账凭证
remarks             varchar(100)    备注
operator_name       varchar(50)     操作人
create_time         datetime        创建日期
modify_time         datetime        修改时间

短信发送记录 tbl_sms_send_record

id                  int(11)       
station_id          varchar(11)     站点id
restaurant_id       int(11)         商户id(发送的商户id)
receive_name     varchar(50)     商户名(发送的商户名)
receive_phone       int(11)         商户的收货电话(发送的手机号)
sms_content         JSON            短信内容
business_type       int(1)          发送类型(0:商城下单, 1:代下订单, 2: 用户注册)
send_count         int(10)          发送次数(只发了一次是1)
status              int(1)          发送状态(0:失败, 1:成功, 2:提交发送)
fee                 int(5)          计费数(超过70字按67字/条收费)
remarks             varchar(100)    如果失败, 该字段表示失败原因
receive_status      int(1)          用户实际接收状态
receive_description         varchar(100)    用户实际接收状态描述
create_time         datetime        发送时间
modify_time         datetime        修改时间

站点短信统计 tbl_sms_statistics

id                      int(11)
station_id              varchar(16)     站点id
total_recharge_nums     bigint(20)         站点总的充值条数
total_recharge_money    bigint(20)         站点总的充值金额(分)
balance_nums            bigint(20)         站点短信余额
create_time             datetime        发送时间
modify_time             datetime        修改时间

Admin工程

/sms/recharge_record/get 获取充值记录

接口描述
    获取短信充值记录
Method
    GET
request
    start_date      M   datetime    查询起始时间
    end_date        M   datetime    查询结束时间
    search_text     O   string      自定义搜索(站点ID或站点名)
    page_obj        O   string  起始页(不包含),默认第0页
    reverse         O   bool    是否反向查询。1:是,0:不是。默认为否。
    limit           O   int     返回条数,默认10。传0表示返回所有数据。
response
    {
        "code": 0,
        "msg": "ok",
        "data": [{
                "recharge_date": "2018-08-08 15:00",            M       string    充值日期   
                "station_id": "T7442",                          M       string    站点id
                "station_name": "去采购",                        M       string     站点名
                "partner_name": "去采购报价单",                   M       string     加盟商
                "combo_name": "1000条短信包",                    M       string     套餐包
                "recharge_money": "100.00",                     M       string     充值金额
                "recharge_nums": 1000,                          M       int        充值条数
                "deal_code": "123455asd",                       M       string     交易凭证
                "remark": "test",                               M       string     备注
                "operator_name": "iron"                         M       string     操作人
            }, ...],
        "pagination": {                         M   dict
            "more": true,                       M   bool    是否有更多数据
            "page_obj": "gtyuhbgyhbvgyhgvgy",   M   string
        }
    }

/sms/recharge_record/export 导出充值记录

接口描述
    导出充值记录
Method
    GET
request
    start_date      M   datetime    查询起始时间
    end_date        M   datetime    查询结束时间
    search_text     O   string      自定义搜索(站点ID或站点名)
reponse
    和获取充值记录返回数据一样, 但没有做分页, 把所有的数据都拉出来了

/sms/recharge_record/create 新建充值记录

接口描述
    新建充值记录
Method
    POST
request:
    station_id          M       string      站点id
    combo_id            M       int         套餐包id       
    recharge_money      M       string         套餐价(元)
    recharge_nums       M       int         套餐条数(条)
    unit_price          M       string      每条单价
    deal_code           O       string      到账凭证
    remark              O       string      备注

response:
    {
        "code": 0,
        "msg": "ok",
        "data": ""
    }

/sms/combo/get 获取套餐包

接口描述:
    获取短信套餐包
Method 
    GET
request:
    null
response:
    {
        "code": 0,
        "msg": "ok",
        "data": [{
            "id": 123,                  M       int      套餐id
            "name": "1000条短信包",      M       string    套餐名
            "price": "100.00",          M       string   套餐价格
            "sms_nums": 1000,           M       int      套餐短信条数
            "unit": "0.05"              M       string   每条单价
        }, ...]
    }

/sms/statistics_overview/get 短信统计-概况数据

接口描述
    获取短信统计-概况数据
Method
    GET
request:
    null
response:
    {
        "code": 0,
        "msg": "ok",
        "data": {
            "gm_balance": 1000,                 M       int         运营商套餐余额
            "saas_balance": 1000,               M       int         所有SaaS客户短信余额
            "saas_recharge_money": 100.00       M       float       所有SaaS客户充值金额
        }
    }

/sms/statistics_detail/get 获取短信统计-明细

接口描述
    获取短信统计-明细
method
    GET
request:
    search_text     O   string       搜索文本(站点id/站点名)
    page_obj        O   string       起始页(不包含),默认第0页
    reverse         O   bool         是否反向查询。1:是,0:不是。默认为否。
    limit           O   int          返回条数,默认10。传0表示返回所有数据。
response:
    {
        "code": 0,
        "msg": "ok",
        "data": [{
            "staiton_id": "T7442",             M       string      站点id
            "station_name": "去采购",           M       string      站点名
            "partner_name": "测试站点",         M       string      加盟商名
            "total_recharge_money": "100.00",  M       string      总的充值金额
            "total_recharge_nums": 10000,      M       int         总的购买条数
            "sms_balance": 100,                M       int         短信余额      
        }, ...],
        "pagination": {                         M   dict
            "more": true,                       M   bool    是否有更多数据
            "page_obj": "gtyuhbgyhbvgyhgvgy",   M   string
        }
    }

/sms/statistics_detail/export 导出短信统计-明细

接口描述
    导出短信统计-明细
method
    GEt
request:
    search_text     O   string      搜索文本(站点id/站点名)
response:
    和获取接口返回数据一样, 但没有做分页, 把所有数据都拉出来了

/station/create 创建新站点

接口描述
    创建新站点
method
    GET
request:
    ...
    新增
    sms_signature        O       string      公司名称(短信签名)
reponse:
    不变

/station/detail 获取站点详情

接口描述
    获取站点详情
method
    GET
request:
    不变
reponse:
    ...    
    新增
    sms_signature        M       string      公司名称(短信签名)

/station/update 更新站点信息

接口描述
    更新站点信息
method
    POST
request:
    ...
    新增
    sms_signature        O    string      公司名称(短信签名)
response:
    不变

/station/list 获取所有站点

接口描述
    获取所有站点
method
    GET
request:
    null
response:
    {
        "code": 0,
        "msg": "ok",
        "data": [{
            "_id": "T4466",         M       string      站点id
            "name": "小龙蔬菜"       M       string      站点名
            }...{
            "_id": "T11790",
            "name": "帐号总仓"
        }]
    }

station工程

/sms/balance/get 获取短信余额

接口描述
    获取短信余额
method
    GET
request:
    null
reponse:
    {
        "code": 0,
        "msg": "ok",
        "data": {
            "sms_balance": 100,         M       int     短信余额(条)
        }
    }

/sms/data_center/get 短信数据-近多少天详情

接口描述
    获取近多少天短信发送的详情
Method
    GET
request
    start_date              M           date            起始时间
    end_date                M           date            结束时间
reponse
    {
        "code": 0,
        "msg": "ok",
        "data": [{
                "send_date": "2018-07-08",      M       datetime  发送日期
                "total_send_nums": 100,         M       int     该日发送短信数量
                "send_success_nums": 90         M       int     该日发送成功数量
                "send_failed_nums": 10          M       int     该日发送失败数量
            }, ...,
            {
                "send_date": "2018-08-06",
                "total_send_nums": 100,
                "send_success_nums": 90,
                "send_failed_nums": 10
            }]    
    }

/sms/combo/get 获取短信套餐包

接口描述
    获取短信套餐包
Method
    GET
request
    null
response
    {
        "code": 0,
        "msg": "ok",
        "data": [{
            "id": 123,                  M       int     套餐id
            "name": "1000条短信包",      M       string   套餐名
            "price": "100.00",          M       string   套餐价格
            "sms_nums": 1000,           M       int     套餐短信条数
            "unit": "0.50"              M       string   每条单价
        }, ...]
    }

/sms/recharge_record/get 获取充值记录

接口描述
    获取站点的充值记录
Method
    GET
request
    start_date      M       datetime        查询起始时间
    end_date        M       datetime        查询结束时间  
    page_obj        O       string       起始页(不包含),默认第0页
    reverse         O       bool         是否反向查询。1:是,0:不是。默认为否。
    limit           O       int          返回条数,默认10。传0表示返回所有数据。         
reponse
    {
        "code": 0,
        "msg": "ok",
        "data": [{                                    M     list
            "id": 1234                                M     int
            "recharge_date": "2018-08-08 15:00",      M     string      充值日期
            "combo_name": "1000条短信包",              M      string     短信套餐包
            "recharge_money": "100.00",               M     string      金额
            "recharge_nums": 1000,                    M     int         充值条数
        }, ...],
        "pagination": {                         M   dict
            "more": true,                       M   bool    是否有更多数据
            "page_obj": "gtyuhbgyhbvgyhgvgy",   M   string
        }
    }

/sms/recharge_record/export 导出充值记录

接口描述
    导出站点的充值记录
Method
    GET
request
    start_date      M       datetime        查询起始时间
    end_date        M       datetime        查询结束时间  
response
    和获取充值记录一样, 但没有分页, 把所有的数据都拉出来的

/sms/send_record/get 获取发送记录

接口描述
    获取站点短信发送明细
Method
    GET
request
    start_date          M       datetime        查询起始时间
    end_date            M       datetime        查询结束时间
    status              O       int             状态(0:失败, 1:成功, 不传代表都拉取)   
    search_text         O       string          搜索文本(商户名或联系电话)
    page_obj            O       string       起始页(不包含),默认第0页
    reverse             O       bool         是否反向查询。1:是,0:不是。默认为否。
    limit               O       int          返回条数,默认10。传0表示返回所有数据。  
response
    {
        "code": 0,
        "msg": "ok",
        "data": [{                              M   list    发送明细
            "send_time": "2018-07-19 16:20",    M   string  发送时间
            "restaurant_id": "213123",          M   string  商户id
            "receive_name": "qcg",           M   string  商户名称
            "receive_phone": 12345121212,      M   int     联系电话
            "business_type": 0,                 M   int   业务类型(0: 代下订单, 1:商城下单)
            "status": 1,                        M   bool    接受状态, 1:成功, 0失败
            "remark": "余额不足"                 M   string   备注
        }, ...],
        "pagination": {                         M   dict
            "more": true,                       M   bool    是否有更多数据
            "page_obj": "gtyuhbgyhbvgyhgvgy",   M   string
        }
    }

/sms/send_record/export 导出发送记录

接口描述
    导出站点短信的发送明细
Method
    GET
request
    start_date          M       datetime        查询起始时间
    end_date            M       datetime        查询结束时间
    status              O       int             状态(0:失败, 1:成功, 不传代表全部)   
    search_text         O       string          搜索文本(商户名或联系电话)
response
    和获取发送记录一样, 只是没有做分页, 把所有的数据都拉出来了

/sms/customized_info/get 获取站点短信设置

接口描述
    获取站点短信设置
Method
    GET
request
    null
response
    {
        "code": 0,
        "msg": "ok",
        "data": {
            "sms_signature": "bshop下单啦",          M       string        短信签名
            "is_open_sms_bshop_order": 1,           M       bool          是否开启商城下单提醒
            "is_open_sms_station_order": 1,         M       bool          是否开启代下订单提醒
        }

/sms/customized_info/update 更新站点短信设置

接口描述
    更新站点短信设置
Method
    POST
request
    sms_signature                   M       string      短信签名
    is_open_sms_bshop_order         M       bool        是否开启商城下单提醒
    is_open_sms_station_order       M       bool        是否开启代下订单提醒
response
    {
        "code": 0,
        "msg": "ok",
        "data": ""
    }

/sms/callback 腾讯云短信回调

接口描述
    腾讯云短信回调
Method
    POST
request
    通过rmi转发到通知微服务, 详情看通知微服务短信回调接口
response
    {
        'result': 0,
        'errmsg': 'OK'
    }

gm_server_notify 通知微服务工程

/sms/send/add 添加短信发送任务

接口描述
    添加短信发送任务
Method
    POST
request
    receive_phone       M      int      发送电话
    business_type       M      int      业务类型(0: 商城下单, 1: 代下订单...)
    station_id          O      string   站点id
    restaurant_id       O      int      商户id
    receive_name        O      string   商户名
    sms_content         O      dict     短信内容

reponse
    {
        "code": 0,
        "msg": "ok",
        "data": {
            "task_id": 2    M       int  任务id
        }
    }

/sms/send/start 开始发送任务

接口描述
    开始发送任务
Method
    POST
request
    task_id         M       int     任务id
response
    {
        "code": 0,
        "msg": "ok",
        "data": ""
    }

/sms/combo/get 获取套餐包

接口描述
    获取短信套餐包
Method
    GET
request
    null
response
    {
        "code": 0,
        "msg": "ok",
        "data": [{
            "id": 123,                  M       int     套餐id
            "name": "1000条短信包",      M       string   套餐名
            "price": "100.00",          M       string   套餐价格
            "sms_nums": 1000,           M       int     套餐短信条数
            "unit": "0.50"              M       string   每条单价
        }, ...]
    }

/sms/balance/get 获取站点短信余额

接口描述
    获取站点短信余额
Method
    GET
request:
    station_id      M       string      站点id
response:
    {
        "code": 0,
        "msg": "ok",
        "data": {
            "sms_balance": 100,         M       int     短信余额
        }
    }

/sms/data_center/get 获取短信近多少天详情

接口描述
    获取短信近多少天详情
Method
    GET
request
    station_id      M      string       站点id
    start_date              M           date            起始时间
    end_date                M           date            结束时间
response
    {
        "code": 0,
        "msg": "ok",
        "data": [{
            "send_date": "2018-07-08",      M   datetime    发送时间
            "total_send_nums": 100,         M   int         总的发送数量
            "success_send_nums": 90         M   int         发送成功数
            "send_failed_nums": 10          M   int         发送失败数
        }, ...,
        {
            "send_date": "2018-08-06",
            "total_send_nums": 100,
            "success_send_nums": 90,
            "send_failed_nums": 10
        }]

    }

/sms/recharge_record/get 获取充值记录

接口描述
    获取充值记录
Method
    GET
request
    start_date          O       datetime    起始时间
    end_date            O       datetime    结束时间
    station_id          O       string      站点id
    page_obj            O       string       起始页(不包含),默认第0页
    reverse             O       bool         是否反向查询。1:是,0:不是。默认为否。
    limit               O       int          返回条数,默认10。传0表示返回所有数据。
response
    {
        "code": 0,
        "msg": "ok",
        "data": [{
            "recharge_date": "2018-08-08 15:00",            M       string    充值日期   
            "station_id": "T7442",                          M       string    站点id
            "combo_name": "1000条短信包",                    M       string     套餐包
            "recharge_money": "100.00",                     M       string     充值价格
            "recharge_nums": 1000,                          M       int        套餐条数
            "deal_code": "123455asd",                       M       string     交易凭证
            "remark": "test",                               M       string     备注
            "operator_name": "iron"                         M       string     操作人        
        }, ...],
        "pagination": {                         M   dict
            "more": true,                       M   bool    是否有更多数据
            "page_obj": "gtyuhbgyhbvgyhgvgy",   M   string
        }
    }

/sms/recharge_record/create 创建充值记录

接口描述
    创建充值记录
Method
    POST
request
    station_id          M       string      站点id
    combo_id            M       int         套餐包id       
    combo_price         M       int         套餐价(元)
    combo_nums          M       int         套餐条数(条)
    unit_price          M       string      每条单价
    deal_code           O       string      到账凭证
    remark              O       string      备注
response
    {
        "code": 0,
        "msg": "ok",
        "data": ""
    }

/sms/send_record/get 获取站点发送记录

接口描述
    获取站点发送明细
Method
    GET
request
    station_id          M       string          站点id
    start_date          M       datetime        查询起始时间
    end_date            M       datetime        查询结束时间
    status              O       int             状态(0:失败, 1:成功, 不传代表全部)   
    search_text         O       string          搜索文本(商户名或联系电话)
    page_obj            O       string          起始页(不包含),默认第0页
    reverse             O       bool            是否反向查询。1:是,0:不是。默认为否。
    limit               O       int             返回条数,默认10。传0表示返回所有数据。  
response
    {
        "code": 0,
        "msg": "ok",
        "data": [{                              M   list    发送明细
            "send_time": "2018-07-19 16:20",    M   string  发送时间
            "restaurant_id": 12314              M   int     商户id
            "receive_name": "qcg",           M   string  商户名称
            "receive_phone": 12345121212,      M   int     联系电话
            "business_type": 0,                 M   int     业务类型,0:商城下单, 1:代下订单
            "status": 1,                        M   bool    接受状态, 1:成功, 0失败
            "remark": "余额不足"                 M   string   备注
        }, ...],
        "pagination": {                         M   dict
            "more": true,                       M   bool    是否有更多数据
            "page_obj": "gtyuhbgyhbvgyhgvgy",   M   string
        }
    }

/sms/statistics_detail/get 获取短信统计-明细

接口描述
    获取短信统计-明细
method
    GET
request:
    search_text     O   string       搜索文本(站点id/站点名)
    page_obj        O   string       起始页(不包含),默认第0页
    reverse         O   bool         是否反向查询。1:是,0:不是。默认为否。
    limit           O   int          返回条数,默认10。传0表示返回所有数据。
response:
    {
        "code": 0,
        "msg": "ok",
        "data": [{
            "staiton_id": "T7442",             M       string      站点id
            "total_recharge_money": "100.00",  M       string      总的充值金额
            "total_recharge_nums": 10000,      M       int         总的购买条数
            "sms_balance": 100,                M       int         短信余额      
        }, ...],
        "pagination": {                         M   dict
            "more": true,                       M   bool    是否有更多数据
            "page_obj": "gtyuhbgyhbvgyhgvgy",   M   string
        }
    }

/sms/callback 腾讯云短信回调

接口描述
    腾讯云短信回调
Method
    POST
request
    'callback_data': [      M       dict   回调数据
        {
            "user_receive_time": "2015-10-17 08:03:04",         M   string      用户实际接收到短信的时间
            "nationcode": "86",                                 M   string      国家码
            "mobile": "13xxxxxxxxx",                            M   string      手机号码
            "report_status": "SUCCESS",                         M   string      是否收到短信
            "errmsg": "DELIVRD",                                M   string      错误码
            "description": "用户短信送达成功",                     M   string      状态描述
            "sid": "xxxxxxx"                                    M   string      本次发送唯一标识
        }
        {
            ...
        }, ...
    ]
response
    {
        "code": 0,
        "msg": "ok",
        "data": ""
    }