Files
team-api/api/admin/v1/ticket.go
T

112 lines
4.3 KiB
Go

package v1
import (
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gtime"
)
// === 工单管理(管理后台) ===
type TicketListReq struct {
g.Meta `path:"/tickets" method:"get" mime:"json" tags:"管理后台-工单" summary:"工单列表"`
Page int `json:"page" in:"query" d:"1"`
PageSize int `json:"page_size" in:"query" d:"20"`
Status string `json:"status" in:"query"`
Category string `json:"category" in:"query"`
TenantID int64 `json:"tenant_id" in:"query"`
AssignedAdminID int64 `json:"assigned_admin_id" in:"query"`
}
type TicketItem struct {
Id int64 `json:"id"`
TenantId int64 `json:"tenant_id"`
UserId int64 `json:"user_id"`
Category string `json:"category"`
Title string `json:"title"`
Description string `json:"description"`
Urgency string `json:"urgency"`
Status string `json:"status"`
AssignedAdminId int64 `json:"assigned_admin_id"`
TenantName string `json:"tenant_name"`
UserDisplayName string `json:"user_display_name"`
AssignedAdminName string `json:"assigned_admin_name"`
CreatedAt *gtime.Time `json:"created_at"`
UpdatedAt *gtime.Time `json:"updated_at"`
}
type TicketListRes struct {
List []*TicketItem `json:"list"`
Total int `json:"total"`
Page int `json:"page"`
PageSize int `json:"page_size"`
}
type TicketGetReq struct {
g.Meta `path:"/tickets/{id}" method:"get" mime:"json" tags:"管理后台-工单" summary:"工单详情"`
Id int64 `json:"id" in:"path" v:"required|min:1"`
}
type TicketReplyItem struct {
Id int64 `json:"id"`
TicketId int64 `json:"ticket_id"`
UserId int64 `json:"user_id"`
UserType string `json:"user_type"`
UserName string `json:"user_name"`
Content string `json:"content"`
CreatedAt *gtime.Time `json:"created_at"`
}
type TicketAttachmentItem struct {
Id int64 `json:"id"`
TicketId int64 `json:"ticket_id"`
ReplyId int64 `json:"reply_id"`
FileName string `json:"file_name"`
FileUrl string `json:"file_url"`
FileSize int `json:"file_size"`
ContentType string `json:"content_type"`
CreatedAt *gtime.Time `json:"created_at"`
}
type TicketGetRes struct {
Id int64 `json:"id"`
TenantId int64 `json:"tenant_id"`
UserId int64 `json:"user_id"`
Category string `json:"category"`
Title string `json:"title"`
Description string `json:"description"`
Urgency string `json:"urgency"`
Status string `json:"status"`
AssignedAdminId int64 `json:"assigned_admin_id"`
TenantName string `json:"tenant_name"`
UserDisplayName string `json:"user_display_name"`
AssignedAdminName string `json:"assigned_admin_name"`
CreatedAt *gtime.Time `json:"created_at"`
UpdatedAt *gtime.Time `json:"updated_at"`
Replies []*TicketReplyItem `json:"replies"`
Attachments []*TicketAttachmentItem `json:"attachments"`
}
type TicketAssignReq struct {
g.Meta `path:"/tickets/{id}/assign" method:"put" mime:"json" tags:"管理后台-工单" summary:"分配工单"`
Id int64 `json:"id" in:"path" v:"required|min:1"`
AdminID int64 `json:"admin_id" v:"required|min:1"`
}
type TicketAssignRes struct{}
type TicketReplyReq struct {
g.Meta `path:"/tickets/{id}/reply" method:"post" mime:"json" tags:"管理后台-工单" summary:"回复工单"`
Id int64 `json:"id" in:"path" v:"required|min:1"`
Content string `json:"content" v:"required"`
}
type TicketReplyRes struct{}
type TicketStatusUpdateReq struct {
g.Meta `path:"/tickets/{id}/status" method:"put" mime:"json" tags:"管理后台-工单" summary:"更新工单状态"`
Id int64 `json:"id" in:"path" v:"required|min:1"`
Status string `json:"status" v:"required|in:pending,processing,replied,closed,reopened"`
}
type TicketStatusUpdateRes struct{}