From b161d6831fea0a84a8510835c9a5734fea65d2e2 Mon Sep 17 00:00:00 2001 From: CaIon Date: Thu, 17 Jul 2025 22:26:38 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dplayground=E4=BC=98?= =?UTF-8?q?=E5=85=88=E7=BA=A7=E5=A4=B1=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controller/playground.go | 27 ++++++++++++++------------- middleware/auth.go | 20 ++++++++++---------- model/ability.go | 11 +++++++---- 3 files changed, 31 insertions(+), 27 deletions(-) diff --git a/controller/playground.go b/controller/playground.go index 9421a665..0073cf06 100644 --- a/controller/playground.go +++ b/controller/playground.go @@ -58,19 +58,6 @@ func Playground(c *gin.Context) { } userId := c.GetInt("id") - //c.Set("token_name", "playground-"+group) - tempToken := &model.Token{ - UserId: userId, - Name: fmt.Sprintf("playground-%s", group), - Group: group, - } - _ = middleware.SetupContextForToken(c, tempToken) - _, newAPIError = getChannel(c, group, playgroundRequest.Model, 1) - if newAPIError != nil { - return - } - //middleware.SetupContextForSelectedChannel(c, channel, playgroundRequest.Model) - common.SetContextKey(c, constant.ContextKeyRequestStartTime, time.Now()) // Write user context to ensure acceptUnsetRatio is available userCache, err := model.GetUserCache(userId) @@ -79,5 +66,19 @@ func Playground(c *gin.Context) { return } userCache.WriteContext(c) + + tempToken := &model.Token{ + UserId: userId, + Name: fmt.Sprintf("playground-%s", group), + Group: group, + } + _ = middleware.SetupContextForToken(c, tempToken) + _, newAPIError = getChannel(c, group, playgroundRequest.Model, 0) + if newAPIError != nil { + return + } + //middleware.SetupContextForSelectedChannel(c, channel, playgroundRequest.Model) + common.SetContextKey(c, constant.ContextKeyRequestStartTime, time.Now()) + Relay(c) } diff --git a/middleware/auth.go b/middleware/auth.go index b9c80920..a158318c 100644 --- a/middleware/auth.go +++ b/middleware/auth.go @@ -124,16 +124,16 @@ func authHelper(c *gin.Context, minRole int) { c.Set("group", session.Get("group")) c.Set("use_access_token", useAccessToken) - userCache, err := model.GetUserCache(id.(int)) - if err != nil { - c.JSON(http.StatusOK, gin.H{ - "success": false, - "message": err.Error(), - }) - c.Abort() - return - } - userCache.WriteContext(c) + //userCache, err := model.GetUserCache(id.(int)) + //if err != nil { + // c.JSON(http.StatusOK, gin.H{ + // "success": false, + // "message": err.Error(), + // }) + // c.Abort() + // return + //} + //userCache.WriteContext(c) c.Next() } diff --git a/model/ability.go b/model/ability.go index ed124676..f36ff764 100644 --- a/model/ability.go +++ b/model/ability.go @@ -87,26 +87,29 @@ func getPriority(group string, model string, retry int) (int, error) { return priorityToUse, nil } -func getChannelQuery(group string, model string, retry int) *gorm.DB { +func getChannelQuery(group string, model string, retry int) (*gorm.DB, error) { maxPrioritySubQuery := DB.Model(&Ability{}).Select("MAX(priority)").Where(commonGroupCol+" = ? and model = ? and enabled = ?", group, model, true) channelQuery := DB.Where(commonGroupCol+" = ? and model = ? and enabled = ? and priority = (?)", group, model, true, maxPrioritySubQuery) if retry != 0 { priority, err := getPriority(group, model, retry) if err != nil { - common.SysError(fmt.Sprintf("Get priority failed: %s", err.Error())) + return nil, err } else { channelQuery = DB.Where(commonGroupCol+" = ? and model = ? and enabled = ? and priority = ?", group, model, true, priority) } } - return channelQuery + return channelQuery, nil } func GetRandomSatisfiedChannel(group string, model string, retry int) (*Channel, error) { var abilities []Ability var err error = nil - channelQuery := getChannelQuery(group, model, retry) + channelQuery, err := getChannelQuery(group, model, retry) + if err != nil { + return nil, err + } if common.UsingSQLite || common.UsingPostgreSQL { err = channelQuery.Order("weight DESC").Find(&abilities).Error } else {