Files
be.ems/features/ue/ims_user/model.go

76 lines
1.8 KiB
Go

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"
}