go语言写的人脸本地化程序
25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 
 
 
 

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