t-comm
Version:
专业、稳定、纯粹的工具库
233 lines (226 loc) • 7.5 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var tslib_es6 = require('../../tslib.es6-01322ba9.js');
var axios = require('axios');
var tam_api_credential = require('./credential.js');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
function getCustomEventQuery(_a) {
var startTime = _a.startTime,
endTime = _a.endTime,
projectId = _a.projectId,
_b = _a.env,
env = _b === void 0 ? 'production' : _b;
var envStr = '';
if (env === 'production') {
envStr = ' and "env"=\'production\' ';
}
return "select delta(count) as allCount from event_url_statistics where time >= ".concat(startTime, "s and time <= ").concat(endTime, "s and id='").concat(projectId, "' ").concat(envStr, " group by \"name\" slimit 1000");
}
function flattenEventData(data) {
return data.reduce(function (acc, item) {
var _a, _b, _c;
var key = (_a = item.tags) === null || _a === void 0 ? void 0 : _a.name;
if (!key) {
return acc;
}
acc[key] = ((_c = (_b = item.values) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c[1]) || 0;
return acc;
}, {});
}
/**
* 获取自定义事件数据
* @ignore
* @param {object} options 配置
* @param {number} options.startTime 开始时间,格式如 1655282977
* @param {number} options.endTime 结束时间,格式如 1655282977
* @param {number} options.projectId 项目Id
* @param {object} options.secretInfo 密钥信息
* @param {string} [options.env] 环境,默认为production
* @returns {Promise<object>} 自定义事件数据
* @example
*
* getCustomEventData({
* startTime: 1665383837,
* endTime: 1665470227,
* projectId: 57706,
* secretInfo: {
* getPwdCode,
* encrypt,
* apiKey: '',
* loginName: '',
* },
* }).then(resp => {
* console.log(resp)
* })
*
* // 结果如下:
*
* {
* AI_PLAYER_EVENT_0: 7319,
* AI_PLAYER_EVENT_14: 14,
* AI_PLAYER_EVENT_300001: 6600,
* AI_PLAYER_EVENT_4: 10,
* LAUNCH_GAME_FAIL_QQ: 170,
* LAUNCH_GAME_FAIL_WX: 25,
* LAUNCH_GAME_SUC_GP_HELPER: 31,
* LAUNCH_GAME_SUC_QQ: 1179,
* }
*/
function getCustomEventData(_a) {
var _b, _c;
var startTime = _a.startTime,
endTime = _a.endTime,
projectId = _a.projectId,
_d = _a.env,
env = _d === void 0 ? 'production' : _d,
secretInfo = _a.secretInfo;
return tslib_es6.__awaiter(this, void 0, void 0, function () {
var credential, result, res;
return tslib_es6.__generator(this, function (_e) {
switch (_e.label) {
case 0:
return [4 /*yield*/, tam_api_credential.getCredential(secretInfo)];
case 1:
credential = _e.sent();
return [4 /*yield*/, axios__default["default"]({
method: 'POST',
url: '/api/interface/monitor/queryData',
data: {
Namespace: 'TAM-v1',
Query: getCustomEventQuery({
startTime: startTime,
endTime: endTime,
projectId: projectId,
env: env
})
},
headers: tslib_es6.__assign({}, credential)
})];
case 2:
result = _e.sent();
res = [];
try {
/**
* res格式为:
* body: {
* Response: {
* RequestId: '22561d33ea8254619d56c05a-183c5c8b617',
* Result: '{"request_id":"22561d33ea8254619d56c05a-183c5c8b617","results":[]}'
* }
* },
*/
res = JSON.parse(result.data.Response.Result) || {};
/**
* res:
* {
* "request_id": "22561d33ea8254619d56c05a-183c5c8b617",
* "results": [{
* "statement_id": 0,
* "series": [{
* "name": "event_url_statistics",
* "tags": {
* "name": "PAGE_INDEX"
* },
* "columns": ["time", "allCount"],
* "values": [
* [0, 13907]
* ]
* }, {
* "name": "event_url_statistics",
* "tags": {
* "name": "LAUNCH_GAME_SUC_WX"
* },
* "columns": ["time", "allCount"],
* "values": [
* [0, 94]
* ]
* }, {
* "name": "event_url_statistics",
* "tags": {
* "name": "PAGE_AI_ROOM"
* },
* "columns": ["time", "allCount"],
* "values": [
* [0, 1502]
* ]
* }],
* "total": 3
* }]
* }
*/
res = ((_c = (_b = res === null || res === void 0 ? void 0 : res.results) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.series) || [];
} catch (e) {}
return [2 /*return*/, flattenEventData(res)];
}
});
});
}
/**
* 获取多个项目的自定义事件数据
* @ignore
* @param options 配置
*/
function getMultiCustomEventData(_a) {
var startTime = _a.startTime,
endTime = _a.endTime,
_b = _a.env,
env = _b === void 0 ? 'production' : _b,
secretInfo = _a.secretInfo,
projectIdMap = _a.projectIdMap;
return tslib_es6.__awaiter(this, void 0, void 0, function () {
var res, projectIdList, _i, projectIdList_1, projectId, list, _c, projectIdList_2, projectId, info, extraData;
return tslib_es6.__generator(this, function (_d) {
switch (_d.label) {
case 0:
res = {};
projectIdList = Object.keys(projectIdMap);
if (!projectIdList.length) return [2 /*return*/];
_i = 0, projectIdList_1 = projectIdList;
_d.label = 1;
case 1:
if (!(_i < projectIdList_1.length)) return [3 /*break*/, 4];
projectId = projectIdList_1[_i];
return [4 /*yield*/, getCustomEventData({
startTime: startTime,
endTime: endTime,
projectId: +projectId,
env: env,
secretInfo: secretInfo
})];
case 2:
list = _d.sent();
res[projectId] = list;
_d.label = 3;
case 3:
_i++;
return [3 /*break*/, 1];
case 4:
_c = 0, projectIdList_2 = projectIdList;
_d.label = 5;
case 5:
if (!(_c < projectIdList_2.length)) return [3 /*break*/, 8];
projectId = projectIdList_2[_c];
info = projectIdMap[projectId];
if (!info.extraProjectId) return [3 /*break*/, 7];
return [4 /*yield*/, getCustomEventData({
startTime: startTime,
endTime: endTime,
projectId: info.extraProjectId,
env: env,
secretInfo: secretInfo
})];
case 6:
extraData = _d.sent();
res[projectId].extraData = extraData;
_d.label = 7;
case 7:
_c++;
return [3 /*break*/, 5];
case 8:
return [2 /*return*/, res];
}
});
});
}
exports.getMultiCustomEventData = getMultiCustomEventData;