hi-server/docs/设备移出和邀请码优化/ACCEPTANCE_设备移出和邀请码优化.md

1.7 KiB
Raw Blame History

设备移出和邀请码优化 - 验收报告

修复内容回顾

1. 设备移出后未自动退出

  • 修复点 1:在 bindEmailWithVerificationLogic.go 中,当设备从一个用户迁移到另一个用户(如绑定邮箱时),立即调用 KickDevice 踢出原用户的 WebSocket 连接。
  • 修复点 2:在设备迁移时,清理了 Redis 中的设备缓存和 Session 缓存,并从 user_sessions 集合中移除了 Session ID。
  • 修复点 3:在 unbindDeviceLogic.go 中,解绑设备时补充了 user_sessions 集合的清理逻辑,确保 Session 被完全移除。

2. 邀请码错误提示不友好

  • 修复点:在 bindInviteCodeLogic.go 中,捕获 gorm.ErrRecordNotFound 错误,并返回错误码 20009 (InviteCodeError) 和提示 "无邀请码"。

验证结果

自动化验证

  • 代码编译通过 (go build ./...)
  • 静态检查通过

场景验证(逻辑推演)

场景 1设备B绑定邮箱后被移除

  1. 设备B绑定邮箱执行迁移逻辑。
  2. KickDevice(originalUserId, deviceIdentifier) 被调用 -> 设备B的 WebSocket 连接断开。
  3. Redis 中 device:identifiersession:id 被删除 -> Token 失效。
  4. 用户在设备A上操作移除设备B -> unbindDeviceLogic 执行 -> 再次尝试踢出和清理(防御性)。
  5. 结果设备B立即离线且无法继续使用。

场景 2输入错误邀请码

  1. 调用绑定接口, FindOneByReferCode 返回 RecordNotFound
  2. 逻辑捕获错误,返回 InviteCodeError
  3. 结果:前端收到 20009 错误码和 "无邀请码" 提示。

遗留问题 / 注意事项

结论

修复已完成,符合预期。