| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- package service
- import (
- "strings"
- "github.com/QuantumNous/new-api/setting"
- "github.com/QuantumNous/new-api/setting/ratio_setting"
- )
- func GetUserUsableGroups(userGroup string) map[string]string {
- groupsCopy := setting.GetUserUsableGroupsCopy()
- if userGroup != "" {
- specialSettings, b := ratio_setting.GetGroupRatioSetting().GroupSpecialUsableGroup.Get(userGroup)
- if b {
- // 处理特殊可用分组
- for specialGroup, desc := range specialSettings {
- if strings.HasPrefix(specialGroup, "-:") {
- // 移除分组
- groupToRemove := strings.TrimPrefix(specialGroup, "-:")
- delete(groupsCopy, groupToRemove)
- } else if strings.HasPrefix(specialGroup, "+:") {
- // 添加分组
- groupToAdd := strings.TrimPrefix(specialGroup, "+:")
- groupsCopy[groupToAdd] = desc
- } else {
- // 直接添加分组
- groupsCopy[specialGroup] = desc
- }
- }
- }
- // 如果userGroup不在UserUsableGroups中,返回UserUsableGroups + userGroup
- if _, ok := groupsCopy[userGroup]; !ok {
- groupsCopy[userGroup] = "用户分组"
- }
- }
- return groupsCopy
- }
- func GroupInUserUsableGroups(userGroup, groupName string) bool {
- _, ok := GetUserUsableGroups(userGroup)[groupName]
- return ok
- }
- // GetUserAutoGroup 根据用户分组获取自动分组设置
- func GetUserAutoGroup(userGroup string) []string {
- groups := GetUserUsableGroups(userGroup)
- autoGroups := make([]string, 0)
- for _, group := range setting.GetAutoGroups() {
- if _, ok := groups[group]; ok {
- autoGroups = append(autoGroups, group)
- }
- }
- return autoGroups
- }
- // GetUserGroupRatio 获取用户使用某个分组的倍率
- // userGroup 用户分组
- // group 需要获取倍率的分组
- func GetUserGroupRatio(userGroup, group string) float64 {
- ratio, ok := ratio_setting.GetGroupGroupRatio(userGroup, group)
- if ok {
- return ratio
- }
- return ratio_setting.GetGroupRatio(group)
- }
|