fix: not reload for batch add & delete failed imsi length < 15
This commit is contained in:
@@ -192,7 +192,10 @@ func (s *IMSUserController) Adds(c *gin.Context) {
|
|||||||
c.JSON(200, result.ErrMsg(err.Error()))
|
c.JSON(200, result.ErrMsg(err.Error()))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
// 命令ok时
|
||||||
|
if strings.Contains(data, "ok") {
|
||||||
|
s.imsUserService.LoadData(neId, body.IMSI, num)
|
||||||
|
}
|
||||||
c.JSON(200, result.OkData(data))
|
c.JSON(200, result.OkData(data))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -206,7 +209,7 @@ func (s *IMSUserController) Edit(c *gin.Context) {
|
|||||||
|
|
||||||
var body model.IMSUser
|
var body model.IMSUser
|
||||||
err := c.ShouldBindBodyWith(&body, binding.JSON)
|
err := c.ShouldBindBodyWith(&body, binding.JSON)
|
||||||
if err != nil || len(body.IMSI) < model.IMSI_MAX_LENGTH {
|
if err != nil || (len(body.IMSI) < model.IMSI_MAX_LENGTH && body.Tag == model.TAG_VoLTE) {
|
||||||
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
|
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -246,7 +249,7 @@ func (s *IMSUserController) Remove(c *gin.Context) {
|
|||||||
language := ctx.AcceptLanguage(c)
|
language := ctx.AcceptLanguage(c)
|
||||||
neId := c.Param("neId")
|
neId := c.Param("neId")
|
||||||
imsi := c.Param("imsi")
|
imsi := c.Param("imsi")
|
||||||
if neId == "" || len(imsi) < model.IMSI_MAX_LENGTH {
|
if neId == "" || imsi == "" {
|
||||||
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
|
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -297,7 +300,7 @@ func (s *IMSUserController) Removes(c *gin.Context) {
|
|||||||
neId := c.Param("neId")
|
neId := c.Param("neId")
|
||||||
imsi := c.Param("imsi")
|
imsi := c.Param("imsi")
|
||||||
num := c.Param("num")
|
num := c.Param("num")
|
||||||
if neId == "" || len(imsi) < model.IMSI_MAX_LENGTH || num == "" {
|
if neId == "" || imsi == "" || num == "" {
|
||||||
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
|
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"be.ems/features/ue/model"
|
||||||
|
"be.ems/features/ue/service"
|
||||||
"be.ems/src/framework/constants/uploadsubpath"
|
"be.ems/src/framework/constants/uploadsubpath"
|
||||||
"be.ems/src/framework/i18n"
|
"be.ems/src/framework/i18n"
|
||||||
"be.ems/src/framework/telnet"
|
"be.ems/src/framework/telnet"
|
||||||
@@ -14,24 +16,22 @@ import (
|
|||||||
"be.ems/src/framework/utils/parse"
|
"be.ems/src/framework/utils/parse"
|
||||||
"be.ems/src/framework/vo/result"
|
"be.ems/src/framework/vo/result"
|
||||||
neService "be.ems/src/modules/network_element/service"
|
neService "be.ems/src/modules/network_element/service"
|
||||||
"be.ems/features/ue/service"
|
|
||||||
"be.ems/features/ue/model"
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github.com/gin-gonic/gin/binding"
|
"github.com/gin-gonic/gin/binding"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 实例化控制层 VoIPAuthController 结构体
|
// 实例化控制层 VoIPAuthController 结构体
|
||||||
var NewVoIPAuthController = &VoIPAuthController{
|
var NewVoIPAuthController = &VoIPAuthController{
|
||||||
voipAuthService: service.NewVoIPAuthService,
|
voipAuthService: service.NewVoIPAuthService,
|
||||||
neInfoService: neService.NewNeInfo,
|
neInfoService: neService.NewNeInfo,
|
||||||
}
|
}
|
||||||
|
|
||||||
// IMS用户信息 控制层处理
|
// IMS用户信息 控制层处理
|
||||||
//
|
//
|
||||||
// @Description IMS用户信息 控制层处理
|
// @Description IMS用户信息 控制层处理
|
||||||
type VoIPAuthController struct {
|
type VoIPAuthController struct {
|
||||||
voipAuthService *service.VoIPAuthService // VoIP Auth信息服务
|
voipAuthService *service.VoIPAuthService // VoIP Auth信息服务
|
||||||
neInfoService *neService.NeInfo // 网元信息服务
|
neInfoService *neService.NeInfo // 网元信息服务
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *VoIPAuthController) ResetData(c *gin.Context) {
|
func (s *VoIPAuthController) ResetData(c *gin.Context) {
|
||||||
@@ -46,7 +46,6 @@ func (s *VoIPAuthController) ResetData(c *gin.Context) {
|
|||||||
c.JSON(200, result.OkData(data))
|
c.JSON(200, result.OkData(data))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
func (s *VoIPAuthController) List(c *gin.Context) {
|
func (s *VoIPAuthController) List(c *gin.Context) {
|
||||||
querys := ctx.QueryMap(c)
|
querys := ctx.QueryMap(c)
|
||||||
// querys["userName"] = ctx.LoginUserToUserName(c)
|
// querys["userName"] = ctx.LoginUserToUserName(c)
|
||||||
@@ -183,7 +182,7 @@ func (s *VoIPAuthController) Adds(c *gin.Context) {
|
|||||||
defer telnetClient.Close()
|
defer telnetClient.Close()
|
||||||
|
|
||||||
// 发送MML
|
// 发送MML
|
||||||
cmd := fmt.Sprintf("baa voip:start_username=%s,password=%s,sub_num=%s,",
|
cmd := fmt.Sprintf("baa voip:start_username=%s,password=%s,sub_num=%s,",
|
||||||
body.UserName, body.Password, num)
|
body.UserName, body.Password, num)
|
||||||
cmd += s.voipAuthService.ParseCommandParams(body)
|
cmd += s.voipAuthService.ParseCommandParams(body)
|
||||||
data, err := telnet.ConvertToStr(telnetClient, cmd)
|
data, err := telnet.ConvertToStr(telnetClient, cmd)
|
||||||
@@ -191,7 +190,10 @@ func (s *VoIPAuthController) Adds(c *gin.Context) {
|
|||||||
c.JSON(200, result.ErrMsg(err.Error()))
|
c.JSON(200, result.ErrMsg(err.Error()))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
// 命令ok时
|
||||||
|
if strings.Contains(data, "ok") {
|
||||||
|
s.voipAuthService.LoadData(neId, body.UserName, num)
|
||||||
|
}
|
||||||
c.JSON(200, result.OkData(data))
|
c.JSON(200, result.OkData(data))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,16 +20,16 @@ import (
|
|||||||
|
|
||||||
// 实例化控制层 Controller 结构体
|
// 实例化控制层 Controller 结构体
|
||||||
var NewController = &Controller{
|
var NewController = &Controller{
|
||||||
volteUserService: NewVoLTEService,
|
imsUserService: NewVoLTEService,
|
||||||
neInfoService: neService.NewNeInfo,
|
neInfoService: neService.NewNeInfo,
|
||||||
}
|
}
|
||||||
|
|
||||||
// IMS用户信息 控制层处理
|
// IMS用户信息 控制层处理
|
||||||
//
|
//
|
||||||
// @Description IMS用户信息 控制层处理
|
// @Description IMS用户信息 控制层处理
|
||||||
type Controller struct {
|
type Controller struct {
|
||||||
volteUserService *Service // IMS User信息服务
|
imsUserService *Service // IMS User信息服务
|
||||||
neInfoService *neService.NeInfo // 网元信息服务
|
neInfoService *neService.NeInfo // 网元信息服务
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Controller) ResetData(c *gin.Context) {
|
func (s *Controller) ResetData(c *gin.Context) {
|
||||||
@@ -40,7 +40,7 @@ func (s *Controller) ResetData(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
data := s.volteUserService.ResetData(neId)
|
data := s.imsUserService.ResetData(neId)
|
||||||
c.JSON(200, result.OkData(data))
|
c.JSON(200, result.OkData(data))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -57,7 +57,7 @@ func (s *Controller) List(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
data := s.volteUserService.SelectPage(querys)
|
data := s.imsUserService.SelectPage(querys)
|
||||||
c.JSON(200, result.Ok(data))
|
c.JSON(200, result.Ok(data))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -98,8 +98,8 @@ func (s *Controller) Info(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 解析返回的数据
|
// 解析返回的数据
|
||||||
u := s.volteUserService.ParseInfo(imsi, neId, data)
|
u := s.imsUserService.ParseInfo(imsi, neId, data)
|
||||||
s.volteUserService.Insert(neId, u)
|
s.imsUserService.Insert(neId, u)
|
||||||
c.JSON(200, result.OkData(u))
|
c.JSON(200, result.OkData(u))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -111,9 +111,9 @@ func (s *Controller) Add(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var body VoLTEUser
|
var body IMSUser
|
||||||
err := c.ShouldBindBodyWith(&body, binding.JSON)
|
err := c.ShouldBindBodyWith(&body, binding.JSON)
|
||||||
if err != nil || len(body.IMSI) < IMSI_MAX_LENGTH {
|
if err != nil || (len(body.IMSI) < IMSI_MAX_LENGTH && body.Tag == TAG_VoLTE) {
|
||||||
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
|
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -134,7 +134,7 @@ func (s *Controller) Add(c *gin.Context) {
|
|||||||
|
|
||||||
// 发送MML
|
// 发送MML
|
||||||
cmd := fmt.Sprintf("add imsuser:imsi=%s,", body.IMSI)
|
cmd := fmt.Sprintf("add imsuser:imsi=%s,", body.IMSI)
|
||||||
cmd += s.volteUserService.ParseCommandParams(body)
|
cmd += s.imsUserService.ParseCommandParams(body)
|
||||||
data, err := telnet.ConvertToStr(telnetClient, cmd)
|
data, err := telnet.ConvertToStr(telnetClient, cmd)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(200, result.ErrMsg(err.Error()))
|
c.JSON(200, result.ErrMsg(err.Error()))
|
||||||
@@ -144,7 +144,7 @@ func (s *Controller) Add(c *gin.Context) {
|
|||||||
// 命令ok时
|
// 命令ok时
|
||||||
if strings.Contains(data, "ok") {
|
if strings.Contains(data, "ok") {
|
||||||
body.NeId = neId
|
body.NeId = neId
|
||||||
s.volteUserService.Insert(neId, body)
|
s.imsUserService.Insert(neId, body)
|
||||||
}
|
}
|
||||||
c.JSON(200, result.OkData(data))
|
c.JSON(200, result.OkData(data))
|
||||||
}
|
}
|
||||||
@@ -158,9 +158,9 @@ func (s *Controller) Adds(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var body VoLTEUser
|
var body IMSUser
|
||||||
err := c.ShouldBindBodyWith(&body, binding.JSON)
|
err := c.ShouldBindBodyWith(&body, binding.JSON)
|
||||||
if err != nil || len(body.IMSI) < IMSI_MAX_LENGTH {
|
if err != nil || (len(body.IMSI) < IMSI_MAX_LENGTH && body.Tag == TAG_VoLTE) {
|
||||||
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
|
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -181,7 +181,7 @@ func (s *Controller) Adds(c *gin.Context) {
|
|||||||
|
|
||||||
// 发送MML
|
// 发送MML
|
||||||
cmd := fmt.Sprintf("baa imsuser:start_imsi=%s,start_msisdn=%s,sub_num=%s,", body.IMSI, body.MSISDN, num)
|
cmd := fmt.Sprintf("baa imsuser:start_imsi=%s,start_msisdn=%s,sub_num=%s,", body.IMSI, body.MSISDN, num)
|
||||||
cmd += s.volteUserService.ParseCommandParams(body)
|
cmd += s.imsUserService.ParseCommandParams(body)
|
||||||
// 去除msisdn参数,避免重复
|
// 去除msisdn参数,避免重复
|
||||||
omemsisdn := fmt.Sprintf(",msisdn=%s,", body.MSISDN)
|
omemsisdn := fmt.Sprintf(",msisdn=%s,", body.MSISDN)
|
||||||
cmd = strings.Replace(cmd, omemsisdn, ",", 1)
|
cmd = strings.Replace(cmd, omemsisdn, ",", 1)
|
||||||
@@ -202,9 +202,9 @@ func (s *Controller) Edit(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var body VoLTEUser
|
var body IMSUser
|
||||||
err := c.ShouldBindBodyWith(&body, binding.JSON)
|
err := c.ShouldBindBodyWith(&body, binding.JSON)
|
||||||
if err != nil || len(body.IMSI) < IMSI_MAX_LENGTH {
|
if err != nil || (len(body.IMSI) < IMSI_MAX_LENGTH && body.Tag == TAG_VoLTE) {
|
||||||
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
|
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -225,7 +225,7 @@ func (s *Controller) Edit(c *gin.Context) {
|
|||||||
|
|
||||||
// 发送MML
|
// 发送MML
|
||||||
cmd := fmt.Sprintf("mod imsuser:imsi=%s,", body.IMSI)
|
cmd := fmt.Sprintf("mod imsuser:imsi=%s,", body.IMSI)
|
||||||
cmd += s.volteUserService.ParseCommandParams(body)
|
cmd += s.imsUserService.ParseCommandParams(body)
|
||||||
data, err := telnet.ConvertToStr(telnetClient, cmd)
|
data, err := telnet.ConvertToStr(telnetClient, cmd)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(200, result.ErrMsg(err.Error()))
|
c.JSON(200, result.ErrMsg(err.Error()))
|
||||||
@@ -235,7 +235,7 @@ func (s *Controller) Edit(c *gin.Context) {
|
|||||||
// 命令ok时
|
// 命令ok时
|
||||||
if strings.Contains(data, "ok") {
|
if strings.Contains(data, "ok") {
|
||||||
body.NeId = neId
|
body.NeId = neId
|
||||||
s.volteUserService.Insert(neId, body)
|
s.imsUserService.Insert(neId, body)
|
||||||
}
|
}
|
||||||
c.JSON(200, result.OkData(data))
|
c.JSON(200, result.OkData(data))
|
||||||
}
|
}
|
||||||
@@ -244,7 +244,7 @@ func (s *Controller) Remove(c *gin.Context) {
|
|||||||
language := ctx.AcceptLanguage(c)
|
language := ctx.AcceptLanguage(c)
|
||||||
neId := c.Param("neId")
|
neId := c.Param("neId")
|
||||||
imsi := c.Param("imsi")
|
imsi := c.Param("imsi")
|
||||||
if neId == "" || len(imsi) < IMSI_MAX_LENGTH {
|
if neId == "" || imsi == "" {
|
||||||
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
|
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -282,7 +282,7 @@ func (s *Controller) Remove(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
// 命令ok时
|
// 命令ok时
|
||||||
if strings.Contains(data, "ok") {
|
if strings.Contains(data, "ok") {
|
||||||
s.volteUserService.Delete(neId, imsi)
|
s.imsUserService.Delete(neId, imsi)
|
||||||
}
|
}
|
||||||
resultData[imsi] = data
|
resultData[imsi] = data
|
||||||
}
|
}
|
||||||
@@ -295,7 +295,7 @@ func (s *Controller) Removes(c *gin.Context) {
|
|||||||
neId := c.Param("neId")
|
neId := c.Param("neId")
|
||||||
imsi := c.Param("imsi")
|
imsi := c.Param("imsi")
|
||||||
num := c.Param("num")
|
num := c.Param("num")
|
||||||
if neId == "" || len(imsi) < IMSI_MAX_LENGTH || num == "" {
|
if neId == "" || imsi == "" || num == "" {
|
||||||
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
|
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -324,7 +324,7 @@ func (s *Controller) Removes(c *gin.Context) {
|
|||||||
|
|
||||||
// 命令ok时
|
// 命令ok时
|
||||||
if strings.Contains(data, "ok") {
|
if strings.Contains(data, "ok") {
|
||||||
s.volteUserService.LoadData(neId, imsi, num)
|
s.imsUserService.LoadData(neId, imsi, num)
|
||||||
}
|
}
|
||||||
c.JSON(200, result.OkData(data))
|
c.JSON(200, result.OkData(data))
|
||||||
}
|
}
|
||||||
@@ -357,15 +357,15 @@ func (s *Controller) Export(c *gin.Context) {
|
|||||||
|
|
||||||
querys["pageNum"] = 1
|
querys["pageNum"] = 1
|
||||||
querys["pageSize"] = 10000
|
querys["pageSize"] = 10000
|
||||||
data := s.volteUserService.SelectPage(querys)
|
data := s.imsUserService.SelectPage(querys)
|
||||||
if parse.Number(data["total"]) == 0 {
|
if parse.Number(data["total"]) == 0 {
|
||||||
// 导出数据记录为空
|
// 导出数据记录为空
|
||||||
c.JSON(200, result.ErrMsg(i18n.TKey(language, "app.common.exportEmpty")))
|
c.JSON(200, result.ErrMsg(i18n.TKey(language, "app.common.exportEmpty")))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
rows := data["rows"].([]VoLTEUser)
|
rows := data["rows"].([]IMSUser)
|
||||||
|
|
||||||
// rows := s.volteUserService.SelectList(VoLTEUser{NeId: neId})
|
// rows := s.imsUserService.SelectList(IMSUser{NeId: neId})
|
||||||
if len(rows) <= 0 {
|
if len(rows) <= 0 {
|
||||||
// 导出数据记录为空
|
// 导出数据记录为空
|
||||||
c.JSON(200, result.ErrMsg(i18n.TKey(language, "app.common.exportEmpty")))
|
c.JSON(200, result.ErrMsg(i18n.TKey(language, "app.common.exportEmpty")))
|
||||||
@@ -474,11 +474,11 @@ func (s *Controller) Import(c *gin.Context) {
|
|||||||
if strings.Contains(data, "ok") {
|
if strings.Contains(data, "ok") {
|
||||||
if strings.HasSuffix(body.UploadPath, ".csv") {
|
if strings.HasSuffix(body.UploadPath, ".csv") {
|
||||||
data := file.ReadFileCSV(localFilePath)
|
data := file.ReadFileCSV(localFilePath)
|
||||||
go s.volteUserService.InsertData(neInfo.NeId, "csv", data)
|
go s.imsUserService.InsertData(neInfo.NeId, "csv", data)
|
||||||
}
|
}
|
||||||
if strings.HasSuffix(body.UploadPath, ".txt") {
|
if strings.HasSuffix(body.UploadPath, ".txt") {
|
||||||
data := file.ReadFileTXT(",", localFilePath)
|
data := file.ReadFileTXT(",", localFilePath)
|
||||||
go s.volteUserService.InsertData(neInfo.NeId, "txt", data)
|
go s.imsUserService.InsertData(neInfo.NeId, "txt", data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
c.JSON(200, result.OkMsg(data))
|
c.JSON(200, result.OkMsg(data))
|
||||||
|
|||||||
@@ -1,26 +1,75 @@
|
|||||||
package ims_user
|
package ims_user
|
||||||
|
|
||||||
const (
|
import (
|
||||||
// IMSI 号码长度
|
"fmt"
|
||||||
IMSI_MAX_LENGTH = 15
|
"strconv"
|
||||||
// MSISDN 号码长度
|
"strings"
|
||||||
MSISDN_MAX_LENGTH = 15
|
)
|
||||||
)
|
|
||||||
|
const (
|
||||||
// @Description VoLTE用户信息
|
// IMSI 号码长度
|
||||||
type VoLTEUser struct {
|
IMSI_MAX_LENGTH = 15
|
||||||
ID string `json:"id" gorm:"column:id;primaryKey;autoIncrement"` // 主键
|
// MSISDN 号码长度
|
||||||
NeId string `json:"neId" gorm:"column:ne_id"` // UDM网元标识
|
MSISDN_MAX_LENGTH = 15
|
||||||
IMSI string `json:"imsi" gorm:"column:imsi"` // SIM卡/USIM卡ID
|
)
|
||||||
MSISDN string `json:"msisdn" gorm:"column:msisdn"` // 用户电话号码
|
|
||||||
Tag string `json:"tag" gorm:"column:tag"` // Tag: 0=VoIP, 1=VoLTE
|
type CallTag int
|
||||||
VNI string `json:"vni" gorm:"column:vni"` // VNI
|
|
||||||
|
const (
|
||||||
TenantID string `json:"tenantID" gorm:"column:tenant_id"`
|
TAG_VoIP CallTag = iota // VoIP标记
|
||||||
TenantName string `json:"tenantName" gorm:"-"`
|
TAG_VoLTE // VoLTE标记
|
||||||
}
|
TAG_UNKNOWN // 未知标记
|
||||||
|
)
|
||||||
// TableName 表名称
|
|
||||||
func (*VoLTEUser) TableName() string {
|
func (ct CallTag) Enum() string {
|
||||||
return "u_ims_user"
|
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 CallTag `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"
|
||||||
|
}
|
||||||
|
|||||||
2
go.mod
2
go.mod
@@ -43,6 +43,8 @@ require (
|
|||||||
xorm.io/xorm v1.3.9
|
xorm.io/xorm v1.3.9
|
||||||
)
|
)
|
||||||
|
|
||||||
|
require github.com/google/go-cmp v0.6.0 // indirect
|
||||||
|
|
||||||
require (
|
require (
|
||||||
filippo.io/edwards25519 v1.1.0 // indirect
|
filippo.io/edwards25519 v1.1.0 // indirect
|
||||||
github.com/KyleBanks/depth v1.2.1 // indirect
|
github.com/KyleBanks/depth v1.2.1 // indirect
|
||||||
|
|||||||
Reference in New Issue
Block a user