fix: UDMVolte用户特殊VoIP数据

This commit is contained in:
TsMask
2025-04-25 17:24:34 +08:00
parent 8d73d0ef2f
commit b29a36e7b5
4 changed files with 48 additions and 35 deletions

View File

@@ -132,9 +132,13 @@ func (s *UDMVOIPController) Info(c *gin.Context) {
}
// 解析返回的数据
u := s.udmVOIPService.ParseInfo(username, neId, data)
s.udmVOIPService.Insert(neId, u)
c.JSON(200, resp.OkData(u))
u := s.udmVOIPService.ParseInfo(neId, data)
if u.ID != "" {
s.udmVOIPService.Insert(neId, u.UserName)
c.JSON(200, resp.OkData(u))
return
}
c.JSON(200, resp.ErrMsg("No VOIP Data"))
}
// UDMVOIP用户新增
@@ -190,7 +194,7 @@ func (s *UDMVOIPController) Add(c *gin.Context) {
// 命令ok时
if strings.Contains(data, "ok") {
s.udmVOIPService.Insert(neId, body)
s.udmVOIPService.Insert(neId, body.UserName)
}
c.JSON(200, resp.OkData(data))
}
@@ -266,8 +270,8 @@ func (s *UDMVOIPController) Adds(c *gin.Context) {
// @Param value path string true "User Name, multiple separated by a , sign"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Authenticated User Deletion
// @Description UDM Authenticated User Deletion
// @Summary UDM VOIP User Deletion
// @Description UDM VOIP User Deletion
// @Router /neData/udm/voip/{neId}/{value} [delete]
func (s *UDMVOIPController) Remove(c *gin.Context) {
language := reqctx.AcceptLanguage(c)
@@ -387,8 +391,8 @@ func (s *UDMVOIPController) Removes(c *gin.Context) {
// @Param pageSize query number true "pageSize" default(10)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Authenticated User Export
// @Description UDM Authenticated User Export
// @Summary UDM VOIP User Export
// @Description UDM VOIP User Export
// @Router /neData/udm/voip/export [get]
func (s *UDMVOIPController) Export(c *gin.Context) {
language := reqctx.AcceptLanguage(c)
@@ -463,8 +467,8 @@ func (s *UDMVOIPController) Export(c *gin.Context) {
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Authenticated User Import
// @Description UDM Authenticated User Import
// @Summary UDM VOIP User Import
// @Description UDM VOIP User Import
// @Router /neData/udm/voip/import [post]
func (s *UDMVOIPController) Import(c *gin.Context) {
language := reqctx.AcceptLanguage(c)

View File

@@ -44,7 +44,7 @@ type UDMVolteIMSController struct {
// @Param neId path string true "NE ID" default(001)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Authentication User Data Refresh
// @Summary UDM VolteIMS User Data Refresh
// @Description UDM Authenticated User Data List Refresh Synchronization Latest
// @Router /neData/udm/volte-ims/resetData/{neId} [put]
func (s *UDMVolteIMSController) ResetData(c *gin.Context) {
@@ -72,8 +72,8 @@ func (s *UDMVolteIMSController) ResetData(c *gin.Context) {
// @Param pageSize query number true "pageSize" default(10)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Authentication User List
// @Description UDM Authentication User List
// @Summary UDM VolteIMS User List
// @Description UDM VolteIMS User List
// @Router /neData/udm/volte-ims/list [get]
func (s *UDMVolteIMSController) List(c *gin.Context) {
query := reqctx.QueryMap(c)
@@ -93,18 +93,22 @@ func (s *UDMVolteIMSController) List(c *gin.Context) {
// @Param msisdn query string true "MSISDN"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Authentication User Information
// @Description UDM Authentication User Information
// @Summary UDM VolteIMS User Information
// @Description UDM VolteIMS User Information
// @Router /neData/udm/volte-ims/{neId}/{value} [get]
func (s *UDMVolteIMSController) Info(c *gin.Context) {
language := reqctx.AcceptLanguage(c)
neId := c.Param("neId")
imsi := c.Param("imsi")
msisdn := c.Query("msisdn")
if neId == "" || imsi == "" || msisdn == "" {
if neId == "" || imsi == "" {
c.JSON(400, resp.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
return
}
if msisdn == "" {
c.JSON(400, resp.CodeMsg(400, "msisdn is required"))
return
}
// 查询网元获取IP
neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", neId)
@@ -138,6 +142,7 @@ func (s *UDMVolteIMSController) Info(c *gin.Context) {
if u.ID != "" {
s.udmVolteIMSService.InsertByIMSI(imsi, neId)
c.JSON(200, resp.OkData(u))
return
}
c.JSON(200, resp.ErrMsg("No Volte IMS Data"))
}
@@ -153,8 +158,8 @@ func (s *UDMVolteIMSController) Info(c *gin.Context) {
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Authentication User Added
// @Description UDM Authentication User Added
// @Summary UDM VolteIMS User Added
// @Description UDM VolteIMS User Added If VoIP tag=0, then MSISDN and IMSI need to be the same.
// @Router /neData/udm/volte-ims/{neId} [post]
func (s *UDMVolteIMSController) Add(c *gin.Context) {
language := reqctx.AcceptLanguage(c)
@@ -219,8 +224,8 @@ func (s *UDMVolteIMSController) Add(c *gin.Context) {
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Authentication User Batch Add
// @Description UDM Authentication User Batch Add
// @Summary UDM VolteIMS User Batch Add
// @Description UDM VolteIMS User Batch Add
// @Router /neData/udm/volte-ims/{neId}/{value} [post]
func (s *UDMVolteIMSController) Adds(c *gin.Context) {
language := reqctx.AcceptLanguage(c)
@@ -361,8 +366,8 @@ func (s *UDMVolteIMSController) Remove(c *gin.Context) {
// @Param num path number true "Number of releases, value includes start imsi"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Authentication User Batch Deletion
// @Description UDM Authentication User Batch Deletion
// @Summary UDM VolteIMS User Batch Deletion
// @Description UDM VolteIMS User Batch Deletion
// @Router /neData/udm/volte-ims/{neId}/{imsi}/{num} [delete]
func (s *UDMVolteIMSController) Removes(c *gin.Context) {
language := reqctx.AcceptLanguage(c)

View File

@@ -74,13 +74,17 @@ func (r UDMVOIPUser) ResetData(neId string) int64 {
}
// ParseInfo 解析单个用户userName信息 data从命令MML得到的结果
func (r UDMVOIPUser) ParseInfo(userName, neId string, data map[string]string) model.UDMVOIPUser {
u := r.udmVOIPRepository.SelectByUserNameAndNeID(userName, neId)
// 用于更新
u.NeId = neId
u.UserName = data["username"]
u.Password = data["password"]
func (r UDMVOIPUser) ParseInfo(neId string, data map[string]string) model.UDMVOIPUser {
u := model.UDMVOIPUser{
NeId: neId,
UserName: data["username"],
Password: data["password"],
}
// 赋予ID
item := r.udmVOIPRepository.SelectByUserNameAndNeID(u.UserName, neId)
if item.ID != "" {
u.ID = item.ID
}
return u
}
@@ -95,10 +99,10 @@ func (r UDMVOIPUser) Find(u model.UDMVOIPUser) []model.UDMVOIPUser {
}
// Insert 从数据中读取后删除username再存入数据库
func (r UDMVOIPUser) Insert(neId string, u model.UDMVOIPUser) int64 {
uArr := r.dataByRedis(u.UserName, neId)
func (r UDMVOIPUser) Insert(neId string, username string) int64 {
uArr := r.dataByRedis(username, neId)
if len(uArr) > 0 {
r.udmVOIPRepository.Delete(u.UserName, neId)
r.udmVOIPRepository.Delete(username, neId)
return r.udmVOIPRepository.Inserts(uArr)
}
return 0

View File

@@ -176,12 +176,12 @@ func (r UDMVolteIMSUser) Delete(imsi, neId string) int64 {
}
// LoadData 重新加载从imsi开始num的数据
func (r UDMVolteIMSUser) LoadData(neId, imsi, num string) {
startIMSI, _ := strconv.ParseInt(imsi, 10, 64)
func (r UDMVolteIMSUser) LoadData(neId, imsiOrMsisdn, num string) {
startIMSIOrMsisdn, _ := strconv.ParseInt(imsiOrMsisdn, 10, 64)
subNum, _ := strconv.ParseInt(num, 10, 64)
var i int64
for i = 0; i < subNum; i++ {
keyIMSI := fmt.Sprintf("%015d", startIMSI+i)
keyIMSI := fmt.Sprintf("%d", startIMSIOrMsisdn+i)
// 删除原数据
r.udmVolteIMSRepository.Delete(keyIMSI, neId)
// 加载数据