package handlers import ( "github.com/gin-gonic/gin" "gorm.io/gorm" "soda-api/backend/internal/models" "soda-api/backend/internal/utils" ) type TicketHandler struct { db *gorm.DB } func NewTicketHandler(db *gorm.DB) *TicketHandler { return &TicketHandler{db: db} } func (h *TicketHandler) List(c *gin.Context) { var tickets []models.Ticket if err := h.db.Find(&tickets).Error; err != nil { utils.JSONError(c, 500, "获取工单失败") return } utils.JSONSuccess(c, tickets) } func (h *TicketHandler) Create(c *gin.Context) { var ticket models.Ticket if err := c.ShouldBindJSON(&ticket); err != nil { utils.JSONError(c, 400, "工单信息不完整") return } if ticket.Status == "" { ticket.Status = "处理中" } if ticket.Priority == "" { ticket.Priority = "中" } if err := h.db.Create(&ticket).Error; err != nil { utils.JSONError(c, 500, "创建工单失败") return } utils.JSONSuccess(c, ticket) } func (h *TicketHandler) Update(c *gin.Context) { var ticket models.Ticket if err := h.db.First(&ticket, c.Param("id")).Error; err != nil { utils.JSONError(c, 404, "工单不存在") return } if err := c.ShouldBindJSON(&ticket); err != nil { utils.JSONError(c, 400, "工单数据无效") return } if err := h.db.Save(&ticket).Error; err != nil { utils.JSONError(c, 500, "更新失败") return } utils.JSONSuccess(c, ticket) } func (h *TicketHandler) Delete(c *gin.Context) { if err := h.db.Delete(&models.Ticket{}, c.Param("id")).Error; err != nil { utils.JSONError(c, 500, "删除失败") return } utils.JSONSuccess(c, gin.H{"message": "删除成功"}) }