feat: cb message
This commit is contained in:
111
features/ue/cb_message/model.go
Normal file
111
features/ue/cb_message/model.go
Normal file
@@ -0,0 +1,111 @@
|
||||
package cb_message
|
||||
|
||||
import (
|
||||
"database/sql/driver"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type CBEventStatus int
|
||||
|
||||
// CBEventStatus CB事件状态枚举
|
||||
const (
|
||||
CBEventStatusNull CBEventStatus = iota // 未知状态
|
||||
CBEventStatusActive
|
||||
CBEventStatusInactive
|
||||
)
|
||||
|
||||
func (status CBEventStatus) Enum() string {
|
||||
switch status {
|
||||
case CBEventStatusNull:
|
||||
return "NULL"
|
||||
case CBEventStatusActive:
|
||||
return "ACTIVE"
|
||||
case CBEventStatusInactive:
|
||||
return "INACTIVE"
|
||||
default:
|
||||
return "UNKNOWN"
|
||||
}
|
||||
}
|
||||
|
||||
func (status CBEventStatus) String() string {
|
||||
return fmt.Sprintf("%d", status)
|
||||
}
|
||||
|
||||
// ParseCBEventStatus 将字符串转换为 枚举类型
|
||||
func ParseCBEventStatus(s string) CBEventStatus {
|
||||
if i, err := strconv.Atoi(s); err == nil {
|
||||
return CBEventStatus(i)
|
||||
}
|
||||
// 如果转换失败,则按名称匹配(忽略大小写)
|
||||
switch strings.ToUpper(s) {
|
||||
case "NULL":
|
||||
return CBEventStatusNull
|
||||
case "ACTIVE":
|
||||
return CBEventStatusActive
|
||||
case "INACTIVE":
|
||||
return CBEventStatusInactive
|
||||
case "":
|
||||
// 如果字符串为空,则返回未知状态
|
||||
return CBEventStatusNull
|
||||
default:
|
||||
// 默认返回未知状态
|
||||
return CBEventStatusNull
|
||||
}
|
||||
}
|
||||
|
||||
// CBMessageQuery 查询条件结构体
|
||||
type CBMessageQuery struct {
|
||||
NeType string `form:"neType"` // 网元类型
|
||||
NeId string `form:"neId"` // 网元ID
|
||||
EventName string `form:"eventName"` // 事件名称
|
||||
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 CBMessage CB消息
|
||||
type CBMessage struct {
|
||||
Id int64 `json:"id" gorm:"column:id"` // CB消息ID
|
||||
NeType string `json:"neType" gorm:"column:ne_type"` // 网元类型
|
||||
NeId string `json:"neId" gorm:"column:ne_id"` // 网元ID
|
||||
MessageJson json.RawMessage `json:"messageJson" gorm:"column:message_json"` // 消息内容JSON
|
||||
Status CBEventStatus `json:"status" gorm:"column:status"` // 消息状态
|
||||
CreatedAt int64 `json:"createdAt" gorm:"column:created_at"` // 创建时间
|
||||
UpdatedAt *int64 `json:"updatedAt" gorm:"column:updated_at;autoUpdateTime:false"` // 更新时间
|
||||
}
|
||||
|
||||
// TableName 表名称
|
||||
func (*CBMessage) TableName() string {
|
||||
return "cb_message"
|
||||
}
|
||||
|
||||
// Scan 实现 sql.Scanner 接口,支持从数据库字符串转为 CBEventStatus
|
||||
func (s *CBEventStatus) Scan(value interface{}) error {
|
||||
switch v := value.(type) {
|
||||
case string:
|
||||
*s = ParseCBEventStatus(v)
|
||||
return nil
|
||||
case []byte:
|
||||
*s = ParseCBEventStatus(string(v))
|
||||
return nil
|
||||
case int64:
|
||||
*s = CBEventStatus(v)
|
||||
return nil
|
||||
case int:
|
||||
*s = CBEventStatus(v)
|
||||
return nil
|
||||
default:
|
||||
return errors.New("unsupported Scan type for CBEventStatus")
|
||||
}
|
||||
}
|
||||
|
||||
// Value 实现 driver.Valuer 接口,支持将 CBEventStatus 存为字符串
|
||||
func (s CBEventStatus) Value() (driver.Value, error) {
|
||||
return s.Enum(), nil
|
||||
}
|
||||
Reference in New Issue
Block a user