71 lines
1.6 KiB
Go
71 lines
1.6 KiB
Go
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": "删除成功"})
|
|
}
|