Files
be.ems/features/ue/mf_callback_ticket/model.go
2025-07-01 16:48:51 +08:00

129 lines
3.8 KiB
Go

package mf_callback_ticket
import (
"fmt"
"strconv"
"strings"
)
type TicketStatus int
// TicketStatus 工单状态
const (
TicketStatusNull TicketStatus = iota // 未知状态
TicketStatusNew
TicketStatusInProgress
// TicketStatusFailed
TicketStatusNoAnswer1
TicketStatusNoAnswer2
// TicketStatusBusy
// TicketStatusCancelled
TicketStatusTimeout
TicketStatusPending
// TicketStatusAnswered
// TicketStatusCompleted
TicketStatusClosed
)
func (ts TicketStatus) Enum() string {
switch ts {
case TicketStatusNull:
return "NULL"
case TicketStatusNew:
return "NEW"
case TicketStatusInProgress:
return "IN_PROGRESS"
case TicketStatusNoAnswer1:
return "NO_ANSWER_1"
case TicketStatusNoAnswer2:
return "NO_ANSWER_2"
case TicketStatusTimeout:
return "TIMEOUT"
case TicketStatusPending:
return "PENDING"
case TicketStatusClosed:
return "CLOSED"
// 如果没有匹配的状态,返回未知状态
default:
return "UNKNOWN"
}
}
func (ts TicketStatus) String() string {
return fmt.Sprintf("%d", ts)
}
// ParseCallTag 将字符串转换为 CallTag 枚举类型
func ParseCallTag(s string) TicketStatus {
if i, err := strconv.Atoi(s); err == nil {
return TicketStatus(i)
}
// 如果转换失败,则按名称匹配(忽略大小写)
switch strings.ToUpper(s) {
case "NULL":
return TicketStatusNull
case "NEW":
return TicketStatusNew
case "IN_PROGRESS":
return TicketStatusInProgress
case "NO_ANSWER_1":
return TicketStatusNoAnswer1
case "NO_ANSWER_2":
return TicketStatusNoAnswer2
case "TIMEOUT":
return TicketStatusTimeout
case "PENDING":
return TicketStatusPending
case "CLOSED":
return TicketStatusClosed
case "":
// 如果字符串为空,则返回未知状态
return TicketStatusNull
default:
// 默认返回未知状态
return TicketStatusNull
}
}
// CallbackTicketQuery 查询条件结构体
type CallbackTicketQuery struct {
CallerNumber string `form:"callerNumber"`
AgentName string `form:"agentName"`
Status string `form:"status"`
StartTime string `form:"startTime"` // 创建时间范围-起始
EndTime string `form:"endTime"` // 创建时间范围-结束
PageNum int `form:"pageNum" binding:"required"`
PageSize int `form:"pageSize" binding:"required"`
}
// @Description VoLTE用户信息
type CallbackTicket struct {
TicketId int64 `json:"ticketId" gorm:"column:ticket_id"` // 工单ID
CallerNumber string `json:"callerNumber" gorm:"column:caller_number"` // 主叫号码
CalleeNumber string `json:"calleeNumber" gorm:"column:callee_number"` // 被叫号码
Status string `json:"status" gorm:"column:status"` // 工单状态
AgentName string `json:"agentName" gorm:"column:agent_name"` // 座席名称
AgentEmail string `json:"agentEmail" gorm:"column:agent_email"` // 座席邮箱
AgentMobile string `json:"agentMobile" gorm:"column:agent_mobile"` // 座席手机号码
Comment string `json:"comment" gorm:"column:comment"` // 工单备注
MsdData string `json:"msdData" gorm:"column:msd_data"` // MSD数据
RmUid string `json:"rmUid" gorm:"column:rm_uid"` // RM用户ID
CreatedAt int64 `json:"createdAt" gorm:"column:created_at"` // 创建时间
UpdatedAt *int64 `json:"updatedAt" gorm:"column:updated_at;autoUpdateTime:false"` // 更新时间
}
type AgentInfo struct {
Index int `json:"index"`
Name string `json:"name"`
Online bool `json:"online"`
Email string `json:"email"`
Mobile string `json:"mobile"`
Domain string `json:"domain"`
Password string `json:"password"`
}
// TableName 表名称
func (*CallbackTicket) TableName() string {
return "mf_callback_ticket"
}