[TOC]
### 封裝基于eggJS短信發送類 Service 層
```
'use strict';
// 引入阿里SDK
const Core = require('@alicloud/pop-core');
const Service = require('egg').Service;
/**
* 阿里短信驗證碼封裝類
*/
class AlismsService extends Service {
/**
* 發送短信
* @param { String } phone 用戶手機號
* @param { String } code 生成的隨機驗證碼
*/
async sendSMS(phone, code) {
const client = await this._client();
const params = await this._params(phone, code);
const requestOption = await this._requestOption();
try {
const ret = await this._send(client, params, requestOption);
// {"Message":"OK","RequestId":"80A35575-6DD3-4A7D-B4AD-723F918CBBA5","BizId":"627317463804615179^0","Code":"OK"}
return JSON.parse(ret);
} catch (err) {
this.ctx.errorHandle(err)
}
}
async _client() {
return new Core({
accessKeyId: this.config.aliSMS.accessKeyId,
accessKeySecret: this.config.aliSMS.accessSecret,
endpoint: 'https://dysmsapi.aliyuncs.com',
apiVersion: '2017-05-25'
});
}
async _params(phone, code) {
return {
"RegionId": this.config.aliSMS.regionId,
"PhoneNumbers": `${phone}`,
"SignName": this.config.aliSMS.SignName,
"TemplateCode": this.config.aliSMS.TemplateCode,
"TemplateParam": `{\"code\":${code}}`
}
}
async _requestOption() {
return {
method: 'POST'
}
}
async _send(client, params, requestOption) {
return new Promise((resolve, reject) => {
client.request('SendSms', params, requestOption).then((result) => {
resolve(JSON.stringify(result))
}, (ex) => {
reject(ex)
})
})
}
}
module.exports = AlismsService;
```
- 概述
- 起步
- 跨域配置
- 路徑別名
- 路由
- api版本控制
- 錯誤和異常
- 全局異常處理
- 數據庫
- 創建遷移文件
- sequelize數據類型
- 配置
- 新增
- 查詢
- 條件查詢
- 模糊查詢
- 排序查詢
- 聚合查詢
- 分組查詢
- 分頁查詢
- 修改
- 刪除
- 獲取器
- 修改器
- 靜態屬性
- 字段驗證
- 外鍵約束
- 關聯模型
- 一對一
- 一對多
- 左外連接
- 多對多
- 字段顯示隱藏
- 事務
- 字段自增
- 驗證層
- egg-validate
- indicative驗證器
- egg-validate-plus
- betterValidate
- 校驗規則
- 中間件
- 安全
- 數據加密
- 單向加密
- 示例代碼
- 封裝egg加密
- 上傳
- path模塊
- 單文件上傳
- 多文件上傳
- 按照日期存儲
- 工具函數
- egg常用工具函數
- 緩存
- 配置緩存插件
- 設置緩存
- 獲取緩存
- 刪除緩存
- 消息隊列
- rabbitMQ
- 安裝
- 簡單隊列
- 工作隊列
- 工作隊列(dispach分發)
- 消息應答和持久化
- redis
- 數據類型
- 字符串類型(String)
- 哈希類型(Hash)
- 列表(List)
- 無序集合(Set)
- 可排序集合(Zset)
- 郵件系統
- nodeMailer
- 第三方模塊
- 生成隨機數
- JWT
- JWT鑒權
- 生成Token
- 短信服務
- 阿里大魚短信驗證碼
- 發送短信邏輯
- 阿里短信Node類