global.go 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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. OaDB.SetConnMaxLifetime(time.Hour) // 设置连接的最大生命周期
  43. // 启动定时数据同步服务
  44. go capture.StartCapture(OaDB, XuguDB)
  45. //license缓存
  46. // layout := "2006-01-02 15:04:05"
  47. // startTime, _ := time.Parse(layout, "2023-07-30 14:00:00")
  48. // endTime, _ := time.Parse(layout, "2023-08-26 16:00:00")
  49. // LicCache = license_cache.NewCache()
  50. // err = LicCache.LoadDataFromDB(XuguDB, startTime, endTime, 0, 20)
  51. // if err != nil {
  52. // fmt.Println("license缓存初始化失败", err)
  53. // }
  54. // fmt.Println("license缓存初始化完成", LicCache.GetData())
  55. }
  56. func keepDBAlive(db *sql.DB) {
  57. ticker := time.NewTicker(5 * time.Minute)
  58. defer ticker.Stop()
  59. for range ticker.C {
  60. err := db.Ping()
  61. if err != nil {
  62. log.Println("数据库连接丢失,重试中...")
  63. // 处理重连逻辑
  64. } else {
  65. log.Println("数据库连接正常")
  66. }
  67. }
  68. }