|
|
package controller |
|
|
|
|
|
import ( |
|
|
"github.com/QuantumNous/new-api/model" |
|
|
"github.com/QuantumNous/new-api/service" |
|
|
"github.com/QuantumNous/new-api/setting/ratio_setting" |
|
|
|
|
|
"github.com/gin-gonic/gin" |
|
|
) |
|
|
|
|
|
func GetPricing(c *gin.Context) { |
|
|
pricing := model.GetPricing() |
|
|
userId, exists := c.Get("id") |
|
|
usableGroup := map[string]string{} |
|
|
groupRatio := map[string]float64{} |
|
|
for s, f := range ratio_setting.GetGroupRatioCopy() { |
|
|
groupRatio[s] = f |
|
|
} |
|
|
var group string |
|
|
if exists { |
|
|
user, err := model.GetUserCache(userId.(int)) |
|
|
if err == nil { |
|
|
group = user.Group |
|
|
for g := range groupRatio { |
|
|
ratio, ok := ratio_setting.GetGroupGroupRatio(group, g) |
|
|
if ok { |
|
|
groupRatio[g] = ratio |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
usableGroup = service.GetUserUsableGroups(group) |
|
|
|
|
|
for group := range ratio_setting.GetGroupRatioCopy() { |
|
|
if _, ok := usableGroup[group]; !ok { |
|
|
delete(groupRatio, group) |
|
|
} |
|
|
} |
|
|
|
|
|
c.JSON(200, gin.H{ |
|
|
"success": true, |
|
|
"data": pricing, |
|
|
"vendors": model.GetVendors(), |
|
|
"group_ratio": groupRatio, |
|
|
"usable_group": usableGroup, |
|
|
"supported_endpoint": model.GetSupportedEndpointMap(), |
|
|
"auto_groups": service.GetUserAutoGroup(group), |
|
|
}) |
|
|
} |
|
|
|
|
|
func ResetModelRatio(c *gin.Context) { |
|
|
defaultStr := ratio_setting.DefaultModelRatio2JSONString() |
|
|
err := model.UpdateOption("ModelRatio", defaultStr) |
|
|
if err != nil { |
|
|
c.JSON(200, gin.H{ |
|
|
"success": false, |
|
|
"message": err.Error(), |
|
|
}) |
|
|
return |
|
|
} |
|
|
err = ratio_setting.UpdateModelRatioByJSONString(defaultStr) |
|
|
if err != nil { |
|
|
c.JSON(200, gin.H{ |
|
|
"success": false, |
|
|
"message": err.Error(), |
|
|
}) |
|
|
return |
|
|
} |
|
|
c.JSON(200, gin.H{ |
|
|
"success": true, |
|
|
"message": "重置模型倍率成功", |
|
|
}) |
|
|
} |
|
|
|