update: device delete current user

This commit is contained in:
EUForest 2025-11-13 14:49:25 +08:00
parent 60d584a052
commit 3635d3e224

View File

@ -42,22 +42,37 @@ func (l *DeleteCurrentUserAccountLogic) DeleteCurrentUserAccount() (err error) {
} }
err = l.svcCtx.UserModel.Transaction(l.ctx, func(tx *gorm.DB) error { err = l.svcCtx.UserModel.Transaction(l.ctx, func(tx *gorm.DB) error {
//delete user devices
if len(userInfo.UserDevices) > 0 { if len(userInfo.UserDevices) > 0 {
if err = tx.Model(&user.Device{}).Delete("user_id = ?", userInfo.Id).Error; err != nil { for _, device := range userInfo.UserDevices {
if err = l.svcCtx.UserModel.DeleteDevice(l.ctx, device.Id, tx); err != nil {
return err return err
} }
} }
}
// delete user auth methods
if len(userInfo.AuthMethods) > 0 { if len(userInfo.AuthMethods) > 0 {
if err = tx.Model(&user.AuthMethods{}).Delete("user_id = ?", userInfo.Id).Error; err != nil { for _, authMethod := range userInfo.AuthMethods {
if err = l.svcCtx.UserModel.DeleteUserAuthMethods(l.ctx, userInfo.Id, authMethod.AuthType); err != nil {
return err return err
} }
} }
if err = tx.Model(&user.Subscribe{}).Delete("user_id = ?", userInfo.Id).Error; err != nil {
return err
} }
return tx.Model(userInfo).Delete("id = ?", userInfo.Id).Error // delete user subscribes
var subscribes []*user.SubscribeDetails
subscribes, err = l.svcCtx.UserModel.QueryUserSubscribe(l.ctx, userInfo.Id)
if err != nil {
return err
}
for _, subscribe := range subscribes {
if err = l.svcCtx.UserModel.DeleteSubscribe(l.ctx, subscribe.Token, tx); err != nil {
return err
}
}
// delete user account
return l.svcCtx.UserModel.BatchDeleteUser(l.ctx, []int64{userInfo.Id}, tx)
}) })
if err != nil { if err != nil {
return errors.Wrapf(xerr.NewErrCode(xerr.DatabaseDeletedError), "find user auth methods failed: %v", err.Error()) return errors.Wrapf(xerr.NewErrCode(xerr.DatabaseDeletedError), "find user auth methods failed: %v", err.Error())