|
@@ -0,0 +1,55 @@
|
|
|
+'use strict';
|
|
|
+
|
|
|
+const { Controller } = require('egg');
|
|
|
+const sms = require('@alicloud/dysmsapi20170525');
|
|
|
+const OpenApi = require('@alicloud/openapi-client');
|
|
|
+const Util = require('@alicloud/tea-util');
|
|
|
+const _ = require('lodash');
|
|
|
+const { BusinessError, ErrorCode } = require('naf-core').Error;
|
|
|
+const assert = require('assert');
|
|
|
+
|
|
|
+class HomeController extends Controller {
|
|
|
+ async index() {
|
|
|
+ const { ctx } = this;
|
|
|
+ ctx.body = 'hi, egg';
|
|
|
+ }
|
|
|
+
|
|
|
+ async sendMessage() {
|
|
|
+ const { config, template, params = {}, phone } = this.ctx.request.body;
|
|
|
+ console.log(config, template, params, phone);
|
|
|
+ assert(config, '缺少服务设置');
|
|
|
+ assert(template, '缺少消息模');
|
|
|
+ assert(phone, '缺少发送对象');
|
|
|
+ const appConfig = _.get(this.app.config.appConfig, config);
|
|
|
+ const tt = _.get(appConfig, `template.${template}`);
|
|
|
+ const cc = _.pick(appConfig, [ 'accessKeyId', 'accessKeySecret' ]);
|
|
|
+ const client = await this.createClient(cc);
|
|
|
+ // 设置参数
|
|
|
+ tt.phoneNumbers = phone;
|
|
|
+ tt.templateParam = JSON.stringify(params);
|
|
|
+ const sendSmsRequest = new sms.SendSmsRequest(tt);
|
|
|
+ const runtime = new Util.RuntimeOptions({});
|
|
|
+ try {
|
|
|
+ // 复制代码运行请自行打印 API 的返回值
|
|
|
+ const res = await client.sendSmsWithOptions(sendSmsRequest, runtime);
|
|
|
+ if (res.body.code !== 'OK') {
|
|
|
+ throw new BusinessError(ErrorCode.SERVICE_FAULT, `${_.get(res.body.message)}`);
|
|
|
+ }
|
|
|
+ this.ctx.ok();
|
|
|
+ } catch (error) {
|
|
|
+ // 如有需要,请打印 error
|
|
|
+ Util.assertAsString(error.message);
|
|
|
+ throw new BusinessError(ErrorCode.SERVICE_FAULT, `${error.message}`);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // api生成客户端
|
|
|
+ async createClient({ accessKeyId, accessKeySecret }) {
|
|
|
+ const config = new OpenApi.Config({ accessKeyId, accessKeySecret });
|
|
|
+ config.endpoint = 'dysmsapi.aliyuncs.com';
|
|
|
+ const client = new sms.default(config);
|
|
|
+ return client;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+module.exports = HomeController;
|