| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | 'use strict';/** * 短信发送相关接口 * * @author CaiAoLin * @date 2018/1/25 * @version */const xmlReader = require('xmlreader');class SMS {    /**     * 构造函数     *     * @param {Object} ctx - egg全局变量     * @return {void}     */    constructor(ctx) {        this.ctx = ctx;        this.url = 'http://101.132.42.40:7862/sms';    }    /**     * 发送信息     *     * @param {String|Array} mobile - 发送的电话号码     * @param {String} content - 发送的内容     * @return {Boolean} - 发送结果     */    async send(mobile, content) {        if (mobile instanceof Array) {            mobile = mobile.join(',');        }        let result = false;        const config = this.ctx.app.config.sms;        const postData = {            action: 'send',            account: config.account,            password: config.password,            mobile,            content,            extno: config.extno,        };        try {            const response = await this.ctx.helper.sendRequest(this.url, postData, 'POST', 'text');            const xmlData = await this.xmlParse(response);            if (xmlData === undefined || xmlData.returnstatus.text() !== 'Success') {                throw '短信发送失败!';            }            result = true;        } catch (error) {            result = false;        }        return result;    }    /**     * xml解析     *     * @param {String} xml - xml数据     * @return {Object} - 解析结果     */    xmlParse(xml) {        return new Promise(function(resolve, reject) {            xmlReader.read(xml, function(errors, xmlData) {                if (errors) {                    reject('');                } else {                    resolve(xmlData.returnsms);                }            });        });    }}module.exports = SMS;
 |