From 5ace3be63fc9133b45e7458c50f33720726f2ac8 Mon Sep 17 00:00:00 2001 From: Zhanghu Date: Tue, 13 Jan 2026 15:04:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9B=E5=90=8E=E5=8F=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DTOs/DeviceAuthDto.cs | 4 +- .../Services/DeviceService.cs | 23 +- .../Components/Pages/Devices.razor | 34 +- src/DRS9.Dashboard.Server/Program.cs | 2 +- .../Properties/launchSettings.json | 2 +- src/DRS9.Dashboard.Server/dashboard.db | Bin 118784 -> 118784 bytes .../wwwroot/device-client.html | 563 ++++++++++++++++++ 7 files changed, 618 insertions(+), 10 deletions(-) create mode 100644 src/DRS9.Dashboard.Server/wwwroot/device-client.html diff --git a/src/DRS9.Dashboard.Application/DTOs/DeviceAuthDto.cs b/src/DRS9.Dashboard.Application/DTOs/DeviceAuthDto.cs index ffed833..fad8495 100644 --- a/src/DRS9.Dashboard.Application/DTOs/DeviceAuthDto.cs +++ b/src/DRS9.Dashboard.Application/DTOs/DeviceAuthDto.cs @@ -7,9 +7,8 @@ public record DeviceRegisterRequest [Required] public string DeviceCode { get; set; } = string.Empty; - [Required] [MaxLength(200)] - public string DeviceName { get; set; } = string.Empty; + public string? DeviceName { get; set; } [MaxLength(50)] public string? DeviceType { get; set; } @@ -27,6 +26,7 @@ public record DeviceRegisterResponse public string? Token { get; set; } public string? Message { get; set; } public int DeviceId { get; set; } + public string? DeviceName { get; set; } } public record DeviceRefreshTokenRequest diff --git a/src/DRS9.Dashboard.Application/Services/DeviceService.cs b/src/DRS9.Dashboard.Application/Services/DeviceService.cs index 381eb3d..2809e7d 100644 --- a/src/DRS9.Dashboard.Application/Services/DeviceService.cs +++ b/src/DRS9.Dashboard.Application/Services/DeviceService.cs @@ -40,11 +40,23 @@ public class DeviceService }; } - // 更新设备信息 - device.DeviceName = request.DeviceName; - device.DeviceType = request.DeviceType; - device.OsVersion = request.OsVersion; - device.AppVersion = request.AppVersion; + // 更新设备信息 (如果提供了则使用,否则保留原值) + if (!string.IsNullOrWhiteSpace(request.DeviceName)) + { + device.DeviceName = request.DeviceName; + } + if (!string.IsNullOrWhiteSpace(request.DeviceType)) + { + device.DeviceType = request.DeviceType; + } + if (!string.IsNullOrWhiteSpace(request.OsVersion)) + { + device.OsVersion = request.OsVersion; + } + if (!string.IsNullOrWhiteSpace(request.AppVersion)) + { + device.AppVersion = request.AppVersion; + } device.IsActive = true; device.ActivatedAt = device.ActivatedAt ?? DateTime.UtcNow; device.LastSeenAt = DateTime.UtcNow; @@ -60,6 +72,7 @@ public class DeviceService Success = true, Token = token, DeviceId = device.Id, + DeviceName = device.DeviceName, Message = "注册成功" }; } diff --git a/src/DRS9.Dashboard.Server/Components/Pages/Devices.razor b/src/DRS9.Dashboard.Server/Components/Pages/Devices.razor index ca61737..0689c93 100644 --- a/src/DRS9.Dashboard.Server/Components/Pages/Devices.razor +++ b/src/DRS9.Dashboard.Server/Components/Pages/Devices.razor @@ -63,7 +63,39 @@ 禁用 } - @device.LastSeenAt?.ToString("MM-dd HH:mm") ?? "从未" + + @if (!device.LastSeenAt.HasValue) + { + 等待首次连接 + } + else + { + var timeDiff = DateTime.UtcNow - device.LastSeenAt.Value; + @if (timeDiff.TotalMinutes < 1) + { + 在线 + } + else if (timeDiff.TotalMinutes < 60) + { + var mins = (int)timeDiff.TotalMinutes; + @mins 分钟前 + } + else if (timeDiff.TotalHours < 24) + { + var hours = (int)timeDiff.TotalHours; + @hours 小时前 + } + else if (timeDiff.TotalDays < 7) + { + var days = (int)timeDiff.TotalDays; + @days 天前 + } + else + { + @device.LastSeenAt.Value:MM-dd HH:mm + } + } + + + + + + +
+
+ 未连接 + +
+
+ +
+ + + +
+
+ + + +