/** * @class UniStatReportDataReceiver uni统计上报数据接收器 * @function report 上报数据调度处理函数 */ const { parseUrlParams } = require('../shared') const SessionLog = require('./mod/sessionLog') const PageLog = require('./mod/pageLog') const EventLog = require('./mod/eventLog') const ErrorLog = require('./mod/errorLog') const Device = require('./mod/device') class UniStatReportDataReceiver { /** * @description 上报数据调度处理函数 * @param {Object} params 基础上报参数 * @param {Object} context 请求附带的上下文信息 */ async report(params, context) { let res = { code: 0, msg: 'success' } if (!params || !params.requests) { return { code: 200, msg: 'Invild params' } } // JSON参数解析 const requestParam = JSON.parse(params.requests) if (!requestParam || requestParam.length === 0) { return { code: 200, msg: 'Invild params' } } // 日志填充 const sessionParams = [] const pageParams = [] const eventParams = [] const errorParams = [] const device = new Device() for (const ri in requestParam) { //参数解析 const urlParams = parseUrlParams(requestParam[ri], context) if (!urlParams.ak) { return { code: 201, msg: 'Not found appid' } } if (!urlParams.lt) { return { code: 202, msg: 'Not found this log type' } } switch (parseInt(urlParams.lt)) { // 会话日志 case 1: { sessionParams.push(urlParams) break } // 页面日志 case 3: case 11: { pageParams.push(urlParams) break } // 事件日志 case 21: { eventParams.push(urlParams) break } // 错误日志 case 31: { errorParams.push(urlParams) break } //unipush信息绑定 case 101: { res = await device.bindPush(urlParams) break } default: { console.log('Invalid type by param "lt:' + urlParams.lt + '"') break } } } //会话日志填充 if (sessionParams.length > 0) { const sessionLog = new SessionLog() res = await sessionLog.batchFill(sessionParams) } //页面日志填充 if (pageParams.length > 0) { const pageLog = new PageLog() res = await pageLog.fill(pageParams) } //事件日志填充 if (eventParams.length > 0) { const eventLog = new EventLog() res = await eventLog.fill(eventParams) } //错误日志填充 if (errorParams.length > 0) { const errorLog = new ErrorLog() res = await errorLog.fill(errorParams) } return res } } module.exports = UniStatReportDataReceiver