package controller import ( "net/http" "strings" "github.com/QuantumNous/new-api/service" "github.com/gin-gonic/gin" ) func GetChannelAffinityCacheStats(c *gin.Context) { stats := service.GetChannelAffinityCacheStats() c.JSON(http.StatusOK, gin.H{ "success": true, "message": "", "data": stats, }) } func ClearChannelAffinityCache(c *gin.Context) { all := strings.TrimSpace(c.Query("all")) ruleName := strings.TrimSpace(c.Query("rule_name")) if all == "true" { deleted := service.ClearChannelAffinityCacheAll() c.JSON(http.StatusOK, gin.H{ "success": true, "message": "", "data": gin.H{ "deleted": deleted, }, }) return } if ruleName == "" { c.JSON(http.StatusBadRequest, gin.H{ "success": false, "message": "缺少参数:rule_name,或使用 all=true 清空全部", }) return } deleted, err := service.ClearChannelAffinityCacheByRuleName(ruleName) if err != nil { c.JSON(http.StatusBadRequest, gin.H{ "success": false, "message": err.Error(), }) return } c.JSON(http.StatusOK, gin.H{ "success": true, "message": "", "data": gin.H{ "deleted": deleted, }, }) } func GetChannelAffinityUsageCacheStats(c *gin.Context) { ruleName := strings.TrimSpace(c.Query("rule_name")) usingGroup := strings.TrimSpace(c.Query("using_group")) keyFp := strings.TrimSpace(c.Query("key_fp")) if ruleName == "" { c.JSON(http.StatusBadRequest, gin.H{ "success": false, "message": "missing param: rule_name", }) return } if keyFp == "" { c.JSON(http.StatusBadRequest, gin.H{ "success": false, "message": "missing param: key_fp", }) return } stats := service.GetChannelAffinityUsageCacheStats(ruleName, usingGroup, keyFp) c.JSON(http.StatusOK, gin.H{ "success": true, "message": "", "data": stats, }) }