feat: 互动处理
This commit is contained in:
@@ -12,7 +12,6 @@ import (
|
||||
"strconv"
|
||||
"sundynix-go/global"
|
||||
common "sundynix-go/model/commom/request"
|
||||
"sundynix-go/model/radio"
|
||||
"sundynix-go/model/system"
|
||||
systemReq "sundynix-go/model/system/request"
|
||||
systemResp "sundynix-go/model/system/response"
|
||||
@@ -145,29 +144,19 @@ func (userService *UserService) MiniLogin(code string) (result *system.User, err
|
||||
|
||||
// 7. 根据openid查询用户 存在--> 更新session_key 返回数据
|
||||
var user system.User
|
||||
err = global.DB.Where("mini_open_id = ?", wxResp.Openid).Preload("Avatar").First(&user).Error
|
||||
err = global.DB.Where("open_id = ?", wxResp.Openid).Preload("Avatar").First(&user).Error
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
// 8. 使用 Transaction 闭包管理事务
|
||||
err = global.DB.Transaction(func(tx *gorm.DB) error {
|
||||
// 创建新用户
|
||||
newUser := system.User{
|
||||
Name: uniqueid.GenerateName(),
|
||||
MiniOpenId: wxResp.Openid,
|
||||
Name: uniqueid.GenerateRadioUsername(),
|
||||
OpenId: wxResp.Openid,
|
||||
SessionKey: wxResp.SessionKey,
|
||||
}
|
||||
if err := tx.Create(&newUser).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
// 创建小程序用户
|
||||
mpUser := radio.RadioUser{
|
||||
UserId: newUser.Id,
|
||||
OpenId: wxResp.Openid,
|
||||
UnionId: wxResp.Unionid,
|
||||
SessionKey: wxResp.SessionKey,
|
||||
}
|
||||
if err := tx.Create(&mpUser).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 赋值给外部变量以便返回
|
||||
user = newUser
|
||||
|
||||
Reference in New Issue
Block a user