diff --git a/controller/user.go b/controller/user.go index 3503a5b1..01f79179 100644 --- a/controller/user.go +++ b/controller/user.go @@ -6,6 +6,7 @@ import ( "net/http" "one-api/common" "one-api/model" + "one-api/setting" "strconv" "strings" "sync" @@ -454,7 +455,11 @@ func GetUserModels(c *gin.Context) { }) return } - models := model.GetGroupModels(user.Group) + groups := setting.GetUserUsableGroups(user.Group) + var models []string + for group := range groups { + models = append(models, model.GetGroupModels(group)...) + } c.JSON(http.StatusOK, gin.H{ "success": true, "message": "", diff --git a/setting/user_usable_group.go b/setting/user_usable_group.go index 6135022e..6fcfb263 100644 --- a/setting/user_usable_group.go +++ b/setting/user_usable_group.go @@ -5,13 +5,21 @@ import ( "one-api/common" ) -var UserUsableGroups = map[string]string{ +var userUsableGroups = map[string]string{ "default": "默认分组", "vip": "vip分组", } +func GetUserUsableGroupsCopy() map[string]string { + copyUserUsableGroups := make(map[string]string) + for k, v := range userUsableGroups { + copyUserUsableGroups[k] = v + } + return copyUserUsableGroups +} + func UserUsableGroups2JSONString() string { - jsonBytes, err := json.Marshal(UserUsableGroups) + jsonBytes, err := json.Marshal(userUsableGroups) if err != nil { common.SysError("error marshalling user groups: " + err.Error()) } @@ -19,29 +27,25 @@ func UserUsableGroups2JSONString() string { } func UpdateUserUsableGroupsByJSONString(jsonStr string) error { - UserUsableGroups = make(map[string]string) - return json.Unmarshal([]byte(jsonStr), &UserUsableGroups) + userUsableGroups = make(map[string]string) + return json.Unmarshal([]byte(jsonStr), &userUsableGroups) } func GetUserUsableGroups(userGroup string) map[string]string { + groupsCopy := GetUserUsableGroupsCopy() if userGroup == "" { // 如果userGroup为空,返回UserUsableGroups - return UserUsableGroups + return groupsCopy } // 如果userGroup不在UserUsableGroups中,返回UserUsableGroups + userGroup - if _, ok := UserUsableGroups[userGroup]; !ok { - appendUserUsableGroups := make(map[string]string) - for k, v := range UserUsableGroups { - appendUserUsableGroups[k] = v - } - appendUserUsableGroups[userGroup] = "用户分组" - return appendUserUsableGroups + if _, ok := groupsCopy[userGroup]; !ok { + groupsCopy[userGroup] = "用户分组" } // 如果userGroup在UserUsableGroups中,返回UserUsableGroups - return UserUsableGroups + return groupsCopy } func GroupInUserUsableGroups(groupName string) bool { - _, ok := UserUsableGroups[groupName] + _, ok := userUsableGroups[groupName] return ok }