go语言写的人脸本地化程序
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 
 

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