a894dcb704e41b5e347879639a0ba431186c19fa.svn-base 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. package main
  2. import (
  3. "./comm"
  4. "./mdns"
  5. "./models"
  6. "./pkg/logging"
  7. "./pkg/setting"
  8. "./pkg/util"
  9. "./routers"
  10. "fmt"
  11. "github.com/kardianos/service"
  12. "log"
  13. "net/http"
  14. "os"
  15. "sync"
  16. "strings"
  17. //"unsafe"
  18. )
  19. // @title 科湃腾Go语言后台API
  20. // @version 1.1.2
  21. // @description kptyun_service
  22. // @contact.name 朱红宾
  23. // @contact.url https://www.dairyinfo.com.cn
  24. // @contact.email kptzhu@163.com
  25. // @host
  26. // @BasePath /
  27. func main() {
  28. setting.Setup("")
  29. models.Setup()
  30. logging.Setup()
  31. svcConfig := &service.Config{
  32. Name: setting.ServerSetting.ServerName, //服务显示名称
  33. DisplayName: setting.ServerSetting.DisplayName, //服务名称
  34. Description: setting.ServerSetting.Description, //服务描述
  35. }
  36. prg := &program{}
  37. s, err := service.New(prg, svcConfig)
  38. if err != nil {
  39. fmt.Println(err, "service.New() err",err)
  40. }
  41. if len(os.Args) > 1 {
  42. if os.Args[1] == "install" {
  43. err = s.Install()
  44. if err != nil {
  45. fmt.Println("install err", err)
  46. } else {
  47. fmt.Println("install success")
  48. }
  49. return
  50. }
  51. if os.Args[1] == "remove" {
  52. err = s.Uninstall()
  53. if err != nil {
  54. fmt.Println("Uninstall err", err)
  55. } else {
  56. fmt.Println("Uninstall success")
  57. }
  58. return
  59. }
  60. }
  61. _ = s.Run()
  62. }
  63. type program struct{}
  64. func (p *program) Start(s service.Service) error {
  65. go p.run()
  66. return nil
  67. }
  68. func (p *program) run() {
  69. // 代码写在这儿
  70. if setting.ServerSetting.MailStart == "1" {
  71. util.CronMail()
  72. }
  73. if setting.ServerSetting.WXworkStart == "1" {
  74. util.CronWXwork()
  75. }
  76. //util.InitWebS("田欣宇","xdmy@1234","http://60.174.151.11:6888")
  77. //println(setting.ServerSetting.EasName,setting.ServerSetting.EasPassword,setting.ServerSetting.EasUrl)
  78. //println(sessionid)
  79. util.InitWebS(setting.ServerSetting.EasName,setting.ServerSetting.EasPassword,setting.ServerSetting.EasUrl)
  80. //s,err :=util.EASWebServiceLogin()
  81. //logging.Info("eas账号",s,err)
  82. //sessionid,_ := util.EASWebServiceLogin()
  83. ////err = util.EASWebServiceQureyParts(sessionid,"04.04.08.01.001227")
  84. //err = util.EASWebServiceQureyBill(sessionid,"CK08210604016-RKq","006")
  85. //if err != nil {
  86. // fmt.Println("==========",err)
  87. //}
  88. //pu := util.BillLaid{}
  89. //pu.TransactionType.Number = "wrrwtwwwwwwww"
  90. //pujson,_ := json.Marshal(pu)
  91. //err = util.EASWebServicInsertPartsuselaid(s,string(pujson),"006")
  92. //if err != nil {
  93. // println(err.Error())
  94. //}
  95. //util.EASWebServiceLogout()
  96. mu :=sync.Mutex{}
  97. mu.Lock()
  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. _ = server.ListenAndServe()
  127. }
  128. }
  129. func (p *program) Stop(s service.Service) error {
  130. fmt.Println("程序被关闭")
  131. return nil
  132. }