diff --git a/model/gmodel/fs_user_logic.go b/model/gmodel/fs_user_logic.go index c62fc342..0ef5b3b1 100644 --- a/model/gmodel/fs_user_logic.go +++ b/model/gmodel/fs_user_logic.go @@ -52,9 +52,11 @@ func (u *FsUserModel) Transaction(ctx context.Context, fc func(tx *gorm.DB) erro // 继承guest_id的资源表 func InheritGuestIdResource(tx *gorm.DB, userId, guestId int64, afterDo func(txResouce *gorm.DB, txUserMaterial *gorm.DB, txUserInfo *gorm.DB) error) error { var err error + txRes := tx.Model(&FsResource{}) + txUserMaterial := tx.Model(&FsUserMaterial{}) + txUserInfo := tx.Model(&FsUserInfo{}) if guestId != 0 { // 继承guest_id的资源表 - txRes := tx.Model(&FsResource{}) err = txRes. Where("guest_id = ?", guestId). UpdateColumn("user_id", userId).Error @@ -62,7 +64,7 @@ func InheritGuestIdResource(tx *gorm.DB, userId, guestId int64, afterDo func(txR if err != nil && err != gorm.ErrRecordNotFound { return err } - txUserMaterial := tx.Model(&FsUserMaterial{}) + err = txUserMaterial. Where("guest_id = ?", guestId). UpdateColumn("user_id", userId).Error @@ -71,17 +73,16 @@ func InheritGuestIdResource(tx *gorm.DB, userId, guestId int64, afterDo func(txR return err } - txUserInfo := tx.Model(&FsUserInfo{}) err = txUserInfo. Where("guest_id = ?", guestId). UpdateColumn("user_id", userId).Error if err != nil && err != gorm.ErrRecordNotFound { return err } + } - if afterDo != nil { - return afterDo(txRes, txUserMaterial, txUserInfo) - } + if afterDo != nil { + return afterDo(txRes, txUserMaterial, txUserInfo) } return fmt.Errorf("guest_id must not be 0") } @@ -108,11 +109,8 @@ func (u *FsUserModel) RegisterByGoogleOAuth(ctx context.Context, token *auth.Reg return err } - if token.GuestId != 0 { - // 继承guest_id的资源表 - return InheritGuestIdResource(tx, user.Id, token.GuestId, nil) - } - return err + // 继承guest_id的资源表 + return InheritGuestIdResource(tx, user.Id, token.GuestId, nil) } return err @@ -170,37 +168,37 @@ func (u *FsUserModel) RegisterByFusen(ctx context.Context, token *auth.RegisterT } logcontent += "create." - if token.GuestId != 0 { - // 继承guest_id的资源表 - err = InheritGuestIdResource(tx, user.Id, token.GuestId, func(txResouce, txUserMaterial, txUserInfo *gorm.DB) error { - userProfile := &UserProfile{ - FirstName: FirstName, - LastName: LastName, - Resetaurant: Resetaurant, - } - metadata, err := json.Marshal(userProfile) - if err != nil { - return err - } - now := time.Now() - uinfo := &FsUserInfo{ - Module: FsString("profile"), - UserId: &user.Id, - GuestId: &token.GuestId, - Metadata: &metadata, - Ctime: &now, - Utime: &now, - } - logcontent += "profile." - return txUserInfo.Create(uinfo).Error - }) - if err == gorm.ErrRecordNotFound { - return nil + // 继承guest_id的资源表 + err = InheritGuestIdResource(tx, user.Id, token.GuestId, func(txResouce, txUserMaterial, txUserInfo *gorm.DB) error { + userProfile := &UserProfile{ + FirstName: FirstName, + LastName: LastName, + Resetaurant: Resetaurant, } + metadata, err := json.Marshal(userProfile) + if err != nil { + return err + } + now := time.Now() + uinfo := &FsUserInfo{ + Module: FsString("profile"), + UserId: &user.Id, + GuestId: &token.GuestId, + Metadata: &metadata, + Ctime: &now, + Utime: &now, + } + logcontent += "profile." + return txUserInfo.Create(uinfo).Error + }) - return err + if err == gorm.ErrRecordNotFound { + return nil } + + return err + } return fmt.Errorf("the email had registered")