123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- /**
- * @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
|