package handler import ( "dd_fiber_api/internal/document" "dd_fiber_api/internal/document/service" "github.com/gofiber/fiber/v2" ) // Handler 文档管理 Handler type Handler struct { svc *service.DocumentService } // NewHandler 创建 Handler func NewHandler(svc *service.DocumentService) *Handler { return &Handler{svc: svc} } // ListFolders 列出文件夹 func (h *Handler) ListFolders(c *fiber.Ctx) error { list, err := h.svc.ListFolders() if err != nil { return c.Status(500).JSON(fiber.Map{"success": false, "message": err.Error()}) } return c.JSON(fiber.Map{"success": true, "list": list}) } // CreateFolder 创建文件夹 func (h *Handler) CreateFolder(c *fiber.Ctx) error { var req document.CreateFolderRequest if err := c.BodyParser(&req); err != nil { return c.Status(400).JSON(fiber.Map{"success": false, "message": "参数错误"}) } if req.Name == "" { return c.Status(400).JSON(fiber.Map{"success": false, "message": "文件夹名称不能为空"}) } f, err := h.svc.CreateFolder(&req) if err != nil { return c.Status(400).JSON(fiber.Map{"success": false, "message": err.Error()}) } return c.JSON(fiber.Map{"success": true, "folder": f}) } // UpdateFolder 更新文件夹 func (h *Handler) UpdateFolder(c *fiber.Ctx) error { var req document.UpdateFolderRequest if err := c.BodyParser(&req); err != nil { return c.Status(400).JSON(fiber.Map{"success": false, "message": "参数错误"}) } if req.ID == "" || req.Name == "" { return c.Status(400).JSON(fiber.Map{"success": false, "message": "id 和 name 必填"}) } if err := h.svc.UpdateFolder(&req); err != nil { return c.Status(400).JSON(fiber.Map{"success": false, "message": err.Error()}) } return c.JSON(fiber.Map{"success": true}) } // DeleteFolder 删除文件夹 func (h *Handler) DeleteFolder(c *fiber.Ctx) error { id := c.Query("id") if id == "" { return c.Status(400).JSON(fiber.Map{"success": false, "message": "id 必填"}) } if err := h.svc.DeleteFolder(id); err != nil { return c.Status(400).JSON(fiber.Map{"success": false, "message": err.Error()}) } return c.JSON(fiber.Map{"success": true}) } // ListFiles 列出文件夹下的文件 func (h *Handler) ListFiles(c *fiber.Ctx) error { folderID := c.Query("folder_id") if folderID == "" { return c.Status(400).JSON(fiber.Map{"success": false, "message": "folder_id 必填"}) } list, err := h.svc.ListFiles(folderID) if err != nil { return c.Status(500).JSON(fiber.Map{"success": false, "message": err.Error()}) } return c.JSON(fiber.Map{"success": true, "list": list}) } // CreateFile 创建文档(上传后保存记录,file_url 来自 OSS 等) func (h *Handler) CreateFile(c *fiber.Ctx) error { var req document.CreateFileRequest if err := c.BodyParser(&req); err != nil { return c.Status(400).JSON(fiber.Map{"success": false, "message": "参数错误"}) } f, err := h.svc.CreateFile(&req) if err != nil { return c.Status(400).JSON(fiber.Map{"success": false, "message": err.Error()}) } return c.JSON(fiber.Map{"success": true, "file": f}) } // UpdateFile 更新文档名称 func (h *Handler) UpdateFile(c *fiber.Ctx) error { var req document.UpdateFileRequest if err := c.BodyParser(&req); err != nil { return c.Status(400).JSON(fiber.Map{"success": false, "message": "参数错误"}) } if req.ID == "" { return c.Status(400).JSON(fiber.Map{"success": false, "message": "id 必填"}) } if err := h.svc.UpdateFile(&req); err != nil { return c.Status(400).JSON(fiber.Map{"success": false, "message": err.Error()}) } return c.JSON(fiber.Map{"success": true}) } // DeleteFile 删除文档 func (h *Handler) DeleteFile(c *fiber.Ctx) error { id := c.Query("id") if id == "" { return c.Status(400).JSON(fiber.Map{"success": false, "message": "id 必填"}) } if err := h.svc.DeleteFile(id); err != nil { return c.Status(400).JSON(fiber.Map{"success": false, "message": err.Error()}) } return c.JSON(fiber.Map{"success": true}) }