import Window from '../core/Window' import DBService from '../db/DBService' import logger from '../logger/Logger' import Object from '../model/Object' import BaseEvent from '../core/BaseEvent' // 监听每天计算用户数据事件 export default class DailyUserDataEvent extends BaseEvent { async callback(window: Window) { try { let result = window.getResult() let user2Sessions: Object = {} for (const key in result) { const value = result[key] let fields = key.split("|||") let date = fields[0] let userName = fields[1] let { selectRouter, time } = value if (!user2Sessions[userName]) { user2Sessions[userName] = [] } user2Sessions[userName].push({ date, time, selectRouter }) } let data: string[][] = [] for (const userName in user2Sessions) { const sessions = user2Sessions[userName] let date = sessions[0]["date"] let selectRouter = sessions[0]["selectRouter"] let time = 0 let sessionCount = sessions.length for (let i = 0; i < sessions.length; i++) { time += sessions[i]["time"] } data.push([date, userName, selectRouter, time, sessionCount]) } let dbService = new DBService() let sql = "INSERT INTO daily_user_data (date, userName, selectRouter, time, sessionCount) VALUES ?" let { err } = await dbService.insert(sql, [data]) if (err) { logger.info(err) } else { logger.info(`插入每天用户数据 ${data.length}`) } } catch (error) { logger.info(error) } } }