'use strict'; /** * [BAR 短信网] * @type {[type]} */ const BAR = Symbol('Application#dxw'); /** * [dwx_options_merge description] * @author szjcomo * @createTime 2020-08-08 * @param {Object} options [description] * @return {[type]} [description] */ const dwx_options_merge = function(options = {},config = {}) { if(options.data && !options.data.accesskey) options.data.accesskey = config.dxw.accesskey; if(options.data && !options.data.secret) options.data.secret = config.dxw.secret; if(options.data && !options.data.sign) options.data.sign = config.dxw.sign; return options; } /** * [exports 短信开发接口] * @type {Object} */ module.exports = { /** * [dxw 获取短信网对象] * @author szjcomo * @createTime 2020-09-04 * @return {[type]} [description] */ get dxw() { let app = this; if(app[BAR]) return app[BAR]; return { /** * [single_send 发送单条短信] * @author szjcomo * @createTime 2020-08-08 * @param {Object} options * options.data.accesskey [平台分配给用户的accesskey,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项] * options.data.secret [平台分配给用户的secret,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项] * options.data.sign [平台上申请的接口短信签名或者签名ID(须审核通过),采用utf8编码] [可传 不传依赖全局配置项] * options.data.templateId [平台上申请的接口短信模板Id(须审核通过)] [必传] * options.data.mobile [接收短信的手机号码(只支持单个手机号)] [必传] * options.data.content [发送的短信内容是模板变量内容,多个变量中间用##或者$$隔开,采用utf8编码] [必传] * @return {[type]} [description] */ send_single:async function(options = {}) { let push_url = 'http://api.1cloudsp.com/api/v2/single_send'; let push_data = Object.assign({dataType:'json',method:'POST',timeout:3000},dwx_options_merge(options,app.config)); let result = await app.curl(push_url,push_data); return result.data; }, /** * [send_all 批量发送短信] * @author szjcomo * @createTime 2020-08-08 * @param {Object} options [description] * options.data.accesskey [平台分配给用户的accesskey,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项] * options.data.secret [平台分配给用户的secret,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项] * options.data.sign [平台上申请的接口短信签名或者签名ID(须审核通过),采用utf8编码] [可传 不传依赖全局配置项] * options.data.templateId [平台上申请的接口短信模板Id(须审核通过)] [必传] * options.data.mobile [接收短信的手机号码,多个号码以半角逗号,隔开 注:最大支持5万] [必传] * options.data.scheduleSendTime [短信定时发送时间,格式为:2018-01-01 18:00:00;参数如果为空表示立即发送] [可传] * options.data.data [该字段用于发送个性短信,mobile和content字段不需要填写,该字段json字符串,json的key是手机号,value是短信内容变量,等同于上面的content 包含多个变量中间用##或者$$隔开,采用utf8编码] [可传] * 示列 {"13700000001":"女士##10:10##物流公司##000000","13700000000":"先生##9:40##快递公司##1234567"} * @return {[type]} [description] */ send_all:async function(options = {}) { let push_url = 'http://api.1cloudsp.com/api/v2/send'; let result = await app.curl(push_url,Object.assign({dataType:'json',method:'POST'},dwx_options_merge(options,app.config))); return result.data; }, /** * [create_sign 创建短信签名] * @author szjcomo * @createTime 2020-08-08 * @param {Object} options [description] * options.data.accesskey [平台分配给用户的accesskey,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项] * options.data.secret [平台分配给用户的secret,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项] * options.data.sign [平台上申请的接口短信签名或者签名ID(须审核通过),采用utf8编码] [必传 示例【测试签名】] * options.data.description [简单描述使用场景] [可传 ] * @return {[type]} [description] */ create_sign:async function(options = {}) { if(!options.data.sign) throw new Error('创建短信签名接口必须有签名字段'); let push_url = 'http://api.1cloudsp.com/open/api/addSign'; let result = await app.curl(push_url,Object.assign({dataType:'json',method:'POST'},dwx_options_merge(options,app.config))); return result.data; }, /** * [update_sign 更新签名] * @author szjcomo * @createTime 2020-08-13 * @param {Object} options [description] * options.data.accesskey [平台分配给用户的accesskey,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项] * options.data.secret [平台分配给用户的secret,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项] * options.data.sign [平台上申请的接口短信签名或者签名ID(须审核通过),采用utf8编码] [必传 示例【测试签名】] * options.data.id [签名id] [必传 示例【测试签名】] * options.data.description [简单描述使用场景] [可传 ] * @return {[type]} [description] */ update_sign:async function(options = {}) { if(!options.data.sign) throw new Error('创建短信签名接口必须有签名字段'); if(!options.data.id) throw new Error('签名id接口必须有签名字段'); let push_url = 'http://api.1cloudsp.com/open/api/modifySign'; let result = await app.curl(push_url,Object.assign({dataType:'json',method:'POST'},dwx_options_merge(options,app.config))); return result.data; }, /** * [select_sign 查询所有签名] * @author szjcomo * @createTime 2020-08-13 * @param {Object} options [description] * @return {[type]} [description] */ select_sign:async function(options = {}) { let push_url = 'http://api.1cloudsp.com/query/signlist'; let result = await app.curl(push_url,Object.assign({dataType:'json',method:'POST'},dwx_options_merge(options,app.config))); return result.data; }, /** * [create_template 创建模版] * @author szjcomo * @createTime 2020-08-08 * @param {Object} options [description] * options.data.accesskey [平台分配给用户的accesskey,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项] * options.data.secret [平台分配给用户的secret,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项] * options.data.templateName [模板名称] [必传 示例【模板名称】] * options.data.categoryId [模板类型] [必传 1 验证码 2 通知||订单 3 营销] * options.data.template [短信模板,采用utf8编码] [必传 示例 你的验证码是{1}] * options.data.description [简单描述使用场景] [必传 示例 公司名称] * @return {[type]} [description] */ create_template:async function(options = {}) { let push_url = 'http://api.1cloudsp.com/open/api/addTemplate'; let result = await app.curl(push_url,Object.assign({dataType:'json',method:'POST'},dwx_options_merge(options,app.config))); return result.data; }, /** * [update_templdate 修改模版] * @author szjcomo * @createTime 2020-08-13 * @param {Object} options [description] * options.data.accesskey [平台分配给用户的accesskey,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项] * options.data.secret [平台分配给用户的secret,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项] * options.data.templateName [模板名称] [必传 示例【模板名称】] * options.data.id [模板ID] [示例 1] * options.data.template [短信模板,采用utf8编码] [必传 示例 你的验证码是{1}] * options.data.description [简单描述使用场景] [必传 示例 公司名称] * @return {[type]} [description] */ update_templdate:async function(options = {}) { let push_url = 'http://api.1cloudsp.com/open/api/modifyTemplate'; let result = await app.curl(push_url,Object.assign({dataType:'json',method:'POST'},dwx_options_merge(options,app.config))); return result.data; }, /** * [select_template 短信所有模版查询] * @author szjcomo * @createTime 2020-08-08 * @param {Object} options [description] * options.data.accesskey [平台分配给用户的accesskey,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项] * options.data.secret [平台分配给用户的secret,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项] * @return {[type]} [description] */ select_template:async function(options = {}) { let push_url = 'http://api.1cloudsp.com/query/templatelist'; let result = await app.curl(push_url,Object.assign({dataType:'json',method:'POST'},dwx_options_merge(options,app.config))); return result.data; }, /** * [find_template 模版详情] * @author szjcomo * @createTime 2020-08-08 * @param {Object} options [description] * options.data.accesskey [平台分配给用户的accesskey,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项] * options.data.secret [平台分配给用户的secret,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项] * options.data.templateId [模板ID] [必传 示例 1] * @return {[type]} [description] */ find_template:async function(options = {}) { let push_url = 'http://api.1cloudsp.com/query/getTemplate'; let result = await app.curl(push_url,Object.assign({dataType:'json',method:'POST'},dwx_options_merge(options,app.config))); return result.data; }, /** * [phone_info 手机号码所在地查询] * @author szjcomo * @createTime 2020-08-08 * @param {Object} options [description] * options.data.accesskey [平台分配给用户的accesskey,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项] * options.data.secret [平台分配给用户的secret,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项] * options.data.mobiles [多个手机号用英文逗号分开] [必传 手机号] * @return {[type]} [description] */ phone_info:async function(options = {}) { let push_url = 'http://api.1cloudsp.com/open/api/qry/mobiles/section'; let result = await app.curl(push_url,Object.assign({dataType:'json',method:'POST'},dwx_options_merge(options,app.config))); return result.data; }, /** * [dw_status 获取短信状态] * @author szjcomo * @createTime 2020-08-08 * @param {Object} options [description] * options.data.accesskey [平台分配给用户的accesskey,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项] * options.data.secret [平台分配给用户的secret,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项] * @return {[type]} [description] */ dw_status:async function(options = {}) { let push_url = 'http://api.1cloudsp.com/report/status'; let result = await app.curl(push_url,Object.assign({dataType:'json',method:'POST'},dwx_options_merge(options,app.config))); return result.data; }, /** * [account_money 账户余额查询] * @author szjcomo * @createTime 2020-08-08 * @param {Object} options [description] * options.data.accesskey [平台分配给用户的accesskey,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项] * options.data.secret [平台分配给用户的secret,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项] * @return {[type]} [description] */ account_money:async function(options = {}) { let push_url = 'http://api.1cloudsp.com/query/account'; let result = await app.curl(push_url,Object.assign({dataType:'json',method:'POST'},dwx_options_merge(options,app.config))); return result.data; }, /** * [get_user_reply 获取用户回复的信息] * @author szjcomo * @createTime 2020-08-13 * @param {Object} options [description] * @return {[type]} [description] */ select_replys:async function(options = {}) { let push_url = 'http://api.1cloudsp.com/report/up'; let result = await app.curl(push_url,Object.assign({dataType:'json',method:'POST'},dwx_options_merge(options,app.config))); return result.data; } }; } };