json.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. package config
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "log"
  6. "os"
  7. "sort"
  8. "time"
  9. slog "bet24.com/log"
  10. coreservice "bet24.com/servers/coreservice/client"
  11. )
  12. var Server struct {
  13. LogLevel string
  14. FileLevel string
  15. LogPath string
  16. ServerIP string
  17. ServerPort int
  18. CertFile string
  19. KeyFile string
  20. MaxConnNum int
  21. ChannelUrl string
  22. ChannelPassword string
  23. MonitorPort int
  24. RedisDB int
  25. LastHour int
  26. ServiceAddr string
  27. IsChipRoom int
  28. TestPay bool
  29. VersionID int
  30. }
  31. // 短信配置
  32. type SMSConfig struct {
  33. SMSPostUrl string `json:"sms.postUrl"`
  34. SMSAccessID string `json:"sms.accessID"`
  35. SMSAccessSecrect string `json:"sms.accessSecret"`
  36. SMSSendMsg string `json:"sms.sendMsg"`
  37. SMSTestCode string `json:"sms.testCode"`
  38. }
  39. var HallConfig struct {
  40. SubsidyAmount int
  41. SubsidyTimes int
  42. SubsidyCoolSeconds []int
  43. AdConfig int
  44. AdBannerClosed int // 0 表示打开,1表示关闭
  45. IsAgentClosed int // 是否关闭代理,0表示打开,1表示关闭
  46. SMSConfig //短信配置
  47. LoginConfig int // 登录选项,0-默认 1-仅游客 10-仅fb 100-仅google 110-fb+google
  48. ChangeNames []ChangeNameInfo `json:"changeNames"`
  49. ThirdPaymentOpen []string
  50. GuestPriveRoomClose int
  51. GuestMatchClose int
  52. }
  53. // 修改昵称
  54. type ChangeNameInfo struct {
  55. Times int `json:"times"` // 修改次数
  56. Gold int `json:"gold"` // 金币数
  57. }
  58. const config_key = "hall_config"
  59. func init() {
  60. data, err := os.ReadFile("fishconf/fishhallserver.json")
  61. if err != nil {
  62. log.Fatalf("read config failed fishconf/fishhallserver.json %v", err)
  63. return
  64. }
  65. fmt.Println(string(data))
  66. err = json.Unmarshal(data, &Server)
  67. if err != nil {
  68. log.Fatalf("Unmarshal config failed fishconf/fishhallserver.json err:%v", err)
  69. }
  70. logger, err := slog.New(Server.LogLevel, Server.FileLevel, Server.LogPath, log.LstdFlags)
  71. if err == nil {
  72. slog.Export(logger)
  73. }
  74. if Server.MonitorPort == 0 {
  75. Server.MonitorPort = 8600
  76. }
  77. }
  78. func Run() {
  79. refreshLogFile()
  80. }
  81. func loadRedisConfig() bool {
  82. data := coreservice.GetPlatformConfig(config_key)
  83. if data == "" {
  84. slog.Release(" config msg is null")
  85. return false
  86. }
  87. return marshalData([]byte(data))
  88. }
  89. func refreshLogFile() {
  90. defer func() {
  91. time.AfterFunc(5*time.Minute, refreshLogFile)
  92. doRefreshLogFile()
  93. }()
  94. if loadRedisConfig() {
  95. return
  96. }
  97. data, err := os.ReadFile("fishconf/fishhallconfig.json")
  98. if err != nil {
  99. slog.Release("read config failed fishconf/fishhallconfig.json %v", err)
  100. return
  101. }
  102. if marshalData(data) {
  103. // 写入redis
  104. coreservice.SetPlatformConfig(config_key, string(data))
  105. }
  106. }
  107. func marshalData(data []byte) bool {
  108. err := json.Unmarshal(data, &HallConfig)
  109. if err != nil {
  110. slog.Release("Unmarshal config [%s] err:%v", string(data), err)
  111. return false
  112. }
  113. sort.SliceStable(HallConfig.ChangeNames, func(i, j int) bool {
  114. return HallConfig.ChangeNames[i].Times < HallConfig.ChangeNames[j].Times
  115. })
  116. return true
  117. }
  118. func doRefreshLogFile() {
  119. if Server.LogPath != "" {
  120. now := time.Now()
  121. if now.Hour() != Server.LastHour {
  122. Server.LastHour = now.Hour()
  123. slog.RecreateFileLog(Server.LogPath, log.LstdFlags)
  124. }
  125. }
  126. }