129 lines
3.8 KiB
Go
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"
|
|
}
|