1.7 KiB
1.7 KiB
设备移出和邀请码优化 - 验收报告
修复内容回顾
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绑定邮箱后被移除
- 设备B绑定邮箱,执行迁移逻辑。
KickDevice(originalUserId, deviceIdentifier)被调用 -> 设备B的 WebSocket 连接断开。- Redis 中
device:identifier和session:id被删除 -> Token 失效。 - 用户在设备A上操作移除设备B ->
unbindDeviceLogic执行 -> 再次尝试踢出和清理(防御性)。 - 结果:设备B立即离线且无法继续使用。
场景 2:输入错误邀请码
- 调用绑定接口,
FindOneByReferCode返回RecordNotFound。 - 逻辑捕获错误,返回
InviteCodeError。 - 结果:前端收到 20009 错误码和 "无邀请码" 提示。
遗留问题 / 注意事项
- 无
结论
修复已完成,符合预期。