From 50dbc52432c1b974554f25c0cbf5601a141a8baf Mon Sep 17 00:00:00 2001 From: huang Date: Mon, 30 Mar 2026 10:18:30 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20C=E7=AB=AF=E8=B5=84=E4=BA=A7=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E8=AE=BE=E5=A4=87=E8=A1=A5=E5=85=85=E5=B7=B2=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5=E6=95=B0(client=5Fnumber)=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Gateway sync-info 返回的 client_number 字段未在整条数据链路中传递, 导致 C 端资产详情的设备实时状态缺少已连接客户端数。 修改范围: - Gateway 模型 SyncDeviceInfoResp 新增 ClientNumber - B 端 DTO DeviceGatewayInfo 新增 ClientNumber - C 端 DTO DeviceRealtimeInfo 新增 ClientNumber - 两层映射函数同步补充字段传递 --- internal/gateway/models.go | 5 +++-- internal/handler/app/client_asset.go | 4 ++++ internal/model/dto/asset_dto.go | 1 + internal/model/dto/client_asset_dto.go | 1 + internal/service/asset/service.go | 1 + 5 files changed, 10 insertions(+), 2 deletions(-) diff --git a/internal/gateway/models.go b/internal/gateway/models.go index 3bd8618..b2541e9 100644 --- a/internal/gateway/models.go +++ b/internal/gateway/models.go @@ -216,8 +216,9 @@ type SyncDeviceInfoResp struct { LANIP string `json:"lan_ip" description:"局域网网关IP地址"` // 连接相关(D-10 补全) - MaxClients FlexInt `json:"max_clients" description:"最大连接客户端数"` - ConnectTime string `json:"connect_time" description:"设备本次联网时间(秒)"` + MaxClients FlexInt `json:"max_clients" description:"最大连接客户端数"` + ClientNumber FlexInt `json:"client_number" description:"当前已连接客户端数"` + ConnectTime string `json:"connect_time" description:"设备本次联网时间(秒)"` // 设备属性(D-10 补全) Status FlexInt `json:"status" description:"设备状态:1=正常,0=禁用"` diff --git a/internal/handler/app/client_asset.go b/internal/handler/app/client_asset.go index 3c8d5a0..f2b3903 100644 --- a/internal/handler/app/client_asset.go +++ b/internal/handler/app/client_asset.go @@ -653,6 +653,10 @@ func mapDeviceGatewayInfoToClientInfo(g *dto.DeviceGatewayInfo) *dto.DeviceRealt v := int64(*g.MaxClients) info.MaxClients = &v } + if g.ClientNumber != nil { + v := int64(*g.ClientNumber) + info.ClientNumber = &v + } info.SoftwareVersion = g.SoftwareVersion if g.SwitchMode != nil { // SwitchMode 在 B 端为字符串("0"/"1"),C 端为整型(0/1),需解析转换 diff --git a/internal/model/dto/asset_dto.go b/internal/model/dto/asset_dto.go index 68d94cc..d82572c 100644 --- a/internal/model/dto/asset_dto.go +++ b/internal/model/dto/asset_dto.go @@ -184,6 +184,7 @@ type DeviceGatewayInfo struct { // 设备属性 CurrentIccid *string `json:"current_iccid,omitempty" description:"当前使用的ICCID"` MaxClients *int `json:"max_clients,omitempty" description:"最大连接客户端数"` + ClientNumber *int `json:"client_number,omitempty" description:"当前已连接客户端数"` SoftwareVersion *string `json:"software_version,omitempty" description:"软件版本号"` SwitchMode *string `json:"switch_mode,omitempty" description:"切卡模式:0=自动,1=手动"` SyncInterval *int `json:"sync_interval,omitempty" description:"信息上报周期(秒)"` diff --git a/internal/model/dto/client_asset_dto.go b/internal/model/dto/client_asset_dto.go index 34cc1ed..88d5d0e 100644 --- a/internal/model/dto/client_asset_dto.go +++ b/internal/model/dto/client_asset_dto.go @@ -103,6 +103,7 @@ type DeviceRealtimeInfo struct { // === 设备属性 === CurrentIccid *string `json:"current_iccid,omitempty" description:"当前使用的ICCID"` MaxClients *int64 `json:"max_clients,omitempty" description:"最大连接客户端数"` + ClientNumber *int64 `json:"client_number,omitempty" description:"当前已连接客户端数"` SoftwareVersion *string `json:"software_version,omitempty" description:"软件版本号"` SwitchMode *int `json:"switch_mode,omitempty" description:"切卡模式(0:自动, 1:手动)"` SyncInterval *int64 `json:"sync_interval,omitempty" description:"信息上报周期(秒)"` diff --git a/internal/service/asset/service.go b/internal/service/asset/service.go index e6f2a2b..d679945 100644 --- a/internal/service/asset/service.go +++ b/internal/service/asset/service.go @@ -385,6 +385,7 @@ func mapSyncRespToDeviceGatewayInfo(r *gateway.SyncDeviceInfoResp) *dto.DeviceGa LimitSpeed: flexIntPtr(r.LimitSpeed), CurrentIccid: strPtr(r.CurrentIccid), MaxClients: flexIntPtr(r.MaxClients), + ClientNumber: flexIntPtr(r.ClientNumber), SoftwareVersion: strPtr(r.SoftwareVersion), SwitchMode: strPtr(r.SwitchMode), SyncInterval: flexIntPtr(r.SyncInterval),