diff --git a/internal/logic/public/user/unbindDeviceLogic.go b/internal/logic/public/user/unbindDeviceLogic.go index 4139438..327ae9e 100644 --- a/internal/logic/public/user/unbindDeviceLogic.go +++ b/internal/logic/public/user/unbindDeviceLogic.go @@ -202,8 +202,15 @@ func (l *UnbindDeviceLogic) logoutUnbind(userInfo *user.User, device *user.Devic } } - // 6. Kick 设备(缓存已清,重连时 FindOne 会查到最新数据) + // 6. Kick 设备 + 更新在线状态 l.svcCtx.DeviceManager.KickDevice(device.UserId, device.Identifier) + device.Online = false + if updateErr := l.svcCtx.UserModel.UpdateDevice(l.ctx, device); updateErr != nil { + l.Errorw("update device online status failed", + logger.Field("device_id", device.Id), + logger.Field("error", updateErr.Error()), + ) + } // 7. 清除该用户所有 session(旧 token 全部失效) l.clearAllSessions(userInfo.Id)