go语言写的人脸本地化程序
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 
 

122 строки
3.0 KiB

  1. package common
  2. import (
  3. "encoding/json"
  4. "os"
  5. )
  6. type Config struct {
  7. FetchTokenUrl string `json:"fetchTokenUrl"`
  8. Phone string `json:"phone"`
  9. FetchDataUrl string `json:"fetchDataUrl"`
  10. FetchData2Url string `json:"fetchData2Url"`
  11. SendCodeUrl string `json:"sendCodeUrl"`
  12. CheckSendCodeUrl string `json:"checkSendCodeUrl"`
  13. PhoneLoginUrl string `json:"phoneLoginUrl"`
  14. MgrLoginUrl string `json:"mgrLoginUrl"`
  15. ValidCodeUrl string `json:"validCodeUrl"`
  16. StaffInfoUrl string `json:"staffInfoUrl"`
  17. EnterpriseName string `json:"enterpriseName"`
  18. Port string `json:"port"`
  19. PushDataUrl string `json:"pushDataUrl"`
  20. LocalDetectUrl string `json:"localDetectUrl"`
  21. DevId string `json:"devId"`
  22. Timer int `json:"timer"`
  23. Mode string `json:"mode"`
  24. }
  25. var ConfigData Config
  26. func LoadConfig() interface{} {
  27. // 读取配置文件
  28. data, err := os.ReadFile("config.json")
  29. if err != nil {
  30. return nil
  31. }
  32. // 解析配置文件内容到全局变量中
  33. err = json.Unmarshal(data, &ConfigData)
  34. if err != nil {
  35. return nil
  36. }
  37. return ConfigData
  38. }
  39. func UpdateConfig(updateValues map[string]interface{}) string {
  40. config := ConfigData
  41. for key, value := range updateValues {
  42. switch key {
  43. case "port":
  44. config.Port = value.(string)
  45. case "phone":
  46. config.Phone = value.(string)
  47. case "devId":
  48. config.DevId = value.(string)
  49. case "mode":
  50. config.Mode = value.(string)
  51. case "enterpriseName":
  52. config.EnterpriseName = value.(string)
  53. case "fetchTokenUrl":
  54. config.FetchTokenUrl = value.(string)
  55. case "fetchDataUrl":
  56. config.FetchDataUrl = value.(string)
  57. case "fetchData2Url":
  58. config.FetchData2Url = value.(string)
  59. case "pushDataUrl":
  60. config.PushDataUrl = value.(string)
  61. case "sendCodeUrl":
  62. config.SendCodeUrl = value.(string)
  63. case "checkSendCodeUrl":
  64. config.CheckSendCodeUrl = value.(string)
  65. case "mgrLoginUrl":
  66. config.MgrLoginUrl = value.(string)
  67. case "phoneLoginUrl":
  68. config.PhoneLoginUrl = value.(string)
  69. case "localDetectUrl":
  70. config.LocalDetectUrl = value.(string)
  71. case "validCodeUrl":
  72. config.ValidCodeUrl = value.(string)
  73. case "staffInfoUrl":
  74. config.StaffInfoUrl = value.(string)
  75. case "timer":
  76. config.Timer = int(value.(float64))
  77. default:
  78. return "Unknown config key: " + key
  79. }
  80. }
  81. if err := writeConfigToFile(&config, "config.json"); err != nil {
  82. return "Failed to write config to file: " + err.Error()
  83. }
  84. return ""
  85. }
  86. // 从文件中读取配置
  87. func readConfigFromFile(filename string) (*Config, error) {
  88. fileContent, err := os.ReadFile(filename)
  89. if err != nil {
  90. return nil, err
  91. }
  92. var config Config
  93. if err := json.Unmarshal(fileContent, &config); err != nil {
  94. return nil, err
  95. }
  96. return &config, nil
  97. }
  98. // 将配置写入文件
  99. func writeConfigToFile(config *Config, filename string) error {
  100. configJSON, err := json.MarshalIndent(config, "", " ")
  101. if err != nil {
  102. return err
  103. }
  104. return os.WriteFile(filename, configJSON, 0644)
  105. }