添加 eggjs web-server,初步支持多宝短信
This commit is contained in:
3
web-server/app/consts/consts.ts
Normal file
3
web-server/app/consts/consts.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
export const TURBO_CORE_URL = 'https://coresrv.tgamebox.cn';
|
||||
export const APP_ID = 'KbZMUfUfppLFDG7dXtNkLWbyapK0JTHY';
|
||||
export const PARM_SECRET = 'ipqw05du6ob4x130w89t31yrqd6xs005zzltcmg2zpqnvrjp1s';
|
||||
9
web-server/app/controller/account.ts
Normal file
9
web-server/app/controller/account.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import { Controller } from 'egg';
|
||||
|
||||
export default class AccountController extends Controller {
|
||||
public async getSms() {
|
||||
const { ctx } = this;
|
||||
console.log(ctx.request.body);
|
||||
ctx.body = await ctx.service.turboCore.getSms(ctx.request.body.telNo);
|
||||
}
|
||||
}
|
||||
8
web-server/app/controller/home.ts
Normal file
8
web-server/app/controller/home.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
import { Controller } from 'egg';
|
||||
|
||||
export default class HomeController extends Controller {
|
||||
public async index() {
|
||||
const { ctx } = this;
|
||||
ctx.body = await ctx.service.test.sayHi('egg');
|
||||
}
|
||||
}
|
||||
8
web-server/app/router.ts
Normal file
8
web-server/app/router.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
import { Application } from 'egg';
|
||||
|
||||
export default (app: Application) => {
|
||||
const { controller, router } = app;
|
||||
|
||||
router.get('/', controller.home.index);
|
||||
router.post('/user/getsms', controller.account.getSms);
|
||||
};
|
||||
15
web-server/app/service/Test.ts
Normal file
15
web-server/app/service/Test.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import { Service } from 'egg';
|
||||
|
||||
/**
|
||||
* Test Service
|
||||
*/
|
||||
export default class Test extends Service {
|
||||
|
||||
/**
|
||||
* sayHi to you
|
||||
* @param name - your name
|
||||
*/
|
||||
public async sayHi(name: string) {
|
||||
return `hi, ${name}`;
|
||||
}
|
||||
}
|
||||
57
web-server/app/service/TurboCore.ts
Normal file
57
web-server/app/service/TurboCore.ts
Normal file
@@ -0,0 +1,57 @@
|
||||
import { TURBO_CORE_URL, APP_ID, PARM_SECRET } from './../consts/consts';
|
||||
import { Service } from 'egg';
|
||||
const crypto = require('crypto');
|
||||
/**
|
||||
* Test Service
|
||||
*/
|
||||
export default class TurboCore extends Service {
|
||||
|
||||
/**
|
||||
* sayHi to you
|
||||
* @param name - your name
|
||||
*/
|
||||
|
||||
public async getSms(telNo: string) {
|
||||
const ctx = this.ctx;
|
||||
let body = {
|
||||
'telNo':telNo
|
||||
}
|
||||
const result = await ctx.curl(`${TURBO_CORE_URL}/user/getSms`, {
|
||||
// 必须指定 method
|
||||
method: 'POST',
|
||||
// 通过 contentType 告诉 HttpClient 以 JSON 格式发送
|
||||
contentType: 'json',
|
||||
headers: {
|
||||
'AppId': APP_ID,
|
||||
'sign': this.getTurboSign( body, PARM_SECRET)
|
||||
},
|
||||
data: body,
|
||||
// 明确告诉 HttpClient 以 JSON 格式处理返回的响应 body
|
||||
dataType: 'json',
|
||||
});
|
||||
return result.data;
|
||||
}
|
||||
|
||||
private getTurboSign(params, secret) {
|
||||
let paramsString = this.joinParamsStr(params);
|
||||
let stringToSign = paramsString;
|
||||
|
||||
if (secret) {
|
||||
stringToSign = `${stringToSign}&secret=${secret}`;
|
||||
return crypto.createHmac('sha256', secret)
|
||||
.update(stringToSign)
|
||||
.digest('hex');
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private joinParamsStr(params) {
|
||||
let signString = Object.keys(params).filter(function (key) {
|
||||
return params[key] !== undefined && params[key] !== '' && ['pfx', 'partner_key', 'sign', 'key'].indexOf(key) < 0;
|
||||
}).sort().map(function (key) {
|
||||
return key + '=' + params[key];
|
||||
}).join("&");
|
||||
return signString;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user