start.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package server
  2. import (
  3. "flag"
  4. "gadmin/config"
  5. "gadmin/internal/admin/data"
  6. "gadmin/internal/admin/gm_services"
  7. "gadmin/internal/admin/ws"
  8. "gadmin/package/gmdata"
  9. "os"
  10. "os/signal"
  11. "path"
  12. "syscall"
  13. "github.com/sirupsen/logrus"
  14. )
  15. func Start() {
  16. cfgFile := ".env"
  17. if config.SysType == "windows" {
  18. // envFilename = "local.env"
  19. // go run main.go -c local67.env
  20. flag.StringVar(&cfgFile, "c", "local.env", "配置环境")
  21. flag.Parse()
  22. }
  23. // 初始化日志,建立与数据库 redis nats etcd等的连接
  24. config.Init(cfgFile)
  25. // 兑换码兑换物品处理 world->nats->gadmin
  26. //gm_services.HandleGMSubscribe(config.GmNats.GetConn())
  27. // 加载JSON文件
  28. jsonPath := path.Join(os.Getenv("JSON_PATH"), os.Getenv("JSON_VERSION"))
  29. if err := gmdata.LoadGraveJson(jsonPath); err != nil {
  30. logrus.Errorf("gmdata.Load err: %v", err)
  31. return
  32. }
  33. // web页面发送邮件 web -> gadmin-> nats -> world
  34. //gm_services.EmailCron()
  35. // 接收从word收到的消息推,准备发送给WEB前端
  36. go gm_services.ListenRespMsg()
  37. // web前端和gadmin建立websocket连接 收发消息
  38. go ws.NotifyBoardCast()
  39. // 网页服务
  40. go func() {
  41. logrus.Infof("服务端口 [%v]", os.Getenv("ADMIN_SERVER_PORT"))
  42. if err := NewEngine().Run(os.Getenv("ADMIN_SERVER_PORT")); err != nil {
  43. logrus.Panicf("服务启动失败:%v", err)
  44. }
  45. }()
  46. // 定时发送邮件 和 广播
  47. cronStart()
  48. after()
  49. }
  50. func after() {
  51. quit := make(chan os.Signal)
  52. signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
  53. quantity := <-quit
  54. logrus.Infoln("收到中断信号:", quantity.String())
  55. // 保存邮件
  56. gm_services.SaveEmailDb()
  57. // 保存通知
  58. if err := data.SaveToBak(); err != nil {
  59. logrus.Warnln("SaveToBak err:", err.Error())
  60. }
  61. config.CloseGrpcConn()
  62. logrus.Infoln("已退出")
  63. }