router.go 1.5 KB

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