99 lines
3.6 KiB
JavaScript
99 lines
3.6 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
const tslib_1 = require("tslib");
|
|
const assert_1 = require("oak-domain/lib/utils/assert");
|
|
const lodash_1 = require("oak-domain/lib/utils/lodash");
|
|
const SmsSdk_1 = tslib_1.__importDefault(require("oak-external-sdk/lib/SmsSdk"));
|
|
class Tencent {
|
|
name = 'tencent';
|
|
async getConfig(context, systemId) {
|
|
let system;
|
|
if (systemId) {
|
|
[system] = await context.select('system', {
|
|
data: {
|
|
id: 1,
|
|
config: 1,
|
|
},
|
|
filter: {
|
|
id: systemId,
|
|
}
|
|
}, {
|
|
dontCollect: true,
|
|
});
|
|
}
|
|
else {
|
|
system = context.getApplication().system;
|
|
}
|
|
const { config: systemConfig } = system;
|
|
const tencentConfig = (0, lodash_1.get)(systemConfig, 'Sms.tencent.0', {});
|
|
const { secretId, secretKey, region, endpoint, smsSdkAppId } = tencentConfig;
|
|
(0, assert_1.assert)(secretId, 'secretId未配置');
|
|
(0, assert_1.assert)(secretKey, 'secretKey未配置');
|
|
(0, assert_1.assert)(region, 'region未配置');
|
|
(0, assert_1.assert)(endpoint, 'endpoint未配置');
|
|
(0, assert_1.assert)(smsSdkAppId, 'smsSdkAppId未配置');
|
|
return tencentConfig;
|
|
}
|
|
async syncTemplate(systemId, context) {
|
|
const { secretId, secretKey, region, endpoint, } = await this.getConfig(context, systemId);
|
|
const tencentInstance = SmsSdk_1.default.getInstance('tencent', secretId, secretKey, endpoint, region);
|
|
const result = await tencentInstance.syncTemplate({
|
|
International: 0,
|
|
Limit: 100,
|
|
Offset: 0,
|
|
});
|
|
// // todo templateName: string,
|
|
// templateCode: string,
|
|
// templateContent: string
|
|
const { DescribeTemplateStatusSet } = result;
|
|
if (DescribeTemplateStatusSet) {
|
|
return DescribeTemplateStatusSet.map((ele) => {
|
|
return {
|
|
templateCode: ele.TemplateId.toString(),
|
|
templateName: ele.TemplateName,
|
|
templateContent: ele.TemplateContent
|
|
};
|
|
});
|
|
}
|
|
return [];
|
|
}
|
|
async sendSms(params, context) {
|
|
const { mobile, templateParam, smsTemplate } = params;
|
|
const { templateCode } = smsTemplate;
|
|
const { secretId, secretKey, region, endpoint, defaultSignName, smsSdkAppId, } = await this.getConfig(context);
|
|
const tencentInstance = SmsSdk_1.default.getInstance('tencent', secretId, secretKey, endpoint, region);
|
|
// const params: SendSmsRequest = {
|
|
// PhoneNumberSet: [],
|
|
// TemplateParamSet: [],
|
|
// SmsSdkAppId: '',
|
|
// TemplateId: '',
|
|
// };
|
|
const TemplateParamSet = [];
|
|
if (templateParam) {
|
|
Object.keys(templateParam).forEach((ele) => {
|
|
TemplateParamSet.push(templateParam[ele]);
|
|
});
|
|
}
|
|
const result = await tencentInstance.sendSms({
|
|
PhoneNumberSet: [mobile],
|
|
SmsSdkAppId: smsSdkAppId,
|
|
TemplateParamSet,
|
|
TemplateId: templateCode,
|
|
SignName: defaultSignName,
|
|
});
|
|
const code = result?.SendStatusSet?.[0]?.Code || '';
|
|
if (code === 'Ok') {
|
|
return {
|
|
success: true,
|
|
res: result,
|
|
};
|
|
}
|
|
return {
|
|
success: false,
|
|
res: result,
|
|
};
|
|
}
|
|
}
|
|
exports.default = Tencent;
|
|
;
|