132 lines
8.1 KiB
Go
132 lines
8.1 KiB
Go
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)
|
|
}
|
|
|
|
// 控制台统计路由
|
|
dashboardController := controllers.NewDashboardController()
|
|
dashboardRoutes := r.Group("/dashboard")
|
|
{
|
|
dashboardRoutes.GET("/stats", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), dashboardController.Stats)
|
|
}
|
|
|
|
// 产品溯源路由
|
|
productTracesController := controllers.NewProductTracesController()
|
|
productTracesRoutes := r.Group("/product-traces")
|
|
{
|
|
productTracesRoutes.GET("/:serialNumber/query", productTracesController.PublicQuery)
|
|
productTracesRoutes.POST("", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), productTracesController.Create)
|
|
productTracesRoutes.GET("", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), productTracesController.FindAll)
|
|
productTracesRoutes.GET("/:serialNumber", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), productTracesController.FindOne)
|
|
productTracesRoutes.PATCH("/:serialNumber", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), productTracesController.Update)
|
|
productTracesRoutes.POST("/:serialNumber/qrcode", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), productTracesController.GenerateQRCode)
|
|
productTracesRoutes.POST("/:serialNumber/wechat-qrcode", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), productTracesController.UploadWechatQRCode)
|
|
productTracesRoutes.POST("/:serialNumber/revoke", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), productTracesController.Revoke)
|
|
productTracesRoutes.DELETE("/:serialNumber", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), productTracesController.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(), middleware.AdminMiddleware(), employeeSerialsController.GenerateQRCode)
|
|
employeeSerialsRoutes.GET("/:serialNumber/query", employeeSerialsController.Query)
|
|
employeeSerialsRoutes.GET("/", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), employeeSerialsController.FindAll)
|
|
employeeSerialsRoutes.PUT("/:serialNumber", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), employeeSerialsController.Update)
|
|
employeeSerialsRoutes.POST("/:serialNumber/revoke", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), employeeSerialsController.Revoke)
|
|
employeeSerialsRoutes.DELETE("/:serialNumber", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), employeeSerialsController.Delete)
|
|
}
|
|
|
|
// 用户管理路由(仅管理员)
|
|
usersController := controllers.NewUsersController()
|
|
employeesRoutes := r.Group("/employees")
|
|
{
|
|
employeesRoutes.POST("", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), usersController.Create)
|
|
employeesRoutes.GET("", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), usersController.FindAll)
|
|
employeesRoutes.PATCH("/:id", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), usersController.Update)
|
|
employeesRoutes.POST("/:id/reset-password", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), usersController.ResetPassword)
|
|
employeesRoutes.DELETE("/:id", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), usersController.Delete)
|
|
}
|
|
|
|
usersRoutes := r.Group("/users")
|
|
{
|
|
usersRoutes.GET("/assignable", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), usersController.FindAssignable)
|
|
}
|
|
|
|
// 售后工单路由
|
|
aftersalesController := controllers.NewAftersalesController()
|
|
aftersalesRoutes := r.Group("/aftersales")
|
|
{
|
|
// 公开(无需登录)
|
|
aftersalesRoutes.GET("/:serialNumber/query", aftersalesController.PublicQuery)
|
|
aftersalesRoutes.POST("/:serialNumber/site-images", aftersalesController.UploadSiteImages)
|
|
aftersalesRoutes.POST("/:serialNumber/confirm", aftersalesController.CustomerConfirm)
|
|
|
|
// 技术员 + 管理员
|
|
aftersalesRoutes.POST("", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), aftersalesController.Create)
|
|
aftersalesRoutes.GET("", middleware.JWTAuthMiddleware(), middleware.TechnicianMiddleware(), aftersalesController.FindAll)
|
|
aftersalesRoutes.GET("/:serialNumber", middleware.JWTAuthMiddleware(), middleware.TechnicianMiddleware(), aftersalesController.FindOne)
|
|
aftersalesRoutes.PATCH("/:serialNumber", middleware.JWTAuthMiddleware(), middleware.TechnicianMiddleware(), aftersalesController.Update)
|
|
aftersalesRoutes.POST("/:serialNumber/qrcode", middleware.JWTAuthMiddleware(), middleware.TechnicianMiddleware(), aftersalesController.GenerateQRCode)
|
|
aftersalesRoutes.POST("/:serialNumber/submit", middleware.JWTAuthMiddleware(), middleware.TechnicianMiddleware(), aftersalesController.SubmitForConfirmation)
|
|
|
|
// 仅管理员
|
|
aftersalesRoutes.POST("/:serialNumber/reassign", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), aftersalesController.Reassign)
|
|
aftersalesRoutes.POST("/:serialNumber/force-close", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), aftersalesController.ForceClose)
|
|
aftersalesRoutes.DELETE("/:serialNumber", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), aftersalesController.Delete)
|
|
}
|
|
|
|
// 项目工单路由
|
|
projectOrdersController := controllers.NewProjectOrdersController()
|
|
projectOrdersRoutes := r.Group("/project-orders")
|
|
{
|
|
// 公开(无需登录)
|
|
projectOrdersRoutes.GET("/:serialNumber/query", projectOrdersController.PublicQuery)
|
|
projectOrdersRoutes.POST("/:serialNumber/site-images", projectOrdersController.UploadSiteImages)
|
|
projectOrdersRoutes.POST("/:serialNumber/complete", projectOrdersController.EngineerComplete)
|
|
|
|
// 技术员 + 管理员
|
|
projectOrdersRoutes.POST("", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), projectOrdersController.Create)
|
|
projectOrdersRoutes.GET("", middleware.JWTAuthMiddleware(), middleware.TechnicianMiddleware(), projectOrdersController.FindAll)
|
|
projectOrdersRoutes.GET("/:serialNumber", middleware.JWTAuthMiddleware(), middleware.TechnicianMiddleware(), projectOrdersController.FindOne)
|
|
projectOrdersRoutes.PATCH("/:serialNumber", middleware.JWTAuthMiddleware(), middleware.TechnicianMiddleware(), projectOrdersController.Update)
|
|
projectOrdersRoutes.POST("/:serialNumber/qrcode", middleware.JWTAuthMiddleware(), middleware.TechnicianMiddleware(), projectOrdersController.GenerateQRCode)
|
|
projectOrdersRoutes.POST("/:serialNumber/submit", middleware.JWTAuthMiddleware(), middleware.TechnicianMiddleware(), projectOrdersController.SubmitCompletion)
|
|
|
|
// 仅管理员
|
|
projectOrdersRoutes.POST("/:serialNumber/reassign", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), projectOrdersController.Reassign)
|
|
projectOrdersRoutes.POST("/:serialNumber/force-close", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), projectOrdersController.ForceClose)
|
|
projectOrdersRoutes.DELETE("/:serialNumber", middleware.JWTAuthMiddleware(), middleware.AdminMiddleware(), projectOrdersController.Delete)
|
|
}
|
|
}
|