user_usable_group.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package setting
  2. import (
  3. "encoding/json"
  4. "sync"
  5. "github.com/QuantumNous/new-api/common"
  6. )
  7. var userUsableGroups = map[string]string{
  8. "default": "默认分组",
  9. "vip": "vip分组",
  10. }
  11. var userUsableGroupsMutex sync.RWMutex
  12. func GetUserUsableGroupsCopy() map[string]string {
  13. userUsableGroupsMutex.RLock()
  14. defer userUsableGroupsMutex.RUnlock()
  15. copyUserUsableGroups := make(map[string]string)
  16. for k, v := range userUsableGroups {
  17. copyUserUsableGroups[k] = v
  18. }
  19. return copyUserUsableGroups
  20. }
  21. func UserUsableGroups2JSONString() string {
  22. userUsableGroupsMutex.RLock()
  23. defer userUsableGroupsMutex.RUnlock()
  24. jsonBytes, err := json.Marshal(userUsableGroups)
  25. if err != nil {
  26. common.SysLog("error marshalling user groups: " + err.Error())
  27. }
  28. return string(jsonBytes)
  29. }
  30. func UpdateUserUsableGroupsByJSONString(jsonStr string) error {
  31. userUsableGroupsMutex.Lock()
  32. defer userUsableGroupsMutex.Unlock()
  33. userUsableGroups = make(map[string]string)
  34. return json.Unmarshal([]byte(jsonStr), &userUsableGroups)
  35. }
  36. func GetUsableGroupDescription(groupName string) string {
  37. userUsableGroupsMutex.RLock()
  38. defer userUsableGroupsMutex.RUnlock()
  39. if desc, ok := userUsableGroups[groupName]; ok {
  40. return desc
  41. }
  42. return groupName
  43. }