main.go 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package main
  2. import (
  3. _ "ERP_salary/Nats"
  4. "ERP_salary/conf"
  5. "ERP_salary/controllers"
  6. "ERP_salary/logs"
  7. _ "ERP_salary/models"
  8. _ "ERP_salary/models/Account"
  9. _ "ERP_salary/models/Performance"
  10. _ "ERP_salary/models/Salary"
  11. _ "ERP_salary/routers"
  12. "fmt"
  13. "github.com/beego/beego/v2/adapter/orm"
  14. beego "github.com/beego/beego/v2/server/web"
  15. "github.com/beego/beego/v2/server/web/context"
  16. "github.com/beego/beego/v2/server/web/filter/cors"
  17. _ "github.com/go-sql-driver/mysql"
  18. "runtime"
  19. "strconv"
  20. )
  21. func init() {
  22. fmt.Println(runtime.GOOS)
  23. orm.RegisterDriver("mysql", orm.DRMySQL)
  24. //orm.RegisterDataBase("default", "mysql", "zdxq:7e5853d9178edfcc@tcp(47.108.133.234:3306)/zdxq?charset=utf8",100,200)
  25. orm.RegisterDataBase("default", "mysql",
  26. conf.MysqlServer_Username+":"+conf.MysqlServer_Password+"@tcp("+conf.MysqlServer_UrlPort+")/"+conf.MysqlServer_Database+"?charset=utf8mb4&loc=Local&parseTime=True",
  27. conf.MysqlServer_MaxIdleConnections, conf.MysqlServer_MaxOpenConnections)
  28. orm.RunSyncdb("default", false, false) // 创建数据库
  29. }
  30. func main() {
  31. HTTPPort, _ := beego.AppConfig.String("HTTPPort")
  32. HTTPPort_int, _ := strconv.Atoi(HTTPPort)
  33. beego.InsertFilter("*", beego.BeforeRouter, cors.Allow(&cors.Options{
  34. // 允许访问所有源
  35. AllowAllOrigins: true,
  36. // 可选参数"GET", "POST", "PUT", "DELETE", "OPTIONS" (*为所有)
  37. AllowMethods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"},
  38. // 指的是允许的Header的种类
  39. AllowHeaders: []string{"X-Custom-Header", "accept", "Origin", "Authorization", "Access-Control-Allow-Origin", "Access-Control-Allow-Headers", "Content-Type", "User_tokey"},
  40. // 公开的HTTP标头列表
  41. ExposeHeaders: []string{"Content-Length", "Access-Control-Allow-Origin", "Access-Control-Allow-Headers", "Content-Type"},
  42. // 如果设置,则允许共享身份验证凭据,例如cookie
  43. AllowCredentials: true,
  44. }))
  45. appname, _ := beego.AppConfig.String("appname")
  46. beego.BConfig.AppName = appname // 项目名
  47. beego.BConfig.ServerName = appname //server 名称
  48. beego.BConfig.RunMode = "dev" // 应用的运行模式
  49. beego.BConfig.Listen.HTTPPort = HTTPPort_int //监听端口 本地:8518 线上:8528
  50. beego.BConfig.WebConfig.AutoRender = false
  51. beego.BConfig.RecoverPanic = true
  52. beego.BConfig.RecoverFunc = RecoverPanic
  53. //go controllers.SyncVerifyPercentage()
  54. go controllers.Cron_Percentage()
  55. beego.Run()
  56. }
  57. func RecoverPanic(ctx *context.Context, config *beego.Config) {
  58. if err := recover(); err != nil {
  59. ctx.ResponseWriter.Header().Set("Access-Control-Allow-Origin", ctx.Request.Header.Get("Origin"))
  60. var stack []string
  61. for i := 1; ; i++ {
  62. _, file, line, ok := runtime.Caller(i)
  63. if !ok {
  64. break
  65. }
  66. logs.Error(fmt.Sprintf("%s:%d", file, line))
  67. stack = append(stack, fmt.Sprintln(fmt.Sprintf("%s:%d", file, line)))
  68. }
  69. //显示错误
  70. data := map[string]interface{}{
  71. "ret": 4000,
  72. "AppError": fmt.Sprintf("%v", err),
  73. "RequestMethod": ctx.Input.Method(),
  74. "RequestURL": ctx.Input.URI(),
  75. "RemoteAddr": ctx.Input.IP(),
  76. "Stack": stack,
  77. "GoVersion": runtime.Version(),
  78. "Code": 500,
  79. "Msg": "请稍后重试!",
  80. }
  81. _ = ctx.Output.JSON(data, true, true)
  82. //if ctx.Output.Status != 0 {
  83. // ctx.ResponseWriter.WriteHeader(ctx.Output.Status)
  84. //} else {
  85. // ctx.ResponseWriter.WriteHeader(500)
  86. //}
  87. }
  88. }