|
|
|
'use strict';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Express router of aliyun/
|
|
|
|
*/
|
|
|
|
|
|
|
|
const express = require('express');
|
|
|
|
const {default: common} = require('./common.js');
|
|
|
|
|
|
|
|
const {default: aliyunSmsClient} = require('./aliyunSmsClient');
|
|
|
|
const {default: defaultConfig, getCustomConfigs: getCustomConfigs} = require('./conf/config');
|
|
|
|
|
|
|
|
const router = express.Router();
|
|
|
|
|
|
|
|
let customConfig = null;
|
|
|
|
|
|
|
|
//发送注册验证码短信接口
|
|
|
|
/**
|
|
|
|
* @phoneNumber: 手机号码
|
|
|
|
* @codeNumber: 4位数字的验证码
|
|
|
|
* @action: ['register', 'login']
|
|
|
|
* @sign: 签名
|
|
|
|
*/
|
|
|
|
router.post('/sendverifycode', async (req, res) => {
|
|
|
|
let phoneNumber = req.body.phoneNumber;
|
|
|
|
let codeNumber = req.body.codeNumber;
|
|
|
|
let action = req.body.action ? req.body.action : 'register';
|
|
|
|
let sign = req.body.sign;
|
|
|
|
|
|
|
|
let data = {code: 0, message: ''};
|
|
|
|
|
|
|
|
if (!phoneNumber || !codeNumber || !sign) {
|
|
|
|
data.message = '参数不能为空';
|
|
|
|
}else if (common.isPhoneNumber(phoneNumber) == false) {
|
|
|
|
data.message = '手机号码格式错误';
|
|
|
|
}else if (common.isVerifyCode(codeNumber) == false) {
|
|
|
|
data.message = '验证码格式错误,必须是4位数的数字';
|
|
|
|
}else {
|
|
|
|
//使用默认配置
|
|
|
|
let myConfig = defaultConfig;
|
|
|
|
|
|
|
|
//加载自定义配置
|
|
|
|
if (!customConfig) {
|
|
|
|
customConfig = await getCustomConfigs('./conf/custom_config.json');
|
|
|
|
}
|
|
|
|
|
|
|
|
//使用自定义配置
|
|
|
|
myConfig = customConfig;
|
|
|
|
|
|
|
|
let paramsCheck = {};
|
|
|
|
for (const key in req.body) {
|
|
|
|
if (key != 'sign') {
|
|
|
|
paramsCheck[key] = req.body[key];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
let mySign = common.sign(paramsCheck, myConfig.secret);
|
|
|
|
if (mySign.toLowerCase() != sign.toLowerCase()) {
|
|
|
|
data.message = `签名 ${sign} 不匹配,请确保密钥正确及签名方法跟文档一致`;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!data.message) {
|
|
|
|
let signName = 'Ta荐',
|
|
|
|
templateCode = action == 'register' ? 'SMS_465895580' : 'SMS_465915662',
|
|
|
|
templateParam = `{"code":"${codeNumber}"}`;
|
|
|
|
|
|
|
|
let sended = await aliyunSmsClient.send(myConfig, signName, templateCode, templateParam, phoneNumber);
|
|
|
|
if (sended) {
|
|
|
|
data.code = 1;
|
|
|
|
data.message = '验证码发送成功';
|
|
|
|
}else {
|
|
|
|
data.message = '验证码发送失败,请稍后重试';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return res.status(200).json(data);
|
|
|
|
});
|
|
|
|
|
|
|
|
exports.default = router;
|