[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类