fix: 云端函数默认注入当前登录用户信息
- 当请求参数未指定 user_id 时,使用 token 中的用户 ID - 确保 user、subscription、devices 等变量始终有值
This commit is contained in:
@@ -173,49 +173,52 @@ func handleExecuteDynamicCode(c *gin.Context) {
|
|||||||
userVariables := map[string]interface{}{}
|
userVariables := map[string]interface{}{}
|
||||||
devices := []map[string]interface{}{}
|
devices := []map[string]interface{}{}
|
||||||
|
|
||||||
|
targetUserID := claims.UserID
|
||||||
if req.UserID != nil {
|
if req.UserID != nil {
|
||||||
var user model.AppUser
|
targetUserID = *req.UserID
|
||||||
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,
|
|
||||||
}
|
|
||||||
|
|
||||||
subscription = map[string]interface{}{
|
var user model.AppUser
|
||||||
"balance": user.Balance,
|
if err := database.DB.Where("id = ? AND application_id = ?", targetUserID, app.ID).First(&user).Error; err == nil {
|
||||||
"is_trial_user": user.IsTrialUser,
|
userData = map[string]interface{}{
|
||||||
"trial_start_at": user.TrialStartAt,
|
"id": user.ID,
|
||||||
"trial_end_at": user.TrialEndAt,
|
"username": user.Username,
|
||||||
"expiry_at": user.ExpiryAt,
|
"email": user.Email,
|
||||||
"is_expired": user.ExpiryAt != nil && user.ExpiryAt.Before(time.Now()),
|
"status": user.Status,
|
||||||
"is_lifetime": user.Balance == -1,
|
"device_id": user.DeviceID,
|
||||||
"days_remaining": calculateDaysRemaining(user.ExpiryAt, user.Balance),
|
"avatar": user.Avatar,
|
||||||
}
|
"created_at": user.CreatedAt,
|
||||||
|
"last_login_at": user.LastLoginAt,
|
||||||
|
}
|
||||||
|
|
||||||
var userDevices []model.UserDevice
|
subscription = map[string]interface{}{
|
||||||
database.DB.Where("user_id = ? AND application_id = ?", user.ID, app.ID).Find(&userDevices)
|
"balance": user.Balance,
|
||||||
for _, d := range userDevices {
|
"is_trial_user": user.IsTrialUser,
|
||||||
devices = append(devices, map[string]interface{}{
|
"trial_start_at": user.TrialStartAt,
|
||||||
"id": d.ID,
|
"trial_end_at": user.TrialEndAt,
|
||||||
"device_id": d.DeviceID,
|
"expiry_at": user.ExpiryAt,
|
||||||
"device_name": d.DeviceName,
|
"is_expired": user.ExpiryAt != nil && user.ExpiryAt.Before(time.Now()),
|
||||||
"device_type": d.DeviceType,
|
"is_lifetime": user.Balance == -1,
|
||||||
"status": d.Status,
|
"days_remaining": calculateDaysRemaining(user.ExpiryAt, user.Balance),
|
||||||
"created_at": d.CreatedAt,
|
}
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
var userVars []model.UserVariable
|
var userDevices []model.UserDevice
|
||||||
database.DB.Where("user_id = ? AND app_id = ?", user.ID, app.ID).Find(&userVars)
|
database.DB.Where("user_id = ? AND application_id = ?", user.ID, app.ID).Find(&userDevices)
|
||||||
for _, v := range userVars {
|
for _, d := range userDevices {
|
||||||
userVariables[v.VarName] = v.VarValue
|
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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user