global.go 2.1 KB

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