feat: 互动处理

This commit is contained in:
Blizzard
2026-03-05 16:54:25 +08:00
parent 74b252550b
commit 2583b5f302
30 changed files with 412 additions and 119 deletions
+3 -14
View File
@@ -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