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