global.go 1.7 KB

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