| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.DashboardController = void 0;
- const device_1 = require("../models/device");
- const clientConnection_1 = require("../models/clientConnection");
- const mqttMessage_1 = require("../models/mqttMessage");
- class DashboardController {
- static async getOverview(req, res) {
- try {
- const [deviceCount, deviceStats, connectionCount, connectionStats, connectionEventStats, messageCount, messageTypeStats, recentConnections, recentMessages] = await Promise.all([
- device_1.DeviceModel.getCount(),
- device_1.DeviceModel.getStatusStats(),
- clientConnection_1.ClientConnectionModel.getCount(),
- clientConnection_1.ClientConnectionModel.getConnectionStats(),
- clientConnection_1.ClientConnectionModel.getEventStats(),
- mqttMessage_1.MqttMessageModel.getCount(),
- mqttMessage_1.MqttMessageModel.getTypeStats(),
- clientConnection_1.ClientConnectionModel.getAll(10),
- mqttMessage_1.MqttMessageModel.getAll(10)
- ]);
- const deviceStatusCounts = {
- online: 0,
- offline: 0,
- unknown: 0
- };
- deviceStats.forEach(stat => {
- deviceStatusCounts[stat.status] = stat.count;
- });
- const connectionEventCounts = {
- connected: 0,
- disconnected: 0
- };
- connectionStats.forEach(stat => {
- if (stat.connection_type in connectionEventCounts) {
- connectionEventCounts[stat.connection_type] = stat.count;
- }
- });
- const messageTypeCounts = {
- publish: 0,
- subscribe: 0,
- unsubscribe: 0
- };
- messageTypeStats.forEach(stat => {
- messageTypeCounts[stat.message_type] = stat.count;
- });
- const dailyStats = await clientConnection_1.ClientConnectionModel.getDailyStats(7);
- const hourlyStats = await mqttMessage_1.MqttMessageModel.getHourlyStats(24);
- res.status(200).json({
- success: true,
- data: {
- summary: {
- totalDevices: deviceCount,
- onlineDevices: deviceStatusCounts.online,
- totalConnections: connectionCount,
- totalMessages: messageCount
- },
- deviceStats: deviceStatusCounts,
- connectionStats: connectionEventCounts,
- messageStats: messageTypeCounts,
- dailyStats: dailyStats || [],
- hourlyStats: hourlyStats || [],
- recentConnections: recentConnections || [],
- recentMessages: recentMessages || []
- }
- });
- }
- catch (error) {
- console.error('获取仪表板概览数据失败:', error);
- res.status(500).json({
- success: false,
- message: '获取仪表板概览数据失败',
- error: error instanceof Error ? error.message : '未知错误'
- });
- }
- }
- static async getChartData(req, res) {
- try {
- const { type, period } = req.query;
- let data;
- switch (type) {
- case 'connections':
- const days = Number(period) || 7;
- data = await clientConnection_1.ClientConnectionModel.getDailyStats(days);
- break;
- case 'messages':
- const hours = Number(period) || 24;
- data = await mqttMessage_1.MqttMessageModel.getHourlyStats(hours);
- break;
- case 'deviceStatus':
- data = await device_1.DeviceModel.getStatusStats();
- break;
- case 'messageTypes':
- data = await mqttMessage_1.MqttMessageModel.getTypeStats();
- break;
- case 'qosLevels':
- data = await mqttMessage_1.MqttMessageModel.getQosStats();
- break;
- case 'popularTopics':
- const limit = Number(period) || 10;
- data = await mqttMessage_1.MqttMessageModel.getPopularTopics(limit);
- break;
- case 'activeClients':
- const clientLimit = Number(period) || 10;
- data = await mqttMessage_1.MqttMessageModel.getActiveClients(clientLimit);
- break;
- default:
- res.status(400).json({
- success: false,
- message: '无效的图表类型'
- });
- return;
- }
- res.status(200).json({
- success: true,
- data
- });
- }
- catch (error) {
- console.error('获取图表数据失败:', error);
- res.status(500).json({
- success: false,
- message: '获取图表数据失败',
- error: error instanceof Error ? error.message : '未知错误'
- });
- }
- }
- static async getDeviceStats(req, res) {
- try {
- const stats = await device_1.DeviceModel.getDeviceStats();
- res.status(200).json({
- success: true,
- data: stats,
- message: '获取设备统计成功'
- });
- }
- catch (error) {
- res.status(500).json({
- success: false,
- message: '获取设备统计失败',
- error: error instanceof Error ? error.message : String(error)
- });
- }
- }
- static async getSystemInfo(req, res) {
- try {
- const uptimeSeconds = process.uptime();
- const days = Math.floor(uptimeSeconds / 86400);
- const hours = Math.floor((uptimeSeconds % 86400) / 3600);
- const minutes = Math.floor((uptimeSeconds % 3600) / 60);
- let uptimeStr = '';
- if (days > 0)
- uptimeStr += `${days}天 `;
- if (hours > 0 || days > 0)
- uptimeStr += `${hours}小时 `;
- uptimeStr += `${minutes}分钟`;
- res.status(200).json({
- success: true,
- data: {
- nodeVersion: process.version.replace('v', ''),
- uptime: uptimeStr,
- platform: process.platform,
- arch: process.arch,
- memoryUsage: process.memoryUsage()
- }
- });
- }
- catch (error) {
- res.status(500).json({
- success: false,
- message: '获取系统信息失败',
- error: error instanceof Error ? error.message : String(error)
- });
- }
- }
- }
- exports.DashboardController = DashboardController;
- //# sourceMappingURL=dashboardController.js.map
|