This commit refactors the logging mechanism across the application by replacing direct logger calls with a centralized logging approach using the `common` package. Key changes include: - Replaced instances of `logger.SysLog` and `logger.FatalLog` with `common.SysLog` and `common.FatalLog` for consistent logging practices. - Updated resource initialization error handling to utilize the new logging structure, enhancing maintainability and readability. - Minor adjustments to improve code clarity and organization throughout various modules. This change aims to streamline logging and improve the overall architecture of the codebase.
123 lines
2.5 KiB
Go
123 lines
2.5 KiB
Go
package ratio_setting
|
|
|
|
import (
|
|
"encoding/json"
|
|
"errors"
|
|
"one-api/common"
|
|
"sync"
|
|
)
|
|
|
|
var groupRatio = map[string]float64{
|
|
"default": 1,
|
|
"vip": 1,
|
|
"svip": 1,
|
|
}
|
|
var groupRatioMutex sync.RWMutex
|
|
|
|
var (
|
|
GroupGroupRatio = map[string]map[string]float64{
|
|
"vip": {
|
|
"edit_this": 0.9,
|
|
},
|
|
}
|
|
groupGroupRatioMutex sync.RWMutex
|
|
)
|
|
|
|
func GetGroupRatioCopy() map[string]float64 {
|
|
groupRatioMutex.RLock()
|
|
defer groupRatioMutex.RUnlock()
|
|
|
|
groupRatioCopy := make(map[string]float64)
|
|
for k, v := range groupRatio {
|
|
groupRatioCopy[k] = v
|
|
}
|
|
return groupRatioCopy
|
|
}
|
|
|
|
func ContainsGroupRatio(name string) bool {
|
|
groupRatioMutex.RLock()
|
|
defer groupRatioMutex.RUnlock()
|
|
|
|
_, ok := groupRatio[name]
|
|
return ok
|
|
}
|
|
|
|
func GroupRatio2JSONString() string {
|
|
groupRatioMutex.RLock()
|
|
defer groupRatioMutex.RUnlock()
|
|
|
|
jsonBytes, err := json.Marshal(groupRatio)
|
|
if err != nil {
|
|
common.SysLog("error marshalling model ratio: " + err.Error())
|
|
}
|
|
return string(jsonBytes)
|
|
}
|
|
|
|
func UpdateGroupRatioByJSONString(jsonStr string) error {
|
|
groupRatioMutex.Lock()
|
|
defer groupRatioMutex.Unlock()
|
|
|
|
groupRatio = make(map[string]float64)
|
|
return json.Unmarshal([]byte(jsonStr), &groupRatio)
|
|
}
|
|
|
|
func GetGroupRatio(name string) float64 {
|
|
groupRatioMutex.RLock()
|
|
defer groupRatioMutex.RUnlock()
|
|
|
|
ratio, ok := groupRatio[name]
|
|
if !ok {
|
|
common.SysLog("group ratio not found: " + name)
|
|
return 1
|
|
}
|
|
return ratio
|
|
}
|
|
|
|
func GetGroupGroupRatio(userGroup, usingGroup string) (float64, bool) {
|
|
groupGroupRatioMutex.RLock()
|
|
defer groupGroupRatioMutex.RUnlock()
|
|
|
|
gp, ok := GroupGroupRatio[userGroup]
|
|
if !ok {
|
|
return -1, false
|
|
}
|
|
ratio, ok := gp[usingGroup]
|
|
if !ok {
|
|
return -1, false
|
|
}
|
|
return ratio, true
|
|
}
|
|
|
|
func GroupGroupRatio2JSONString() string {
|
|
groupGroupRatioMutex.RLock()
|
|
defer groupGroupRatioMutex.RUnlock()
|
|
|
|
jsonBytes, err := json.Marshal(GroupGroupRatio)
|
|
if err != nil {
|
|
common.SysLog("error marshalling group-group ratio: " + err.Error())
|
|
}
|
|
return string(jsonBytes)
|
|
}
|
|
|
|
func UpdateGroupGroupRatioByJSONString(jsonStr string) error {
|
|
groupGroupRatioMutex.Lock()
|
|
defer groupGroupRatioMutex.Unlock()
|
|
|
|
GroupGroupRatio = make(map[string]map[string]float64)
|
|
return json.Unmarshal([]byte(jsonStr), &GroupGroupRatio)
|
|
}
|
|
|
|
func CheckGroupRatio(jsonStr string) error {
|
|
checkGroupRatio := make(map[string]float64)
|
|
err := json.Unmarshal([]byte(jsonStr), &checkGroupRatio)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
for name, ratio := range checkGroupRatio {
|
|
if ratio < 0 {
|
|
return errors.New("group ratio must be not less than 0: " + name)
|
|
}
|
|
}
|
|
return nil
|
|
}
|