From 551eff2f60dede3fcb521f911539339d85f811ce Mon Sep 17 00:00:00 2001 From: admin Date: Thu, 7 May 2026 13:13:18 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BA=91=E7=AB=AF=E5=87=BD=E6=95=B0?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E6=B3=A8=E5=85=A5=E5=BD=93=E5=89=8D=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 当请求参数未指定 user_id 时,使用 token 中的用户 ID - 确保 user、subscription、devices 等变量始终有值 --- backend/internal/router/app/dynamic.go | 81 +++++++++++++------------- 1 file changed, 42 insertions(+), 39 deletions(-) diff --git a/backend/internal/router/app/dynamic.go b/backend/internal/router/app/dynamic.go index b0f184e..4417500 100644 --- a/backend/internal/router/app/dynamic.go +++ b/backend/internal/router/app/dynamic.go @@ -173,49 +173,52 @@ func handleExecuteDynamicCode(c *gin.Context) { userVariables := map[string]interface{}{} devices := []map[string]interface{}{} + targetUserID := claims.UserID if req.UserID != nil { - var user model.AppUser - if err := database.DB.Where("id = ? AND application_id = ?", *req.UserID, app.ID).First(&user).Error; err == nil { - userData = map[string]interface{}{ - "id": user.ID, - "username": user.Username, - "email": user.Email, - "status": user.Status, - "device_id": user.DeviceID, - "avatar": user.Avatar, - "created_at": user.CreatedAt, - "last_login_at": user.LastLoginAt, - } + targetUserID = *req.UserID + } - subscription = map[string]interface{}{ - "balance": user.Balance, - "is_trial_user": user.IsTrialUser, - "trial_start_at": user.TrialStartAt, - "trial_end_at": user.TrialEndAt, - "expiry_at": user.ExpiryAt, - "is_expired": user.ExpiryAt != nil && user.ExpiryAt.Before(time.Now()), - "is_lifetime": user.Balance == -1, - "days_remaining": calculateDaysRemaining(user.ExpiryAt, user.Balance), - } + var user model.AppUser + if err := database.DB.Where("id = ? AND application_id = ?", targetUserID, app.ID).First(&user).Error; err == nil { + userData = map[string]interface{}{ + "id": user.ID, + "username": user.Username, + "email": user.Email, + "status": user.Status, + "device_id": user.DeviceID, + "avatar": user.Avatar, + "created_at": user.CreatedAt, + "last_login_at": user.LastLoginAt, + } - var userDevices []model.UserDevice - database.DB.Where("user_id = ? AND application_id = ?", user.ID, app.ID).Find(&userDevices) - for _, d := range userDevices { - devices = append(devices, map[string]interface{}{ - "id": d.ID, - "device_id": d.DeviceID, - "device_name": d.DeviceName, - "device_type": d.DeviceType, - "status": d.Status, - "created_at": d.CreatedAt, - }) - } + subscription = map[string]interface{}{ + "balance": user.Balance, + "is_trial_user": user.IsTrialUser, + "trial_start_at": user.TrialStartAt, + "trial_end_at": user.TrialEndAt, + "expiry_at": user.ExpiryAt, + "is_expired": user.ExpiryAt != nil && user.ExpiryAt.Before(time.Now()), + "is_lifetime": user.Balance == -1, + "days_remaining": calculateDaysRemaining(user.ExpiryAt, user.Balance), + } - var userVars []model.UserVariable - database.DB.Where("user_id = ? AND app_id = ?", user.ID, app.ID).Find(&userVars) - for _, v := range userVars { - userVariables[v.VarName] = v.VarValue - } + var userDevices []model.UserDevice + database.DB.Where("user_id = ? AND application_id = ?", user.ID, app.ID).Find(&userDevices) + for _, d := range userDevices { + devices = append(devices, map[string]interface{}{ + "id": d.ID, + "device_id": d.DeviceID, + "device_name": d.DeviceName, + "device_type": d.DeviceType, + "status": d.Status, + "created_at": d.CreatedAt, + }) + } + + var userVars []model.UserVariable + database.DB.Where("user_id = ? AND app_id = ?", user.ID, app.ID).Find(&userVars) + for _, v := range userVars { + userVariables[v.VarName] = v.VarValue } }