93 lines
3.2 KiB
JavaScript
93 lines
3.2 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 CTYun {
|
||
name = 'ctyun';
|
||
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 mockSend = systemConfig?.Sms?.mockSend;
|
||
const ctyunConfig = (0, lodash_1.get)(systemConfig, 'Sms.ctyun.0', {});
|
||
const { accessKey, securityKey, endpoint } = ctyunConfig;
|
||
(0, assert_1.assert)(accessKey, 'accessKey未配置');
|
||
(0, assert_1.assert)(securityKey, 'securityKey未配置');
|
||
return {
|
||
config: ctyunConfig,
|
||
mockSend
|
||
};
|
||
}
|
||
async syncTemplate(options, context) {
|
||
const { systemId, pageIndex, pageSize } = options;
|
||
const { config, mockSend } = await this.getConfig(context, systemId);
|
||
const { accessKey, securityKey, endpoint } = config;
|
||
const ctyunInstance = SmsSdk_1.default.getInstance('ctyun', accessKey, securityKey, endpoint);
|
||
const result = await ctyunInstance.syncTemplate({
|
||
pageIndex: pageIndex || 1,
|
||
pageSize: pageSize || 50, // pageSize必须小于或等于50
|
||
});
|
||
const { data } = result;
|
||
if (data) {
|
||
return data.map((ele) => {
|
||
return {
|
||
templateCode: ele.templateCode,
|
||
templateName: ele.templateName,
|
||
templateContent: ele.templateContent,
|
||
};
|
||
});
|
||
}
|
||
return [];
|
||
}
|
||
async sendSms(params, context) {
|
||
const { mobile, templateParam, smsTemplate } = params;
|
||
const { templateCode } = smsTemplate;
|
||
const { config, mockSend, } = await this.getConfig(context);
|
||
const { accessKey, securityKey, endpoint, defaultSignName } = config;
|
||
const ctyunInstance = SmsSdk_1.default.getInstance('ctyun', accessKey, securityKey, endpoint);
|
||
if (mockSend) {
|
||
console.log(`当前模拟发送短信,不会实际调用API`);
|
||
return {
|
||
success: true,
|
||
res: '模拟短信发送成功',
|
||
};
|
||
}
|
||
const result = await ctyunInstance.sendSms({
|
||
phoneNumber: mobile,
|
||
templateParam,
|
||
templateCode: templateCode,
|
||
signName: defaultSignName,
|
||
});
|
||
const code = result?.code || '';
|
||
if (code === 'OK') {
|
||
return {
|
||
success: true,
|
||
res: result,
|
||
};
|
||
}
|
||
return {
|
||
success: false,
|
||
res: result,
|
||
};
|
||
}
|
||
}
|
||
exports.default = CTYun;
|
||
;
|