t-comm
Version:
专业、稳定、纯粹的工具库
257 lines (250 loc) • 8.42 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var _regeneratorRuntime = require('@babel/runtime/regenerator');
var tslib_es6 = require('../../tslib.es6-0d92ef81.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 _regeneratorRuntime__default = /*#__PURE__*/_interopDefaultLegacy(_regeneratorRuntime);
var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
function getCustomEventQuery(_ref) {
var startTime = _ref.startTime,
endTime = _ref.endTime,
projectId = _ref.projectId,
_ref$env = _ref.env,
env = _ref$env === void 0 ? 'production' : _ref$env;
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(_ref2) {
var startTime = _ref2.startTime,
endTime = _ref2.endTime,
projectId = _ref2.projectId,
_ref2$env = _ref2.env,
env = _ref2$env === void 0 ? 'production' : _ref2$env,
secretInfo = _ref2.secretInfo;
var _a, _b;
return tslib_es6.__awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee() {
var credential, result, res;
return _regeneratorRuntime__default["default"].wrap(function (_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
_context.next = 1;
return tam_api_credential.getCredential(secretInfo);
case 1:
credential = _context.sent;
_context.next = 2;
return 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: Object.assign({}, credential)
});
case 2:
result = _context.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 = ((_b = (_a = res === null || res === void 0 ? void 0 : res.results) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.series) || [];
} catch (e) {}
return _context.abrupt("return", flattenEventData(res));
case 3:
case "end":
return _context.stop();
}
}, _callee);
}));
}
/**
* 获取多个项目的自定义事件数据
* @ignore
* @param options 配置
*/
function getMultiCustomEventData(_ref3) {
var startTime = _ref3.startTime,
endTime = _ref3.endTime,
_ref3$env = _ref3.env,
env = _ref3$env === void 0 ? 'production' : _ref3$env,
secretInfo = _ref3.secretInfo,
projectIdMap = _ref3.projectIdMap;
return tslib_es6.__awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee2() {
var res, projectIdList, _i, _projectIdList, projectId, list, _i2, _projectIdList2, _projectId, info, extraData;
return _regeneratorRuntime__default["default"].wrap(function (_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
res = {};
projectIdList = Object.keys(projectIdMap);
if (projectIdList.length) {
_context2.next = 1;
break;
}
return _context2.abrupt("return");
case 1:
_i = 0, _projectIdList = projectIdList;
case 2:
if (!(_i < _projectIdList.length)) {
_context2.next = 5;
break;
}
projectId = _projectIdList[_i];
_context2.next = 3;
return getCustomEventData({
startTime: startTime,
endTime: endTime,
projectId: +projectId,
env: env,
secretInfo: secretInfo
});
case 3:
list = _context2.sent;
res[projectId] = list;
case 4:
_i++;
_context2.next = 2;
break;
case 5:
_i2 = 0, _projectIdList2 = projectIdList;
case 6:
if (!(_i2 < _projectIdList2.length)) {
_context2.next = 9;
break;
}
_projectId = _projectIdList2[_i2];
info = projectIdMap[_projectId];
if (!info.extraProjectId) {
_context2.next = 8;
break;
}
_context2.next = 7;
return getCustomEventData({
startTime: startTime,
endTime: endTime,
projectId: info.extraProjectId,
env: env,
secretInfo: secretInfo
});
case 7:
extraData = _context2.sent;
res[_projectId].extraData = extraData;
case 8:
_i2++;
_context2.next = 6;
break;
case 9:
return _context2.abrupt("return", res);
case 10:
case "end":
return _context2.stop();
}
}, _callee2);
}));
}
exports.getMultiCustomEventData = getMultiCustomEventData;