application.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. 'use strict';
  2. /**
  3. * [BAR 短信网]
  4. * @type {[type]}
  5. */
  6. const BAR = Symbol('Application#dxw');
  7. /**
  8. * [dwx_options_merge description]
  9. * @author szjcomo
  10. * @createTime 2020-08-08
  11. * @param {Object} options [description]
  12. * @return {[type]} [description]
  13. */
  14. const dwx_options_merge = function(options = {},config = {}) {
  15. if(options.data && !options.data.accesskey) options.data.accesskey = config.dxw.accesskey;
  16. if(options.data && !options.data.secret) options.data.secret = config.dxw.secret;
  17. if(options.data && !options.data.sign) options.data.sign = config.dxw.sign;
  18. return options;
  19. }
  20. /**
  21. * [exports 短信开发接口]
  22. * @type {Object}
  23. */
  24. module.exports = {
  25. /**
  26. * [dxw 获取短信网对象]
  27. * @author szjcomo
  28. * @createTime 2020-09-04
  29. * @return {[type]} [description]
  30. */
  31. get dxw() {
  32. let app = this;
  33. if(app[BAR]) return app[BAR];
  34. return {
  35. /**
  36. * [single_send 发送单条短信]
  37. * @author szjcomo
  38. * @createTime 2020-08-08
  39. * @param {Object} options
  40. * options.data.accesskey [平台分配给用户的accesskey,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项]
  41. * options.data.secret [平台分配给用户的secret,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项]
  42. * options.data.sign [平台上申请的接口短信签名或者签名ID(须审核通过),采用utf8编码] [可传 不传依赖全局配置项]
  43. * options.data.templateId [平台上申请的接口短信模板Id(须审核通过)] [必传]
  44. * options.data.mobile [接收短信的手机号码(只支持单个手机号)] [必传]
  45. * options.data.content [发送的短信内容是模板变量内容,多个变量中间用##或者$$隔开,采用utf8编码] [必传]
  46. * @return {[type]} [description]
  47. */
  48. send_single:async function(options = {}) {
  49. let push_url = 'http://api.1cloudsp.com/api/v2/single_send';
  50. let push_data = Object.assign({dataType:'json',method:'POST',timeout:3000},dwx_options_merge(options,app.config));
  51. let result = await app.curl(push_url,push_data);
  52. return result.data;
  53. },
  54. /**
  55. * [send_all 批量发送短信]
  56. * @author szjcomo
  57. * @createTime 2020-08-08
  58. * @param {Object} options [description]
  59. * options.data.accesskey [平台分配给用户的accesskey,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项]
  60. * options.data.secret [平台分配给用户的secret,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项]
  61. * options.data.sign [平台上申请的接口短信签名或者签名ID(须审核通过),采用utf8编码] [可传 不传依赖全局配置项]
  62. * options.data.templateId [平台上申请的接口短信模板Id(须审核通过)] [必传]
  63. * options.data.mobile [接收短信的手机号码,多个号码以半角逗号,隔开 注:最大支持5万] [必传]
  64. * options.data.scheduleSendTime [短信定时发送时间,格式为:2018-01-01 18:00:00;参数如果为空表示立即发送] [可传]
  65. * options.data.data [该字段用于发送个性短信,mobile和content字段不需要填写,该字段json字符串,json的key是手机号,value是短信内容变量,等同于上面的content 包含多个变量中间用##或者$$隔开,采用utf8编码] [可传]
  66. * 示列 {"13700000001":"女士##10:10##物流公司##000000","13700000000":"先生##9:40##快递公司##1234567"}
  67. * @return {[type]} [description]
  68. */
  69. send_all:async function(options = {}) {
  70. let push_url = 'http://api.1cloudsp.com/api/v2/send';
  71. let result = await app.curl(push_url,Object.assign({dataType:'json',method:'POST'},dwx_options_merge(options,app.config)));
  72. return result.data;
  73. },
  74. /**
  75. * [create_sign 创建短信签名]
  76. * @author szjcomo
  77. * @createTime 2020-08-08
  78. * @param {Object} options [description]
  79. * options.data.accesskey [平台分配给用户的accesskey,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项]
  80. * options.data.secret [平台分配给用户的secret,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项]
  81. * options.data.sign [平台上申请的接口短信签名或者签名ID(须审核通过),采用utf8编码] [必传 示例【测试签名】]
  82. * options.data.description [简单描述使用场景] [可传 ]
  83. * @return {[type]} [description]
  84. */
  85. create_sign:async function(options = {}) {
  86. if(!options.data.sign) throw new Error('创建短信签名接口必须有签名字段');
  87. let push_url = 'http://api.1cloudsp.com/open/api/addSign';
  88. let result = await app.curl(push_url,Object.assign({dataType:'json',method:'POST'},dwx_options_merge(options,app.config)));
  89. return result.data;
  90. },
  91. /**
  92. * [update_sign 更新签名]
  93. * @author szjcomo
  94. * @createTime 2020-08-13
  95. * @param {Object} options [description]
  96. * options.data.accesskey [平台分配给用户的accesskey,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项]
  97. * options.data.secret [平台分配给用户的secret,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项]
  98. * options.data.sign [平台上申请的接口短信签名或者签名ID(须审核通过),采用utf8编码] [必传 示例【测试签名】]
  99. * options.data.id [签名id] [必传 示例【测试签名】]
  100. * options.data.description [简单描述使用场景] [可传 ]
  101. * @return {[type]} [description]
  102. */
  103. update_sign:async function(options = {}) {
  104. if(!options.data.sign) throw new Error('创建短信签名接口必须有签名字段');
  105. if(!options.data.id) throw new Error('签名id接口必须有签名字段');
  106. let push_url = 'http://api.1cloudsp.com/open/api/modifySign';
  107. let result = await app.curl(push_url,Object.assign({dataType:'json',method:'POST'},dwx_options_merge(options,app.config)));
  108. return result.data;
  109. },
  110. /**
  111. * [select_sign 查询所有签名]
  112. * @author szjcomo
  113. * @createTime 2020-08-13
  114. * @param {Object} options [description]
  115. * @return {[type]} [description]
  116. */
  117. select_sign:async function(options = {}) {
  118. let push_url = 'http://api.1cloudsp.com/query/signlist';
  119. let result = await app.curl(push_url,Object.assign({dataType:'json',method:'POST'},dwx_options_merge(options,app.config)));
  120. return result.data;
  121. },
  122. /**
  123. * [create_template 创建模版]
  124. * @author szjcomo
  125. * @createTime 2020-08-08
  126. * @param {Object} options [description]
  127. * options.data.accesskey [平台分配给用户的accesskey,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项]
  128. * options.data.secret [平台分配给用户的secret,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项]
  129. * options.data.templateName [模板名称] [必传 示例【模板名称】]
  130. * options.data.categoryId [模板类型] [必传 1 验证码 2 通知||订单 3 营销]
  131. * options.data.template [短信模板,采用utf8编码] [必传 示例 你的验证码是{1}]
  132. * options.data.description [简单描述使用场景] [必传 示例 公司名称]
  133. * @return {[type]} [description]
  134. */
  135. create_template:async function(options = {}) {
  136. let push_url = 'http://api.1cloudsp.com/open/api/addTemplate';
  137. let result = await app.curl(push_url,Object.assign({dataType:'json',method:'POST'},dwx_options_merge(options,app.config)));
  138. return result.data;
  139. },
  140. /**
  141. * [update_templdate 修改模版]
  142. * @author szjcomo
  143. * @createTime 2020-08-13
  144. * @param {Object} options [description]
  145. * options.data.accesskey [平台分配给用户的accesskey,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项]
  146. * options.data.secret [平台分配给用户的secret,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项]
  147. * options.data.templateName [模板名称] [必传 示例【模板名称】]
  148. * options.data.id [模板ID] [示例 1]
  149. * options.data.template [短信模板,采用utf8编码] [必传 示例 你的验证码是{1}]
  150. * options.data.description [简单描述使用场景] [必传 示例 公司名称]
  151. * @return {[type]} [description]
  152. */
  153. update_templdate:async function(options = {}) {
  154. let push_url = 'http://api.1cloudsp.com/open/api/modifyTemplate';
  155. let result = await app.curl(push_url,Object.assign({dataType:'json',method:'POST'},dwx_options_merge(options,app.config)));
  156. return result.data;
  157. },
  158. /**
  159. * [select_template 短信所有模版查询]
  160. * @author szjcomo
  161. * @createTime 2020-08-08
  162. * @param {Object} options [description]
  163. * options.data.accesskey [平台分配给用户的accesskey,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项]
  164. * options.data.secret [平台分配给用户的secret,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项]
  165. * @return {[type]} [description]
  166. */
  167. select_template:async function(options = {}) {
  168. let push_url = 'http://api.1cloudsp.com/query/templatelist';
  169. let result = await app.curl(push_url,Object.assign({dataType:'json',method:'POST'},dwx_options_merge(options,app.config)));
  170. return result.data;
  171. },
  172. /**
  173. * [find_template 模版详情]
  174. * @author szjcomo
  175. * @createTime 2020-08-08
  176. * @param {Object} options [description]
  177. * options.data.accesskey [平台分配给用户的accesskey,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项]
  178. * options.data.secret [平台分配给用户的secret,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项]
  179. * options.data.templateId [模板ID] [必传 示例 1]
  180. * @return {[type]} [description]
  181. */
  182. find_template:async function(options = {}) {
  183. let push_url = 'http://api.1cloudsp.com/query/getTemplate';
  184. let result = await app.curl(push_url,Object.assign({dataType:'json',method:'POST'},dwx_options_merge(options,app.config)));
  185. return result.data;
  186. },
  187. /**
  188. * [phone_info 手机号码所在地查询]
  189. * @author szjcomo
  190. * @createTime 2020-08-08
  191. * @param {Object} options [description]
  192. * options.data.accesskey [平台分配给用户的accesskey,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项]
  193. * options.data.secret [平台分配给用户的secret,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项]
  194. * options.data.mobiles [多个手机号用英文逗号分开] [必传 手机号]
  195. * @return {[type]} [description]
  196. */
  197. phone_info:async function(options = {}) {
  198. let push_url = 'http://api.1cloudsp.com/open/api/qry/mobiles/section';
  199. let result = await app.curl(push_url,Object.assign({dataType:'json',method:'POST'},dwx_options_merge(options,app.config)));
  200. return result.data;
  201. },
  202. /**
  203. * [dw_status 获取短信状态]
  204. * @author szjcomo
  205. * @createTime 2020-08-08
  206. * @param {Object} options [description]
  207. * options.data.accesskey [平台分配给用户的accesskey,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项]
  208. * options.data.secret [平台分配给用户的secret,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项]
  209. * @return {[type]} [description]
  210. */
  211. dw_status:async function(options = {}) {
  212. let push_url = 'http://api.1cloudsp.com/report/status';
  213. let result = await app.curl(push_url,Object.assign({dataType:'json',method:'POST'},dwx_options_merge(options,app.config)));
  214. return result.data;
  215. },
  216. /**
  217. * [account_money 账户余额查询]
  218. * @author szjcomo
  219. * @createTime 2020-08-08
  220. * @param {Object} options [description]
  221. * options.data.accesskey [平台分配给用户的accesskey,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项]
  222. * options.data.secret [平台分配给用户的secret,登录系统首页可点击"我的秘钥"查看] [可传 不传依赖全局配置项]
  223. * @return {[type]} [description]
  224. */
  225. account_money:async function(options = {}) {
  226. let push_url = 'http://api.1cloudsp.com/query/account';
  227. let result = await app.curl(push_url,Object.assign({dataType:'json',method:'POST'},dwx_options_merge(options,app.config)));
  228. return result.data;
  229. },
  230. /**
  231. * [get_user_reply 获取用户回复的信息]
  232. * @author szjcomo
  233. * @createTime 2020-08-13
  234. * @param {Object} options [description]
  235. * @return {[type]} [description]
  236. */
  237. select_replys:async function(options = {}) {
  238. let push_url = 'http://api.1cloudsp.com/report/up';
  239. let result = await app.curl(push_url,Object.assign({dataType:'json',method:'POST'},dwx_options_merge(options,app.config)));
  240. return result.data;
  241. }
  242. };
  243. }
  244. };