| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.DeviceModel = void 0;
- const database_1 = require("../config/database");
- class DeviceModel {
- static async getAll(limit, offset) {
- let query = 'SELECT * FROM devices ORDER BY updated_at DESC';
- const params = [];
- if (limit !== undefined) {
- query += ' LIMIT ?';
- params.push(limit);
- if (offset !== undefined) {
- query += ' OFFSET ?';
- params.push(offset);
- }
- }
- return await (0, database_1.executeQuery)(query, params);
- }
- static async getByStatus(status) {
- const query = 'SELECT * FROM devices WHERE status = ? ORDER BY updated_at DESC';
- return await (0, database_1.executeQuery)(query, [status]);
- }
- static async getByClientId(clientid) {
- const query = 'SELECT * FROM devices WHERE clientid = ?';
- const devices = await (0, database_1.executeQuery)(query, [clientid]);
- return devices.length > 0 ? devices[0] : null;
- }
- static async getBySearch(searchTerm) {
- const query = 'SELECT * FROM devices WHERE clientid LIKE ? OR device_name LIKE ? ORDER BY updated_at DESC';
- const searchPattern = `%${searchTerm}%`;
- return await (0, database_1.executeQuery)(query, [searchPattern, searchPattern]);
- }
- static async getCountByStatus(status) {
- const query = 'SELECT COUNT(*) as count FROM devices WHERE status = ?';
- const result = await (0, database_1.executeQuery)(query, [status]);
- return result[0].count;
- }
- static async getCountBySearch(searchTerm) {
- const query = 'SELECT COUNT(*) as count FROM devices WHERE clientid LIKE ? OR device_name LIKE ?';
- const searchPattern = `%${searchTerm}%`;
- const result = await (0, database_1.executeQuery)(query, [searchPattern, searchPattern]);
- return result[0].count;
- }
- static async getCount() {
- const query = 'SELECT COUNT(*) as count FROM devices';
- const result = await (0, database_1.executeQuery)(query);
- return result[0].count;
- }
- static async getStatusStats() {
- const connection = await database_1.config.getConnection().getConnection();
- try {
- const [rows] = await connection.execute(`SELECT
- status,
- COUNT(*) as count
- FROM devices
- GROUP BY status`);
- return rows;
- }
- finally {
- connection.release();
- }
- }
- static async getDeviceStats() {
- const connection = await database_1.config.getConnection().getConnection();
- try {
- const [totalResult] = await connection.execute('SELECT COUNT(*) as total FROM devices');
- const total = totalResult[0].total;
- const [onlineResult] = await connection.execute("SELECT COUNT(*) as online FROM devices WHERE status = 'online'");
- const online = onlineResult[0].online;
- const [offlineResult] = await connection.execute("SELECT COUNT(*) as offline FROM devices WHERE status = 'offline'");
- const offline = offlineResult[0].offline;
- return {
- total,
- online,
- offline,
- onlineRate: total > 0 ? Math.round((online / total) * 100) : 0
- };
- }
- finally {
- connection.release();
- }
- }
- static async create(deviceData) {
- const query = `
- INSERT INTO devices (clientid, device_name, username, firmware_version, device_ip_port, last_ip_port, status, last_event_time, last_online_time, last_offline_time, online_duration, connect_count)
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
- `;
- const values = [
- deviceData.clientid,
- deviceData.device_name || null,
- deviceData.username || null,
- deviceData.firmware_version || null,
- deviceData.device_ip_port || null,
- deviceData.last_ip_port || null,
- deviceData.status || 'unknown',
- deviceData.last_event_time || null,
- deviceData.last_online_time || null,
- deviceData.last_offline_time || null,
- deviceData.online_duration || 0,
- deviceData.connect_count || 0
- ];
- const result = await (0, database_1.executeQuery)(query, values);
- const insertId = result.insertId;
- return this.getByClientId(deviceData.clientid);
- }
- static async update(clientId, updateData) {
- console.log('DeviceModel.update 被调用,clientId:', clientId, 'updateData:', updateData);
- const fields = [];
- const values = [];
- if (updateData.device_name !== undefined) {
- fields.push('device_name = ?');
- values.push(updateData.device_name);
- console.log('添加 device_name 字段到更新列表:', updateData.device_name);
- }
- if (updateData.username !== undefined) {
- fields.push('username = ?');
- values.push(updateData.username);
- }
- if (updateData.firmware_version !== undefined) {
- fields.push('firmware_version = ?');
- values.push(updateData.firmware_version);
- }
- if (updateData.device_ip_port !== undefined) {
- fields.push('device_ip_port = ?');
- values.push(updateData.device_ip_port);
- }
- if (updateData.last_ip_port !== undefined) {
- fields.push('last_ip_port = ?');
- values.push(updateData.last_ip_port);
- }
- if (updateData.status !== undefined) {
- fields.push('status = ?');
- values.push(updateData.status);
- }
- if (updateData.last_event_time !== undefined) {
- fields.push('last_event_time = ?');
- values.push(updateData.last_event_time);
- }
- if (updateData.last_online_time !== undefined) {
- fields.push('last_online_time = ?');
- values.push(updateData.last_online_time);
- }
- if (updateData.last_offline_time !== undefined) {
- fields.push('last_offline_time = ?');
- values.push(updateData.last_offline_time);
- }
- if (updateData.online_duration !== undefined) {
- fields.push('online_duration = ?');
- values.push(updateData.online_duration);
- }
- if (updateData.connect_count !== undefined) {
- fields.push('connect_count = ?');
- values.push(updateData.connect_count);
- }
- if (updateData.rssi !== undefined) {
- fields.push('rssi = ?');
- values.push(updateData.rssi);
- }
- fields.push('updated_at = NOW()');
- values.push(clientId);
- const query = `
- UPDATE devices
- SET ${fields.join(', ')}
- WHERE clientid = ?
- `;
- console.log('执行更新SQL:', query);
- console.log('参数值:', values);
- const result = await (0, database_1.executeQuery)(query, values);
- console.log('更新结果:', result);
- return result.affectedRows > 0;
- }
- static async updateOnlineDuration(clientId, duration) {
- const query = 'UPDATE devices SET online_duration = online_duration + ? WHERE clientid = ?';
- const result = await (0, database_1.executeQuery)(query, [duration, clientId]);
- return result.affectedRows > 0;
- }
- static async deleteByClientId(clientId) {
- const query = 'DELETE FROM devices WHERE clientid = ?';
- const result = await (0, database_1.executeQuery)(query, [clientId]);
- return result.affectedRows > 0;
- }
- }
- exports.DeviceModel = DeviceModel;
- //# sourceMappingURL=device.js.map
|