完善一部分websocket的代码
This commit is contained in:
@@ -2,6 +2,7 @@ package gmodel
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"fusenapi/utils/auth"
|
||||
"time"
|
||||
|
||||
@@ -45,6 +46,37 @@ func (u *FsUserModel) Transaction(ctx context.Context, fc func(tx *gorm.DB) erro
|
||||
return u.db.WithContext(ctx).Transaction(fc)
|
||||
}
|
||||
|
||||
// 继承guest_id的资源表
|
||||
func InheritGuestIdResource(tx *gorm.DB, userId, guestId int64) error {
|
||||
var err error
|
||||
if guestId != 0 {
|
||||
// 继承guest_id的资源表
|
||||
err = tx.Model(&FsResource{}).
|
||||
Where("guest_id = ?", guestId).
|
||||
UpdateColumn("user_id", userId).Error
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = tx.Model(&FsUserMaterial{}).
|
||||
Where("guest_id = ?", guestId).
|
||||
UpdateColumn("user_id", userId).Error
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = tx.Model(&FsUserInfo{}).
|
||||
Where("guest_id = ?", guestId).
|
||||
UpdateColumn("user_id", userId).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return fmt.Errorf("guest_id must not be 0")
|
||||
}
|
||||
|
||||
// 谷歌平台的注册流程
|
||||
func (u *FsUserModel) RegisterByGoogleOAuth(ctx context.Context, token *auth.RegisterToken) (*FsUser, error) {
|
||||
user := &FsUser{}
|
||||
@@ -67,11 +99,8 @@ func (u *FsUserModel) RegisterByGoogleOAuth(ctx context.Context, token *auth.Reg
|
||||
|
||||
if token.GuestId != 0 {
|
||||
// 继承guest_id的资源表
|
||||
return tx.Model(&FsResource{}).
|
||||
Where("guest_id = ?", token.GuestId).
|
||||
UpdateColumn("user_id", user.Id).Error
|
||||
return InheritGuestIdResource(tx, user.Id, token.GuestId)
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -90,6 +119,46 @@ func (u *FsUserModel) RegisterByGoogleOAuth(ctx context.Context, token *auth.Reg
|
||||
return user, nil
|
||||
}
|
||||
|
||||
// 自平台的注册流程
|
||||
func (u *FsUserModel) RegisterByFusen(ctx context.Context, token *auth.RegisterToken) (*FsUser, error) {
|
||||
user := &FsUser{}
|
||||
|
||||
err := u.db.WithContext(ctx).Transaction(func(tx *gorm.DB) error {
|
||||
|
||||
err := tx.Model(user).Where("email = ?", token.Email).Take(user).Error
|
||||
if err != nil {
|
||||
// 没有找到在数据库就创建注册
|
||||
if err == gorm.ErrRecordNotFound {
|
||||
createAt := time.Now().Unix()
|
||||
user.Email = &token.Email
|
||||
user.CreatedAt = &createAt
|
||||
user.PasswordHash = &token.Password
|
||||
err = tx.Model(user).Create(user).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if token.GuestId != 0 {
|
||||
// 继承guest_id的资源表
|
||||
return InheritGuestIdResource(tx, user.Id, token.GuestId)
|
||||
}
|
||||
return err
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
if err == nil {
|
||||
return fmt.Errorf("the email had registered")
|
||||
}
|
||||
return err
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return user, nil
|
||||
}
|
||||
|
||||
func (u *FsUserModel) UpdateUserBasicInfoById(ctx context.Context, Id int64, user *UserBasicInfoForSave) (err error) {
|
||||
|
||||
err = u.db.WithContext(ctx).Model(&FsUser{}).
|
||||
|
||||
Reference in New Issue
Block a user