From d4f0d559cf8c6f34200d5edac5c0f6f31e6b9058 Mon Sep 17 00:00:00 2001 From: shanshanzhong Date: Wed, 6 May 2026 02:53:18 -0700 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=871?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../logic/public/user/getDeviceListLogic.go | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/internal/logic/public/user/getDeviceListLogic.go b/internal/logic/public/user/getDeviceListLogic.go index b1ea792..8f4f43d 100644 --- a/internal/logic/public/user/getDeviceListLogic.go +++ b/internal/logic/public/user/getDeviceListLogic.go @@ -34,12 +34,25 @@ func (l *GetDeviceListLogic) GetDeviceList() (resp *types.GetDeviceListResponse, return nil, err } list, count, err := l.svcCtx.UserModel.QueryDeviceListByUserIds(l.ctx, scopeUserIds) - userRespList := make([]types.UserDevice, 0) - tool.DeepCopy(&userRespList, list) - for i, d := range list { - if i < len(userRespList) { - userRespList[i].DeviceNo = tool.DeviceIdToHash(d.Id) - } + if err != nil { + return nil, err + } + // FIX: 逐条复制并设置 DeviceNo,避免 DeepCopy 批量复制后 len(userRespList) 与 list 不一致 + // 导致 if i < len(userRespList) 条件失效、只有第一条设备号被正确赋值的 bug。 + // 原始代码(保留以供对照): + // userRespList := make([]types.UserDevice, 0) + // tool.DeepCopy(&userRespList, list) + // for i, d := range list { + // if i < len(userRespList) { + // userRespList[i].DeviceNo = tool.DeviceIdToHash(d.Id) + // } + // } + userRespList := make([]types.UserDevice, 0, len(list)) + for _, d := range list { + var item types.UserDevice + tool.DeepCopy(&item, d) + item.DeviceNo = tool.DeviceIdToHash(d.Id) + userRespList = append(userRespList, item) } resp = &types.GetDeviceListResponse{ Total: count,