package task import ( "net/http" "strconv" "task-track-backend/model" "task-track-backend/pkg/database" "github.com/gin-gonic/gin" ) func (h *TaskHandler) GetTask(c *gin.Context) { // 获取任务ID taskIDStr := c.Param("id") taskID, err := strconv.ParseUint(taskIDStr, 10, 32) if err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": "无效的任务ID"}) return } db := database.GetDB() var task model.Task // 预加载相关数据:创建者、分配者、组织、评论、附件 err = db.Preload("Creator"). Preload("Assignee"). Preload("Organization"). Preload("Comments"). Preload("Comments.User"). Preload("Attachments"). First(&task, uint(taskID)).Error if err != nil { if err.Error() == "record not found" { c.JSON(http.StatusNotFound, gin.H{"error": "任务不存在"}) return } c.JSON(http.StatusInternalServerError, gin.H{"error": "获取任务失败"}) return } c.JSON(http.StatusOK, task) }