index.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. package app
  2. import (
  3. "crm-api/api/admin/zoho"
  4. "crm-api/internal/app/ami"
  5. httpServer "crm-api/internal/app/http_server"
  6. "crm-api/internal/app/mysql"
  7. "crm-api/internal/app/redis"
  8. socketio "crm-api/internal/app/socket_io"
  9. "crm-api/internal/app/status"
  10. "fmt"
  11. "sync"
  12. "crm-api/pkg/lfshook"
  13. "gopkg.in/ini.v1"
  14. )
  15. // var once sync.Once
  16. var once sync.Once // 20241128 vtiger crm 对应
  17. func StartApp() {
  18. mysql.CreateDBInstance()
  19. redis.CreateRedisInstance()
  20. socketio.StartSocketIO()
  21. // i18n.InitBundle()
  22. // initCronTask()
  23. go httpServer.StartRoute()
  24. /* 20230411 pms 删除 =======================================================================================================
  25. go ami.StartAMI(func() {
  26. lfshook.NewLogger().Info("ami callback function")
  27. // 首次连接才进行初始化
  28. once.Do(func() {
  29. status.InitAsterisk()
  30. // agi.InitPageingPlan(configs.ConfigGlobal.AsteriskPagingPath)
  31. })
  32. }, []func(event map[string]string){})
  33. * ========================================================================================================================= */
  34. // go agi.StartAGI()
  35. // go systeminfo.SendMessage() // 20230411 pms 删除
  36. // 启动插件程序
  37. // go plugin.StartUP() // 20230411 pms 删除
  38. // /* 20241128 vtiger crm 对应 =======================================================================================================
  39. CrmConfPath := "/etc/asterisk/crm_api.conf"
  40. crmCfg, crmErr := ini.Load(CrmConfPath)
  41. if crmErr != nil {
  42. lfshook.NewLogger().Error(crmErr)
  43. return
  44. }
  45. CrmEnabled := crmCfg.Section("general").Key("enable").String()
  46. ApiType := crmCfg.Section("general").Key("apiType").String()
  47. if CrmEnabled == "" || ApiType == "" {
  48. lfshook.NewLogger().Error("/etc/asterisk/crm_api.conf not set enabled or apiType")
  49. return
  50. }
  51. /* **************************************************************************
  52. // 先暂时都使用一个配置文件 pms_api.conf
  53. VtigerConfPath := "/etc/asterisk/vtiger_api.conf"
  54. vtigerCfg, vtigerErr := ini.Load(VtigerConfPath)
  55. if vtigerErr != nil {
  56. lfshook.NewLogger().Error(vtigerErr)
  57. return
  58. }
  59. VtigerEnabled := vtigerCfg.Section("general").Key("enabled").String()
  60. if VtigerEnabled == "" {
  61. lfshook.NewLogger().Error("/etc/asterisk/vtiger_api.conf not set enabled")
  62. return
  63. }
  64. if VtigerEnabled == "yes" && PmsEnabled == "no" { // pms基本是数据库操作,但是有个叫醒,会产生事件,所以当 pms 开启时,不能开启 vtiger
  65. // ************************************************************************** */
  66. fmt.Println("ApiType = ", ApiType)
  67. // if ApiType == "CRM_vtiger" || ApiType == "CRM_zoho" { // 把 crm 和 pms 分开了
  68. if CrmEnabled == "yes" {
  69. if ApiType == "CRM_zoho" {
  70. fmt.Println("Ticker ...")
  71. // 每隔55分钟刷新token
  72. /* ************************************************************************** 定时器放在这里没有用
  73. ticker := time.NewTicker(1 * time.Minute)
  74. defer ticker.Stop()
  75. done := make(chan bool)
  76. go func() {
  77. for {
  78. select {
  79. case <-done:
  80. return
  81. case t := <-ticker.C:
  82. fmt.Println("Tick at", t)
  83. zoho.RefreshToken()
  84. }
  85. }
  86. }()
  87. // ************************************************************************** */
  88. go zoho.RefreshTokenTicker()
  89. }
  90. fmt.Println("ami.StartAMI ...")
  91. go ami.StartAMI(func() {
  92. lfshook.NewLogger().Info("ami callback function")
  93. // 首次连接才进行初始化
  94. once.Do(func() {
  95. status.InitAsterisk()
  96. // agi.InitPageingPlan(configs.ConfigGlobal.AsteriskPagingPath)
  97. })
  98. }, []func(event map[string]string){}, ApiType)
  99. }
  100. // * ========================================================================================================================= */
  101. }