duidui_fiber/internal/document/handler/document_handler.go
2026-03-27 10:34:03 +08:00

124 lines
3.9 KiB
Go
Raw Permalink 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 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})
}