179 lines
7.8 KiB
JavaScript
179 lines
7.8 KiB
JavaScript
"use strict";
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.addMessageSent = exports.registerMessagePropsConverter = void 0;
|
||
var tslib_1 = require("tslib");
|
||
var uuid_1 = require("oak-domain/lib/utils/uuid");
|
||
var assert_1 = require("oak-domain/lib/utils/assert");
|
||
var SmsCoverter;
|
||
var WechatConverter;
|
||
function registerMessagePropsConverter(converter) {
|
||
var sms = converter.sms, wechat = converter.wechat;
|
||
SmsCoverter = sms;
|
||
WechatConverter = wechat;
|
||
}
|
||
exports.registerMessagePropsConverter = registerMessagePropsConverter;
|
||
function tryAddMessageSent(message, channel, context) {
|
||
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
||
var systemId, props, type, _a, application, config2, appId, dispersedData, _b, _c, _d;
|
||
var _e;
|
||
return tslib_1.__generator(this, function (_f) {
|
||
switch (_f.label) {
|
||
case 0:
|
||
if (!WechatConverter) {
|
||
return [2 /*return*/, 0];
|
||
}
|
||
systemId = message.systemId, props = message.props, type = message.type;
|
||
return [4 /*yield*/, context.select('application', {
|
||
data: {
|
||
id: 1,
|
||
name: 1,
|
||
config: 1,
|
||
type: 1,
|
||
systemId: 1,
|
||
style: 1,
|
||
},
|
||
filter: {
|
||
type: 'wechatPublic',
|
||
systemId: systemId,
|
||
},
|
||
}, {})];
|
||
case 1:
|
||
_a = tslib_1.__read.apply(void 0, [_f.sent(), 1]), application = _a[0];
|
||
config2 = application.config;
|
||
appId = config2.appId;
|
||
switch (channel) {
|
||
case 'weChat': {
|
||
dispersedData = WechatConverter(type, props, appId);
|
||
break;
|
||
}
|
||
default: {
|
||
break;
|
||
}
|
||
}
|
||
if (!dispersedData) {
|
||
return [2 /*return*/, 0];
|
||
}
|
||
_c = (_b = context).operate;
|
||
_d = ['messageSent'];
|
||
_e = {};
|
||
return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()];
|
||
case 2: return [4 /*yield*/, _c.apply(_b, _d.concat([(_e.id = _f.sent(),
|
||
_e.action = 'create',
|
||
_e.data = {
|
||
messageId: message.id,
|
||
data: dispersedData,
|
||
channel: channel,
|
||
},
|
||
_e), {}]))];
|
||
case 3:
|
||
_f.sent();
|
||
return [2 /*return*/, 1];
|
||
}
|
||
});
|
||
});
|
||
}
|
||
function addMessageSent(message, context) {
|
||
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
||
var weight, _a, result, count, result, count2, result;
|
||
return tslib_1.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
weight = message.weight;
|
||
_a = weight;
|
||
switch (_a) {
|
||
case 'high': return [3 /*break*/, 1];
|
||
case 'medium': return [3 /*break*/, 3];
|
||
case 'low': return [3 /*break*/, 9];
|
||
}
|
||
return [3 /*break*/, 11];
|
||
case 1: return [4 /*yield*/, Promise.all([
|
||
tryAddMessageSent(message, 'wechat', context),
|
||
tryAddMessageSent(message, 'sms', context),
|
||
])];
|
||
case 2:
|
||
result = _b.sent();
|
||
return [2 /*return*/, result.reduce(function (a, b) { return a || b; })];
|
||
case 3: return [4 /*yield*/, context.count('messageSent', {
|
||
filter: {
|
||
messageId: message.id,
|
||
},
|
||
}, {})];
|
||
case 4:
|
||
count = _b.sent();
|
||
if (!(count < 1)) return [3 /*break*/, 7];
|
||
return [4 /*yield*/, Promise.all([
|
||
tryAddMessageSent(message, 'wechat', context),
|
||
])];
|
||
case 5:
|
||
result = _b.sent();
|
||
count2 = result.reduce(function (a, b) { return a || b; });
|
||
if (count2 > 0) {
|
||
return [2 /*return*/, count2];
|
||
}
|
||
return [4 /*yield*/, tryAddMessageSent(message, 'sms', context)];
|
||
case 6: return [2 /*return*/, _b.sent()];
|
||
case 7: return [4 /*yield*/, tryAddMessageSent(message, 'sms', context)];
|
||
case 8: return [2 /*return*/, _b.sent()];
|
||
case 9: return [4 /*yield*/, Promise.all([
|
||
tryAddMessageSent(message, 'wechat', context),
|
||
])];
|
||
case 10:
|
||
result = _b.sent();
|
||
return [2 /*return*/, result.reduce(function (a, b) { return a || b; })];
|
||
case 11:
|
||
{
|
||
(0, assert_1.assert)(false);
|
||
}
|
||
_b.label = 12;
|
||
case 12: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
}
|
||
exports.addMessageSent = addMessageSent;
|
||
var triggers = [
|
||
{
|
||
name: '当创建message时,创建相应的messageSent',
|
||
entity: 'message',
|
||
action: 'create',
|
||
when: 'before',
|
||
fn: function (_a, context, params) {
|
||
var operation = _a.operation;
|
||
return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
||
var data, filter, fn;
|
||
return tslib_1.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
data = operation.data, filter = operation.filter;
|
||
fn = function (messageData) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
||
var result;
|
||
return tslib_1.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0: return [4 /*yield*/, addMessageSent(messageData, context)];
|
||
case 1:
|
||
result = _a.sent();
|
||
if (result === 0) {
|
||
Object.assign(messageData, {
|
||
iState: 'fail',
|
||
});
|
||
}
|
||
return [2 /*return*/];
|
||
}
|
||
});
|
||
}); };
|
||
if (!(data instanceof Array)) return [3 /*break*/, 1];
|
||
(0, assert_1.assert)('不存在一对多的情况');
|
||
return [3 /*break*/, 3];
|
||
case 1: return [4 /*yield*/, fn(data)];
|
||
case 2:
|
||
_b.sent();
|
||
_b.label = 3;
|
||
case 3: return [2 /*return*/, 0];
|
||
}
|
||
});
|
||
});
|
||
}
|
||
},
|
||
];
|
||
exports.default = triggers;
|