| 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, |
| }) |
| } |
|
|