main.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. package main
  2. import (
  3. "flag"
  4. "fmt"
  5. "kpt.xdmy/apiserver/dao"
  6. "log"
  7. "net/http"
  8. "os"
  9. "strings"
  10. // logrus "github.com/sirupsen/logrus"
  11. "github.com/kardianos/service"
  12. "kpt.xdmy/apiserver/config"
  13. "kpt.xdmy/apiserver/routers"
  14. "kpt.xdmy/apiserver/routers/api"
  15. pservice "kpt.xdmy/apiserver/service"
  16. "kpt.xdmy/middleware/comm"
  17. "kpt.xdmy/middleware/mdns"
  18. plog "kpt.xdmy/pkg/log"
  19. "kpt.xdmy/pkg/logging"
  20. "kpt.xdmy/pkg/setting"
  21. "kpt.xdmy/pkg/util"
  22. //"unsafe"
  23. )
  24. // @title 科湃腾Go语言后台API
  25. // @version 1.1.2
  26. // @description kptyun_service
  27. // @contact.name 朱红宾
  28. // @contact.url https://www.dairyinfo.com.cn
  29. // @contact.email kptzhu@163.com
  30. // @host
  31. // @BasePath /
  32. func main() {
  33. var path string
  34. //path = "./"
  35. path = "D:/catering/eam-go/cmd/"
  36. flag.Parse()
  37. setting.Setup(path)
  38. dao.Setup()
  39. routers.InitRouter()
  40. logging.Setup()
  41. config.Init(path)
  42. plog.Init()
  43. svc := pservice.New(config.Conf)
  44. routers.Init(svc)
  45. api.Init(svc)
  46. svcConfig := &service.Config{
  47. Name: setting.ServerSetting.ServerName, //服务显示名称
  48. DisplayName: setting.ServerSetting.DisplayName, //服务名称
  49. Description: setting.ServerSetting.Description, //服务描述
  50. }
  51. prg := &program{}
  52. s, err := service.New(prg, svcConfig)
  53. if err != nil {
  54. fmt.Println(err, "service.New() err", err)
  55. }
  56. if len(os.Args) > 1 {
  57. if os.Args[1] == "install" {
  58. err = s.Install()
  59. if err != nil {
  60. fmt.Println("install err", err)
  61. } else {
  62. fmt.Println("install success")
  63. }
  64. return
  65. }
  66. if os.Args[1] == "remove" {
  67. err = s.Uninstall()
  68. if err != nil {
  69. fmt.Println("Uninstall err", err)
  70. } else {
  71. fmt.Println("Uninstall success")
  72. }
  73. return
  74. }
  75. }
  76. s.Run()
  77. }
  78. type program struct{}
  79. func (p *program) Start(s service.Service) error {
  80. go p.run()
  81. return nil
  82. }
  83. func (p *program) run() {
  84. // 代码写在这儿
  85. // 邮件定时任务
  86. if setting.ServerSetting.MailStart == "1" {
  87. util.CronMail()
  88. }
  89. // 企业微信定时任务
  90. if setting.ServerSetting.WXworkStart == "1" {
  91. util.CronWXwork()
  92. }
  93. // 系统定时任务
  94. util.CronServer()
  95. // 现代牧业eas 系统对接初始化
  96. util.InitWebS(setting.ServerSetting.EasName, setting.ServerSetting.EasPassword, setting.ServerSetting.EasUrl)
  97. pservice.SapJobInit()
  98. routersInit := routers.InitRouter()
  99. readTimeout := setting.ServerSetting.ReadTimeout
  100. writeTimeout := setting.ServerSetting.WriteTimeout
  101. endPoint := fmt.Sprintf(":%d", setting.ServerSetting.HttpPort)
  102. maxHeaderBytes := 1 << 20
  103. server := &http.Server{
  104. Addr: endPoint,
  105. Handler: routersInit,
  106. ReadTimeout: readTimeout,
  107. WriteTimeout: writeTimeout,
  108. MaxHeaderBytes: maxHeaderBytes,
  109. }
  110. if setting.CommSetting.PortName != "" {
  111. go comm.OpenComm()
  112. }
  113. if strings.Trim(setting.ServerSetting.Mdns_servicename, " ") != "" {
  114. go mdns.Mdns(strings.Trim(setting.ServerSetting.Mdns_servicename, " "), setting.ServerSetting.Mdns_serviceport)
  115. }
  116. httpsPort := fmt.Sprintf(":%d", setting.ServerSetting.HttpsPort)
  117. if setting.ServerSetting.Https == 1 {
  118. log.Printf("[info] start https server listening port %s", httpsPort)
  119. _ = routersInit.RunTLS(httpsPort, setting.ServerSetting.CrtPath, setting.ServerSetting.KeyPath)
  120. } else if setting.ServerSetting.Https == 2 {
  121. log.Printf("[info] start https & http server listening port https %s, http %s", httpsPort, endPoint)
  122. go routersInit.RunTLS(httpsPort, setting.ServerSetting.CrtPath, setting.ServerSetting.KeyPath)
  123. _ = server.ListenAndServe()
  124. } else {
  125. log.Printf("[info] start http server listening port %s", endPoint)
  126. e := server.ListenAndServe()
  127. log.Default().Printf("net http listen error: %v", e)
  128. }
  129. }
  130. func (p *program) Stop(s service.Service) error {
  131. fmt.Println("程序被关闭")
  132. return nil
  133. }