This commit is contained in:
eson 2023-08-29 14:57:09 +08:00
parent b9447dae4d
commit 2789fad2f1

View File

@ -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")