global.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package global
  2. import (
  3. "database/sql"
  4. "fmt"
  5. "log"
  6. "time"
  7. "xugu_license/internal/module/capture"
  8. _ "xugu_license/pkg/xugu"
  9. )
  10. var XuguDB *sql.DB
  11. var OaDB *sql.DB
  12. var Cfg *Config
  13. //var LicCache *license_cache.Cache
  14. func InitDb() {
  15. Cfg = LoadConfig("./config.toml")
  16. fmt.Println("Cfg", Cfg)
  17. licDbstr := fmt.Sprintf("IP=%s;DB=%s;User=%s;PWD=%s;Port=%s;AUTO_COMMIT=on;CHAR_SET=UTF8",
  18. Cfg.Database.LicDBIP,
  19. Cfg.Database.LicDBDb,
  20. Cfg.Database.LicDBUser,
  21. Cfg.Database.LicDBPass,
  22. Cfg.Database.LicDBPort)
  23. oaDbstr := fmt.Sprintf("IP=%s;DB=%s;User=%s;PWD=%s;Port=%s;AUTO_COMMIT=on;CHAR_SET=UTF8",
  24. Cfg.Database.OADBIP,
  25. Cfg.Database.OADBDb,
  26. Cfg.Database.OADBUser,
  27. Cfg.Database.OADBPass,
  28. Cfg.Database.OADBPort)
  29. var err error
  30. XuguDB, err = sql.Open("xugusql", licDbstr)
  31. if err != nil {
  32. log.Fatal("XuguDB err ", err)
  33. }
  34. XuguDB.SetConnMaxLifetime(time.Hour) // 设置连接的最大生命周期
  35. // 启动定时任务保活
  36. //go keepDBAlive(XuguDB)
  37. //IP=10.28.20.111;DB=ECOLOGY2;User=XUGU;PWD=oatest@2024;Port=5148;AUTO_COMMIT=on;CHAR_SET=UTF8
  38. //IP=10.28.20.150;DB=oadb;User=SYSDBA;PWD=SYSDBA;Port=5199;AUTO_COMMIT=on;CHAR_SET=UTF8
  39. OaDB, err = sql.Open("xugusql", oaDbstr)
  40. if err != nil {
  41. log.Fatal("OaDB err ", err)
  42. }
  43. if err := OaDB.Ping(); err != nil {
  44. log.Fatal("OaDB ping err ", err)
  45. }
  46. OaDB.SetConnMaxLifetime(time.Hour) // 设置连接的最大生命周期
  47. // 启动定时数据同步服务
  48. go capture.StartCapture(OaDB, XuguDB)
  49. //license缓存
  50. // layout := "2006-01-02 15:04:05"
  51. // startTime, _ := time.Parse(layout, "2023-07-30 14:00:00")
  52. // endTime, _ := time.Parse(layout, "2023-08-26 16:00:00")
  53. // LicCache = license_cache.NewCache()
  54. // err = LicCache.LoadDataFromDB(XuguDB, startTime, endTime, 0, 20)
  55. // if err != nil {
  56. // fmt.Println("license缓存初始化失败", err)
  57. // }
  58. // fmt.Println("license缓存初始化完成", LicCache.GetData())
  59. }
  60. func keepDBAlive(db *sql.DB) {
  61. ticker := time.NewTicker(5 * time.Minute)
  62. defer ticker.Stop()
  63. for range ticker.C {
  64. err := db.Ping()
  65. if err != nil {
  66. log.Println("数据库连接丢失,重试中...")
  67. // 处理重连逻辑
  68. } else {
  69. log.Println("数据库连接正常")
  70. }
  71. }
  72. }