This commit is contained in:
97
internal/handler/admin/export_task.go
Normal file
97
internal/handler/admin/export_task.go
Normal file
@@ -0,0 +1,97 @@
|
||||
package admin
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"github.com/gofiber/fiber/v2"
|
||||
|
||||
"github.com/break/junhong_cmp_fiber/internal/model/dto"
|
||||
exportTaskService "github.com/break/junhong_cmp_fiber/internal/service/export_task"
|
||||
"github.com/break/junhong_cmp_fiber/pkg/errors"
|
||||
"github.com/break/junhong_cmp_fiber/pkg/response"
|
||||
)
|
||||
|
||||
// ExportTaskHandler 导出任务 Handler。
|
||||
type ExportTaskHandler struct {
|
||||
service *exportTaskService.Service
|
||||
}
|
||||
|
||||
// NewExportTaskHandler 创建导出任务 Handler。
|
||||
func NewExportTaskHandler(service *exportTaskService.Service) *ExportTaskHandler {
|
||||
return &ExportTaskHandler{service: service}
|
||||
}
|
||||
|
||||
// Create 创建导出任务。
|
||||
// POST /api/admin/export-tasks
|
||||
func (h *ExportTaskHandler) Create(c *fiber.Ctx) error {
|
||||
var req dto.CreateExportTaskRequest
|
||||
if err := c.BodyParser(&req); err != nil {
|
||||
return errors.New(errors.CodeInvalidParam)
|
||||
}
|
||||
if req.Scene == "" {
|
||||
return errors.New(errors.CodeInvalidParam, "导出场景不能为空")
|
||||
}
|
||||
if req.Format == "" {
|
||||
return errors.New(errors.CodeInvalidParam, "导出格式不能为空")
|
||||
}
|
||||
|
||||
result, err := h.service.CreateTask(c.UserContext(), &req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return response.Success(c, result)
|
||||
}
|
||||
|
||||
// List 查询导出任务列表。
|
||||
// GET /api/admin/export-tasks
|
||||
func (h *ExportTaskHandler) List(c *fiber.Ctx) error {
|
||||
var req dto.ListExportTaskRequest
|
||||
if err := c.QueryParser(&req); err != nil {
|
||||
return errors.New(errors.CodeInvalidParam)
|
||||
}
|
||||
|
||||
result, err := h.service.ListTasks(c.UserContext(), &req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return response.SuccessWithPagination(c, result.List, result.Total, result.Page, result.PageSize)
|
||||
}
|
||||
|
||||
// GetByID 查询导出任务详情。
|
||||
// GET /api/admin/export-tasks/:id
|
||||
func (h *ExportTaskHandler) GetByID(c *fiber.Ctx) error {
|
||||
id, err := parseExportTaskID(c.Params("id"))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
result, err := h.service.GetTaskDetail(c.UserContext(), id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return response.Success(c, result)
|
||||
}
|
||||
|
||||
// Cancel 取消导出任务。
|
||||
// POST /api/admin/export-tasks/:id/cancel
|
||||
func (h *ExportTaskHandler) Cancel(c *fiber.Ctx) error {
|
||||
id, err := parseExportTaskID(c.Params("id"))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
result, err := h.service.CancelTask(c.UserContext(), id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return response.Success(c, result)
|
||||
}
|
||||
|
||||
func parseExportTaskID(idStr string) (uint, error) {
|
||||
id, err := strconv.ParseUint(idStr, 10, 64)
|
||||
if err != nil {
|
||||
return 0, errors.New(errors.CodeInvalidParam, "无效的任务ID")
|
||||
}
|
||||
return uint(id), nil
|
||||
}
|
||||
Reference in New Issue
Block a user