You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

44 lines
966 B

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)
}