mirror of
https://github.com/cool-team-official/cool-admin-midway.git
synced 2024-11-02 06:33:42 +08:00
83 lines
1.9 KiB
TypeScript
83 lines
1.9 KiB
TypeScript
import { Config, Inject, Provide } from "@midwayjs/core";
|
||
import { SmsYp } from "./yp";
|
||
import { SmsAli } from "./ali";
|
||
import { SmsTx } from "./tx";
|
||
import { CoolSmsConfig } from "./interface";
|
||
|
||
@Provide()
|
||
export class CoolSms {
|
||
@Inject()
|
||
smsYp: SmsYp
|
||
|
||
@Inject()
|
||
smsAli: SmsAli
|
||
|
||
@Inject()
|
||
smsTx: SmsTx
|
||
|
||
@Config('cool.sms')
|
||
config: CoolSmsConfig;
|
||
|
||
/**
|
||
* 配置
|
||
* @param config
|
||
*/
|
||
setConfig(config: CoolSmsConfig) {
|
||
this.smsYp.setConfig(config.yp);
|
||
this.smsAli.setConfig(config.ali);
|
||
this.smsTx.setConfig(config.tx);
|
||
this.config = config;
|
||
}
|
||
|
||
/**
|
||
* 发送验证码 模板字段名为:code
|
||
* @param phone
|
||
* @param config
|
||
*/
|
||
async sendCode(phone, config?: {
|
||
signName: string;
|
||
template: string;
|
||
}) {
|
||
const code = this.generateNumber();
|
||
let params = {
|
||
code
|
||
}
|
||
await this.send(phone, this.config.tx ? [code] : params, config)
|
||
return code;
|
||
}
|
||
|
||
/**
|
||
* 发送短信
|
||
* @param phone
|
||
* @param params
|
||
* @param config
|
||
* @returns
|
||
*/
|
||
async send(phone: string, params: any, config?: {
|
||
signName: string;
|
||
template: string;
|
||
}) {
|
||
if (this.config.ali) {
|
||
return await this.smsAli.send(phone, params, config);
|
||
}
|
||
if (this.config.tx) {
|
||
return await this.smsTx.send(phone, params, config);
|
||
}
|
||
if (this.config.yp) {
|
||
return await this.smsYp.send(phone, params, config);
|
||
}
|
||
return true;
|
||
}
|
||
|
||
/**
|
||
* 生成验证码
|
||
*/
|
||
generateNumber(digits = 4) {
|
||
if (digits <= 0) {
|
||
return 0;
|
||
}
|
||
const min = Math.pow(10, digits - 1);
|
||
const max = Math.pow(10, digits) - 1;
|
||
return Math.floor(Math.random() * (max - min + 1)) + min;
|
||
}
|
||
} |