json.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. package serviceconfig
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "log"
  6. "os"
  7. "time"
  8. slog "bet24.com/log"
  9. "bet24.com/servers/common"
  10. )
  11. var Server struct {
  12. LogLevel string
  13. FileLevel string
  14. LogPath string
  15. ServerPort int
  16. MaxConnNum int
  17. ConsulPort int
  18. MonitorPort int
  19. ChannelUrl string
  20. ChannelPassword string
  21. RedisDB int
  22. LastHour int
  23. IsCasual int // 是否休闲平台 1=休闲平台 其他不是
  24. MinWinBroadcast int // 广播赢金最低金额
  25. GameWinString string
  26. ReturnAwards string
  27. MinWithdraw int // 最低提取金额
  28. ReviewAmount int // 评论奖励
  29. PurchaseCfg
  30. }
  31. // 10K购
  32. type PurchaseCfg struct {
  33. GoldFee int `json:"purchase.goldFee"` // 10W金币费用 ==> 100000
  34. AwardAmount int `json:"purchase.awardAmount"` // 奖励金额 ==> 100000000
  35. BeginHour string `json:"purchase.beginHour"` // 活动开启时间(20时) ==> 20h
  36. EndHour string `json:"purchase.endHour"` // 活动结束时间(22时) ==> 22h
  37. Duration string `json:"purchase.duration"` // 30分钟(1800秒) ==> 1800s
  38. MaxNumber int `json:"purchase.maxNumber"` // 最大号码 ==> 999999
  39. ItemId int `json:"purchase.itemId"` // 道具ID ==> 2
  40. SuccessTitle string `json:"purchase.successTitle"` // 命中标题
  41. SuccessContent string `json:"purchase.successContent"` // 命中内容
  42. FailTitle string `json:"purchase.failTitle"` // 未命中标题
  43. FailContent string `json:"purchase.failContent"` // 未命中内容
  44. }
  45. // 一些配置
  46. var SpecialCfg struct {
  47. ChatCost int //聊天金币
  48. //奖池
  49. MinGoldPool int //奖池下限,低于此值由系统补足
  50. MaxGoldPool int //奖池下限,低于此值由系统补足
  51. MinChipPool int // 筹码jackpot下限
  52. MaxChipPool int // 筹码jackpot上限
  53. SubsidyGold int //低于奖池下限后,系统要补贴到该金额
  54. GameTax int //抽税比例 0-100
  55. TaxLine int //奖池金额达到后不再抽税,低于该金额则要抽税
  56. PrizeCost int //多少金币抽一次
  57. PrizeTimes int //每天抽奖次数,0点重置
  58. //好友
  59. FriendGift int //赠送金币
  60. GiftTimes int //每天赠送次数上限
  61. }
  62. // 是否休闲平台 (true=休闲平台 false=其他平台)
  63. func IsCasual() bool {
  64. return Server.IsCasual == 1
  65. }
  66. func Run() {
  67. data, err := os.ReadFile("fishconf/coreservice.json")
  68. if err != nil {
  69. log.Fatalf("read config failed fishconf/coreservice.json %v", err)
  70. }
  71. err = json.Unmarshal(data, &Server)
  72. if err != nil {
  73. log.Fatalf("Unmarshal config failed fishconf/coreservice.json err:%v", err)
  74. }
  75. if Server.ConsulPort == 0 {
  76. Server.ConsulPort = 5500
  77. }
  78. fmt.Println(Server)
  79. //其他配置, 暂时用
  80. data, err = os.ReadFile("fishconf/SpecialCfg.json")
  81. if err != nil {
  82. log.Fatalf("read config failed fishconf/SpecialCfg.json %v", err)
  83. }
  84. err = json.Unmarshal(data, &SpecialCfg)
  85. if err != nil {
  86. log.Fatalf("Unmarshal config failed fishconf/SpecialCfg.json err:%v", err)
  87. }
  88. logger, err := slog.New(Server.LogLevel, Server.FileLevel, Server.LogPath, log.LstdFlags)
  89. if err == nil {
  90. slog.Export(logger)
  91. }
  92. if Server.MonitorPort == 0 {
  93. Server.MonitorPort = 5100
  94. }
  95. now := common.GetNowTime()
  96. Server.LastHour = now.Hour()
  97. refreshLogFile()
  98. }
  99. func refreshLogFile() {
  100. time.AfterFunc(5*time.Minute, refreshLogFile)
  101. doRefreshLogFile()
  102. }
  103. func doRefreshLogFile() {
  104. if Server.LogPath != "" {
  105. now := time.Now()
  106. if now.Hour() != Server.LastHour {
  107. Server.LastHour = now.Hour()
  108. slog.RecreateFileLog(Server.LogPath, log.LstdFlags)
  109. }
  110. }
  111. }