🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ### egg 发送短信逻辑 service ``` 'use strict'; const Service = require('egg').Service; class UserService extends Service { /** * 发送验证码 */ async sendCode() { //1. 获取用户手机号 const { phone } = this.ctx.request.body; //2. 缓存中查询该手机号是否存在 const sendCodePhone = await this.service.cache.get(`sendCode_${phone}`); if (sendCodePhone) this.ctx.errorHandle('您操作的太快了,验证码还未过期!', {}, 30001); //3. 生成随机四位验证码 const randomCode = this.ctx.random(); // 调试环境 不请求阿里服务器 if (!this.config.aliSMS.isopen) { await this._devCode(phone, randomCode); } //4. 请求阿里云API发送验证码 const ret = await this.service.alisms.sendSMS(phone, randomCode); if (ret.Code === "OK") { // 5.发送成功写入redis缓存 60 秒过期 this.service.cache.set(`sendCode_${phone}`, randomCode, this.config.aliSMS.expire); // 6.写入消息队列 this.ctx.succHandle('发送验证码成功!'); } } // 模拟发送短信验证码 async _devCode(phone, randomCode) { this.service.cache.set(`sendCode_${phone}`, randomCode, this.config.aliSMS.expire); this.ctx.succHandle('请求验证码成功!', { randomCode }, 30002); } } module.exports = UserService; ```