package routes import ( "github.com/gin-gonic/gin" "git.beifan.cn/trace-system/backend-go/controllers" "git.beifan.cn/trace-system/backend-go/middleware" ) // SetupRoutes 设置路由 func SetupRoutes(r *gin.Engine) { // 健康检查 r.GET("/api/health", func(c *gin.Context) { c.JSON(200, gin.H{ "status": "ok", "message": "服务器运行正常", }) }) } // SetupAPIRoutes 设置 API 路由 func SetupAPIRoutes(r *gin.RouterGroup) { // 认证路由 authController := controllers.NewAuthController() authRoutes := r.Group("/auth") { authRoutes.POST("/login", authController.Login) authRoutes.POST("/logout", middleware.JWTAuthMiddleware(), authController.Logout) authRoutes.GET("/profile", middleware.JWTAuthMiddleware(), authController.GetProfile) authRoutes.PUT("/profile", middleware.JWTAuthMiddleware(), authController.UpdateProfile) authRoutes.POST("/change-password", middleware.JWTAuthMiddleware(), authController.ChangePassword) } // 序列号路由 serialsController := controllers.NewSerialsController() serialsRoutes := r.Group("/serials") { serialsRoutes.PATCH("/:serialNumber", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), serialsController.Update) serialsRoutes.POST("/generate", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), serialsController.Generate) serialsRoutes.POST("/generate-with-prefix", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), serialsController.GenerateWithPrefix) serialsRoutes.POST("/:serialNumber/qrcode", middleware.JWTAuthMiddleware(), serialsController.GenerateQRCode) serialsRoutes.GET("/:serialNumber/query", serialsController.Query) serialsRoutes.GET("/", middleware.JWTAuthMiddleware(), serialsController.FindAll) serialsRoutes.PUT("/:serialNumber", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), serialsController.Update) serialsRoutes.POST("/:serialNumber/revoke", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), serialsController.Revoke) } // 企业管理路由 companiesController := controllers.NewCompaniesController() companiesRoutes := r.Group("/companies") { companiesRoutes.GET("/stats/overview", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), companiesController.StatsOverview) companiesRoutes.GET("/", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), companiesController.FindAll) companiesRoutes.GET("/:companyName", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), companiesController.FindOne) companiesRoutes.POST("/", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), companiesController.Create) companiesRoutes.PATCH("/:companyName", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), companiesController.Update) companiesRoutes.PUT("/:companyName", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), companiesController.Update) companiesRoutes.DELETE("/:companyName/serials/:serialNumber", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), companiesController.DeleteSerial) companiesRoutes.POST("/:companyName/revoke", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), companiesController.Revoke) companiesRoutes.DELETE("/:companyName", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), companiesController.Delete) } // 员工赋码路由 employeeSerialsController := controllers.NewEmployeeSerialsController() employeeSerialsRoutes := r.Group("/employee-serials") { employeeSerialsRoutes.PATCH("/:serialNumber", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), employeeSerialsController.Update) employeeSerialsRoutes.POST("/generate", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), employeeSerialsController.Generate) employeeSerialsRoutes.POST("/:serialNumber/qrcode", middleware.JWTAuthMiddleware(), employeeSerialsController.GenerateQRCode) employeeSerialsRoutes.GET("/:serialNumber/query", employeeSerialsController.Query) employeeSerialsRoutes.GET("/", middleware.JWTAuthMiddleware(), employeeSerialsController.FindAll) employeeSerialsRoutes.PUT("/:serialNumber", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), employeeSerialsController.Update) employeeSerialsRoutes.POST("/:serialNumber/revoke", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), employeeSerialsController.Revoke) } }