package ims_user import ( "fmt" "strconv" "strings" ) const ( // IMSI 号码长度 IMSI_MAX_LENGTH = 15 // MSISDN 号码长度 MSISDN_MAX_LENGTH = 15 ) type CallTag int const ( TAG_VoIP CallTag = iota // VoIP标记 TAG_VoLTE // VoLTE标记 TAG_UNKNOWN // 未知标记 ) func (ct CallTag) Enum() string { switch ct { case TAG_VoIP: return "VoIP" case TAG_VoLTE: return "VoLTE" default: return "unknown" } } func (ct CallTag) String() string { return fmt.Sprintf("%d", ct) } // ParseCallTag 将字符串转换为 CallTag 枚举类型 func ParseCallTag(s string) CallTag { if i, err := strconv.Atoi(s); err == nil { return CallTag(i) } // 如果转换失败,则按名称匹配(忽略大小写) switch strings.ToLower(s) { case "voip": return TAG_VoIP case "volte": return TAG_VoLTE case "": // 如果字符串为空,则返回未知标记 return TAG_UNKNOWN default: // 默认返回 VoIP return TAG_VoLTE } } // @Description IMS用户信息 type IMSUser struct { ID string `json:"id" gorm:"column:id;primaryKey;autoIncrement"` // 主键 NeId string `json:"neId" gorm:"column:ne_id"` // UDM网元标识 IMSI string `json:"imsi" gorm:"column:imsi"` // SIM卡/USIM卡ID MSISDN string `json:"msisdn" gorm:"column:msisdn"` // 用户电话号码 Tag int `json:"tag" gorm:"column:tag"` // tag: 0=VoIP, 1=VoLTE VNI string `json:"vni" gorm:"column:vni"` // VNI TenantID string `json:"tenantID" gorm:"column:tenant_id"` TenantName string `json:"tenantName" gorm:"-"` } // TableName 表名称 func (*IMSUser) TableName() string { return "u_ims_user" }