router.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package routers
  2. import (
  3. "mtp2_if/controllers/cptrade"
  4. "mtp2_if/logger"
  5. "mtp2_if/token"
  6. "time"
  7. "github.com/gin-gonic/gin"
  8. // Swagger生成的文档
  9. _ "mtp2_if/docs"
  10. ginSwagger "github.com/swaggo/gin-swagger"
  11. "github.com/swaggo/gin-swagger/swaggerFiles"
  12. )
  13. // InitRouter 初始化路由器的方法
  14. func InitRouter() *gin.Engine {
  15. r := gin.New()
  16. // 设置日志中间件
  17. r.Use(ginLoggerMiddleware())
  18. // 设置奔溃中间件
  19. r.Use(ginRecoveryMiddleware())
  20. // Swagger
  21. r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
  22. // 路由分组
  23. apiR := r.Group("/api")
  24. apiR.Use(token.Auth())
  25. // ************************ 产能预售 ************************
  26. cpTradeR := apiR.Group("CPTrade")
  27. cpTradeR.Use()
  28. {
  29. // 查询产能预售申请表
  30. cpTradeR.GET("/QueryPreasleApply", cptrade.QueryPreasleApply)
  31. }
  32. return r
  33. }
  34. func ginLoggerMiddleware() gin.HandlerFunc {
  35. return func(c *gin.Context) {
  36. start := time.Now()
  37. c.Next()
  38. end := time.Now()
  39. latency := end.Sub(start)
  40. path := c.Request.URL.RequestURI()
  41. clientip := c.ClientIP()
  42. method := c.Request.Method
  43. statuscode := c.Writer.Status()
  44. logger.GetLogger().Infof("|%3d|%13v|%15s|%s %s",
  45. statuscode,
  46. latency,
  47. clientip,
  48. method,
  49. path)
  50. }
  51. }
  52. func ginRecoveryMiddleware() gin.HandlerFunc {
  53. return gin.RecoveryWithWriter(logger.GetLogWriter())
  54. }