refactor(用户绑定邮箱): 修改设备记录处理逻辑,从删除改为更新归属
All checks were successful
Build docker and publish / build (20.15.1) (push) Successful in 7m7s

将原本删除设备记录并创建新记录的逻辑改为直接更新设备记录的归属用户ID
移除不再需要的旧设备信息获取和创建新设备记录的代码
This commit is contained in:
shanshanzhong 2025-12-01 01:22:55 -08:00
parent e02e1d1f37
commit 37cec59460

View File

@ -128,12 +128,12 @@ func (l *BindEmailWithVerificationLogic) BindEmailWithVerification(req *types.Bi
}
}
// 获取原设备信息以保留IP和UserAgent
oldDevice, err := l.svcCtx.UserModel.FindOneDeviceByIdentifier(l.ctx, deviceIdentifier)
var deviceIP, deviceUA string
if err == nil && oldDevice != nil {
deviceIP = oldDevice.Ip
deviceUA = oldDevice.UserAgent
}
// oldDevice, err := l.svcCtx.UserModel.FindOneDeviceByIdentifier(l.ctx, deviceIdentifier)
// var deviceIP, deviceUA string
// if err == nil && oldDevice != nil {
// deviceIP = oldDevice.Ip
// deviceUA = oldDevice.UserAgent
// }
l.Infow("邮箱已存在,将设备转移到现有邮箱用户",
logger.Field("email", req.Email),
@ -146,10 +146,17 @@ func (l *BindEmailWithVerificationLogic) BindEmailWithVerification(req *types.Bi
}
for _, device := range devices {
// 删除原本的设备记录
err = l.svcCtx.UserModel.DeleteDevice(l.ctx, device.Id)
// err = l.svcCtx.UserModel.DeleteDevice(l.ctx, device.Id)
// if err != nil {
// l.Errorw("删除邮箱用户设备记录失败", logger.Field("error", err.Error()), logger.Field("email_user_id", emailUserId))
// return nil, errors.Wrapf(xerr.NewErrCode(xerr.DatabaseDeletedError), "删除原本的设备记录失败")
// }
// 更新 设备 归属
device.UserId = emailUserId
err = l.svcCtx.UserModel.UpdateDevice(l.ctx, device)
if err != nil {
l.Errorw("删除邮箱用户设备记录失败", logger.Field("error", err.Error()), logger.Field("email_user_id", emailUserId))
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DatabaseDeletedError), "删除原本的设备记录失败")
l.Errorw("更新邮箱用户设备记录失败", logger.Field("error", err.Error()), logger.Field("email_user_id", emailUserId))
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DatabaseUpdateError), "更新原本的设备记录失败")
}
}
// 再次更新 user_auth_method 因为之前 默认 设备登录的时候 创建了一个设备认证数据
@ -166,11 +173,11 @@ func (l *BindEmailWithVerificationLogic) BindEmailWithVerification(req *types.Bi
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DatabaseDeletedError), "删除用户记录失败")
}
err = l.createDeviceRecordForEmailUser(emailUserId, deviceIdentifier, deviceIP, deviceUA)
if err != nil {
l.Errorw("创建邮箱用户设备记录失败", logger.Field("error", err.Error()), logger.Field("email_user_id", emailUserId))
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DatabaseQueryError), "创建邮箱用户设备记录失败")
}
// err = l.createDeviceRecordForEmailUser(emailUserId, deviceIdentifier, deviceIP, deviceUA)
// if err != nil {
// l.Errorw("创建邮箱用户设备记录失败", logger.Field("error", err.Error()), logger.Field("email_user_id", emailUserId))
// return nil, errors.Wrapf(xerr.NewErrCode(xerr.DatabaseQueryError), "创建邮箱用户设备记录失败")
// }
}
// 4. 生成新的JWT token
token, err := l.generateTokenForUser(emailUserId)