@
maotao456 再附一段使用代码给你
// executeUserRegistrationTransaction 执行用户注册的事务
func (a *LoginService) executeUserRegistrationTransaction(ctx context.Context, wxPlainData *keyWechatUserInfo, wechatAppName string) error {
// 生成新用户的 memberCode
memberCode := wxPlainData.PhoneNumber
// 生成新用户需要的几个关联数据
wxUser, wxUserLink, memberEntity := a.prepareNewUserRelatedEntities(
memberCode,
wxPlainData,
wechat.GetAppIDByInstanceName(wechatAppName),
)
return
transaction.Run(ctx, func(tx database.DB) error {
var err error
// 插入新用户
if _, err = exec.CreateForNamed(ctx, memberEntity, tx); err != nil {
return fmt.Errorf("create member failed. reason: %w", err)
}
// 插入新用户的微信信息
if _, err = exec.CreateForNamed(ctx, wxUser, tx); err != nil {
return fmt.Errorf("create wx user failed. reason: %w", err)
}
// 插入新用户的微信关联信息
if _, err = exec.CreateForNamed(ctx, wxUserLink, tx); err != nil {
return fmt.Errorf("create wx user link failed. reason: %w", err)
}
return nil
})
}