Files
ops2/backend/ai_work/api/v1/routes.go
T
2026-04-01 12:09:02 +08:00

120 lines
4.3 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package v1
import (
"net/http"
"ops/internal/database"
"ops/internal/handler"
"ops/internal/middleware"
"github.com/gin-gonic/gin"
"gorm.io/gorm"
)
var (
db *gorm.DB
authHandler *handler.AuthHandler
fileHandler *handler.FileHandler
purchaseHandler *handler.PurchaseHandler
)
func init() {
db = database.GetDB()
authHandler = handler.NewAuthHandler(db)
fileHandler = handler.NewFileHandler(db)
purchaseHandler = handler.NewPurchaseHandler(db)
}
// RegisterRoutes 注册所有v1版本的API路由
func RegisterRoutes(r *gin.RouterGroup) {
// API根路径测试
r.GET("/", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"code": "0",
"message": "OPS API v1",
"data": nil,
})
})
// 静态文件路由 - 保持兼容性
r.StaticFS("/static", http.Dir("./dist"))
// 用户认证相关路由
userGroup := r.Group("/users")
{
// 用户认证
userGroup.POST("/login", authHandler.UserLogin)
userGroup.POST("/register", authHandler.UserRegister)
userGroup.POST("/forgot-password", authHandler.UserForgotPassword)
userGroup.POST("/reset-password", authHandler.UserResetPassword)
// 用户信息 - 需要认证
userGroup.PUT("/profile", middleware.AuthToken(), authHandler.UserUpdateProfile)
userGroup.GET("/profile", middleware.AuthToken(), authHandler.UserProfile)
userGroup.POST("/logout", middleware.AuthToken(), authHandler.UserLogout)
// 用户管理(管理员) - TODO: 实现管理员功能
userGroup.GET("/list", middleware.AuthToken(), adminMiddleware(), getUserList)
userGroup.POST("/create", middleware.AuthToken(), adminMiddleware(), createUser)
userGroup.PUT("/:id", middleware.AuthToken(), adminMiddleware(), updateUser)
userGroup.DELETE("/:id", middleware.AuthToken(), adminMiddleware(), deleteUser)
}
// 文件上传管理 - v1 API
// 注意:具体路由必须放在通配路由之前
r.POST("/files/upload", middleware.AuthToken(), fileHandler.UploadFile)
r.GET("/files/list", middleware.AuthToken(), fileHandler.GetFileList)
r.GET("/files/:id", middleware.AuthToken(), fileHandler.GetFileByID)
r.DELETE("/files/:id", middleware.AuthToken(), fileHandler.DeleteFile)
r.GET("/files/download/:hash", fileHandler.DownloadFile)
r.GET("/files/get/:hash", fileHandler.GetFile)
// 采购订单管理
purchaseGroup := r.Group("/purchase")
{
// 保持与前端兼容的POST路由(原始API使用POST
purchaseGroup.POST("/getorders", middleware.AuthToken(), purchaseHandler.GetOrders)
purchaseGroup.POST("/addorder", middleware.AuthToken(), purchaseHandler.CreateOrder)
// RESTful风格的新API
purchaseGroup.GET("/orders", middleware.AuthToken(), purchaseHandler.GetOrders)
purchaseGroup.POST("/orders", middleware.AuthToken(), purchaseHandler.CreateOrder)
purchaseGroup.GET("/orders/:id", middleware.AuthToken(), purchaseHandler.GetOrderDetails)
// TODO: 实现更新、删除和其他功能
purchaseGroup.PUT("/orders/:id", middleware.AuthToken(), purchaseUpdateOrder)
purchaseGroup.DELETE("/orders/:id", middleware.AuthToken(), purchaseDeleteOrder)
purchaseGroup.POST("/orders/:id/costs", middleware.AuthToken(), purchaseAddCost)
purchaseGroup.PUT("/orders/:id/costs/:costId", middleware.AuthToken(), purchaseUpdateCost)
purchaseGroup.DELETE("/orders/:id/costs/:costId", middleware.AuthToken(), purchaseDeleteCost)
}
// 系统管理(管理员)
systemGroup := r.Group("/system")
{
systemGroup.GET("/status", systemStatus)
systemGroup.GET("/config", middleware.AuthToken(), adminMiddleware(), systemGetConfig)
systemGroup.PUT("/config", middleware.AuthToken(), adminMiddleware(), systemUpdateConfig)
}
}
// 管理员中间件占位函数
func adminMiddleware() gin.HandlerFunc {
return func(c *gin.Context) {
// TODO: 实现管理员权限检查
c.Next()
}
}
// 占位函数 - 将在后续步骤中实现
func getUserList(c *gin.Context) {}
func createUser(c *gin.Context) {}
func updateUser(c *gin.Context) {}
func deleteUser(c *gin.Context) {}
func purchaseUpdateOrder(c *gin.Context) {}
func purchaseDeleteOrder(c *gin.Context) {}
func purchaseAddCost(c *gin.Context) {}
func purchaseUpdateCost(c *gin.Context) {}
func purchaseDeleteCost(c *gin.Context) {}
func systemStatus(c *gin.Context) {}
func systemGetConfig(c *gin.Context) {}
func systemUpdateConfig(c *gin.Context) {}