Some checks failed
Publish Docker image (Multi Registries, native amd64+arm64) / Build & push (amd64) [native] (push) Has been cancelled
Publish Docker image (Multi Registries, native amd64+arm64) / Build & push (arm64) [native] (push) Has been cancelled
Publish Docker image (Multi Registries, native amd64+arm64) / Create multi-arch manifests (Docker Hub) (push) Has been cancelled
Added checks to ensure clipboard functionality is available before attempting to read from it. Improved error handling during clipboard read operations to prevent unhandled exceptions.
76 lines
1.8 KiB
Go
76 lines
1.8 KiB
Go
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)
|
|
// check groupRatio contains usableGroup
|
|
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),
|
|
"pricing_version": "a42d372ccf0b5dd13ecf71203521f9d2",
|
|
})
|
|
}
|
|
|
|
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": "重置模型倍率成功",
|
|
})
|
|
}
|