fix: UDM-IMS数据批量新增/批量删除命令调整

This commit is contained in:
TsMask
2025-06-24 17:01:00 +08:00
parent d03bde166b
commit d236a20e16
6 changed files with 168 additions and 113 deletions

View File

@@ -10,6 +10,7 @@ import (
"be.ems/features/ue/service" "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/resp"
"be.ems/src/framework/telnet" "be.ems/src/framework/telnet"
"be.ems/src/framework/utils/ctx" "be.ems/src/framework/utils/ctx"
"be.ems/src/framework/utils/file" "be.ems/src/framework/utils/file"
@@ -135,8 +136,7 @@ func (s *IMSUserController) Add(c *gin.Context) {
defer telnetClient.Close() defer telnetClient.Close()
// 发送MML // 发送MML
cmd := fmt.Sprintf("add imsuser:imsi=%s,", body.IMSI) cmd := fmt.Sprintf("add imsuser:imsi=%s,msisdn=%s,volte=%s,vni=%s", body.IMSI, body.MSISDN, body.Tag, body.VNI)
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()))
@@ -185,8 +185,7 @@ func (s *IMSUserController) Adds(c *gin.Context) {
defer telnetClient.Close() defer telnetClient.Close()
// 发送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:sub_num=%s,start_imsi=%s,start_msisdn=%s,volte=%s,vni=%s", num, body.IMSI, body.MSISDN, body.Tag, body.VNI)
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)
@@ -255,17 +254,14 @@ func (s *IMSUserController) Edit(c *gin.Context) {
func (s *IMSUserController) Remove(c *gin.Context) { 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_msisdn := c.Param("imsi")
if neId == "" || imsi == "" { volte := c.Query("volte")
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400"))) if neId == "" || imsi_msisdn == "" {
c.JSON(400, resp.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
return return
} }
if volte == "" || !(volte == "0" || volte == "1") {
// 处理字符转id数组后去重 c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: volte is required"))
imsiArr := strings.Split(imsi, ",")
uniqueIDs := parse.RemoveDuplicates(imsiArr)
if len(uniqueIDs) <= 0 {
c.JSON(200, result.Err(nil))
return return
} }
@@ -283,20 +279,32 @@ func (s *IMSUserController) Remove(c *gin.Context) {
} }
defer telnetClient.Close() defer telnetClient.Close()
imsiArr := strings.Split(imsi_msisdn, ",")
// 处理字符转id数组后去重
uniqueIDs := parse.RemoveDuplicates(imsiArr)
if len(uniqueIDs) <= 0 {
c.JSON(200, resp.Err(nil))
return
}
resultData := map[string]string{} resultData := map[string]string{}
for _, imsi := range uniqueIDs { for _, im := range uniqueIDs {
imArr := strings.SplitN(im, "_", 2)
if len(imArr) != 2 {
resultData[im] = "format should be imsi_msisdn"
continue
}
// 发送MML // 发送MML
cmd := fmt.Sprintf("del imsuser:imsi=%s", imsi) cmd := fmt.Sprintf("del imsuser:imsi=%s,msisdn=%s,volte=%s", imArr[0], imArr[1], volte)
data, err := telnet.ConvertToStr(telnetClient, cmd) data, err := telnet.ConvertToStr(telnetClient, cmd)
if err != nil { if err != nil {
resultData[imsi] = err.Error() resultData[im] = err.Error()
continue continue
} }
// 命令ok时 // 命令ok时
if strings.Contains(data, "ok") { if strings.Contains(data, "ok") {
s.imsUserService.Delete(neId, imsi) s.imsUserService.Delete(neId, imArr[0])
} }
resultData[imsi] = data resultData[im] = data
} }
c.JSON(200, result.OkData(resultData)) c.JSON(200, result.OkData(resultData))
@@ -305,10 +313,15 @@ func (s *IMSUserController) Remove(c *gin.Context) {
func (s *IMSUserController) Removes(c *gin.Context) { func (s *IMSUserController) Removes(c *gin.Context) {
language := ctx.AcceptLanguage(c) language := ctx.AcceptLanguage(c)
neId := c.Param("neId") neId := c.Param("neId")
imsi := c.Param("imsi") imsi_msisdn := c.Param("imsi")
num := c.Param("num") num := c.Param("num")
if neId == "" || imsi == "" || num == "" { volte := c.Query("volte")
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400"))) if neId == "" || imsi_msisdn == "" || num == "" {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId/imsi/num is empty"))
return
}
if volte == "" || !(volte == "0" || volte == "1") {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: volte is required"))
return return
} }
@@ -326,8 +339,22 @@ func (s *IMSUserController) Removes(c *gin.Context) {
} }
defer telnetClient.Close() defer telnetClient.Close()
imArr := strings.SplitN(imsi_msisdn, "_", 2)
if len(imArr) != 2 {
c.JSON(200, resp.ErrMsg("format should be imsi_msisdn"))
return
}
imsi := imArr[0]
msisdn := imArr[1]
// 发送MML // 发送MML
cmd := fmt.Sprintf("bde imsuser:start_imsi=%s,sub_num=%s", imsi, num) cmd := ""
if volte == "0" {
cmd = fmt.Sprintf("bde imsuser:start_msisdn=%s,sub_num=%s,volte=0", msisdn, num)
}
if volte == "1" {
cmd = fmt.Sprintf("bde imsuser:start_imsi=%s,start_msisdn=%s,sub_num=%s,volte=1", imsi, msisdn, num)
}
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()))

View File

@@ -8,6 +8,7 @@ import (
"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/resp"
"be.ems/src/framework/telnet" "be.ems/src/framework/telnet"
"be.ems/src/framework/utils/ctx" "be.ems/src/framework/utils/ctx"
"be.ems/src/framework/utils/file" "be.ems/src/framework/utils/file"
@@ -65,8 +66,18 @@ func (s *Controller) Info(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")
msisdn := c.Query("msisdn")
volte := c.Query("volte")
if neId == "" || imsi == "" { if neId == "" || imsi == "" {
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400"))) c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId or imsi is empty"))
return
}
if msisdn == "" {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: msisdn is required"))
return
}
if volte == "" || !(volte == "0" || volte == "1") {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: volte is required"))
return return
} }
@@ -85,7 +96,7 @@ func (s *Controller) Info(c *gin.Context) {
defer telnetClient.Close() defer telnetClient.Close()
// 发送MML // 发送MML
cmd := fmt.Sprintf("dsp imsuser:imsi=%s", imsi) cmd := fmt.Sprintf("dsp imsuser:imsi=%s,msisdn=%s,volte=%s", imsi, msisdn, volte)
data, err := telnet.ConvertToMap(telnetClient, cmd) data, err := telnet.ConvertToMap(telnetClient, cmd)
if err != nil { if err != nil {
c.JSON(200, result.ErrMsg(err.Error())) c.JSON(200, result.ErrMsg(err.Error()))
@@ -243,17 +254,14 @@ func (s *Controller) Edit(c *gin.Context) {
func (s *Controller) Remove(c *gin.Context) { 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_msisdn := c.Param("imsi")
if neId == "" || imsi == "" { volte := c.Query("volte")
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400"))) if neId == "" || imsi_msisdn == "" {
c.JSON(400, resp.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
return return
} }
if volte == "" || !(volte == "0" || volte == "1") {
// 处理字符转id数组后去重 c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: volte is required"))
imsiArr := strings.Split(imsi, ",")
uniqueIDs := parse.RemoveDuplicates(imsiArr)
if len(uniqueIDs) <= 0 {
c.JSON(200, result.Err(nil))
return return
} }
@@ -271,20 +279,32 @@ func (s *Controller) Remove(c *gin.Context) {
} }
defer telnetClient.Close() defer telnetClient.Close()
imsiArr := strings.Split(imsi_msisdn, ",")
// 处理字符转id数组后去重
uniqueIDs := parse.RemoveDuplicates(imsiArr)
if len(uniqueIDs) <= 0 {
c.JSON(200, resp.Err(nil))
return
}
resultData := map[string]string{} resultData := map[string]string{}
for _, imsi := range uniqueIDs { for _, im := range uniqueIDs {
imArr := strings.SplitN(im, "_", 2)
if len(imArr) != 2 {
resultData[im] = "format should be imsi_msisdn"
continue
}
// 发送MML // 发送MML
cmd := fmt.Sprintf("del imsuser:imsi=%s", imsi) cmd := fmt.Sprintf("del imsuser:imsi=%s,msisdn=%s,volte=%s", imArr[0], imArr[1], volte)
data, err := telnet.ConvertToStr(telnetClient, cmd) data, err := telnet.ConvertToStr(telnetClient, cmd)
if err != nil { if err != nil {
resultData[imsi] = err.Error() resultData[im] = err.Error()
continue continue
} }
// 命令ok时 // 命令ok时
if strings.Contains(data, "ok") { if strings.Contains(data, "ok") {
s.imsUserService.Delete(neId, imsi) s.imsUserService.Delete(neId, imArr[0])
} }
resultData[imsi] = data resultData[im] = data
} }
c.JSON(200, result.OkData(resultData)) c.JSON(200, result.OkData(resultData))
@@ -295,8 +315,13 @@ 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")
volte := c.Query("volte")
if neId == "" || imsi == "" || num == "" { if neId == "" || imsi == "" || num == "" {
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400"))) c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId/imsi/num is empty"))
return
}
if volte == "" || !(volte == "0" || volte == "1") {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: volte is required"))
return return
} }
@@ -315,7 +340,13 @@ func (s *Controller) Removes(c *gin.Context) {
defer telnetClient.Close() defer telnetClient.Close()
// 发送MML // 发送MML
cmd := fmt.Sprintf("bde imsuser:start_imsi=%s,sub_num=%s", imsi, num) cmd := ""
if volte == "0" {
cmd = fmt.Sprintf("bde imsuser:start_msisdn=%s,sub_num=%s,volte=0", imsi, num)
}
if volte == "1" {
cmd = fmt.Sprintf("bde imsuser:start_imsi=%s,sub_num=%s,volte=1", imsi, num)
}
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()))

View File

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

View File

@@ -48,35 +48,23 @@ func (r *IMSUserService) dataByRedis(imsi, neId string) []model.IMSUser {
} }
for k, m := range mkv { for k, m := range mkv {
var imsi, msisdn string // volte:360000100000130:8612300000130
KeyParts := strings.Split(k, ":") keys := strings.Split(k, ":")
switch len(KeyParts) { if len(keys) != 3 {
case 0, 1:
// 处理单个部分的情况
continue continue
case 2:
// 处理两个部分的情况
imsi = KeyParts[1]
msisdn = "-"
case 3:
// 处理三个部分的情况
imsi = KeyParts[1]
msisdn = KeyParts[2]
default:
// 处理更多部分的情况
imsi = KeyParts[1]
msisdn = KeyParts[2]
} }
var vni string = "-" // "110011200004217@ims.mnc001.mcc110.3gppnetwork.org"
vni := ""
impiParts := strings.Split(m["impi"], "@") impiParts := strings.Split(m["impi"], "@")
if len(impiParts) > 1 { if len(impiParts) > 1 {
vni = impiParts[1] // 输出: ims.mnc001.mcc110.3gppnetwork.org vni = impiParts[1]
} }
a := model.IMSUser{ a := model.IMSUser{
NeId: neId, NeId: neId,
IMSI: imsi, // volte:360000100000130:8612300000130 IMSI: keys[1], // volte:360000100000130:8612300000130
MSISDN: msisdn, // 8612300000130 MSISDN: keys[2], // 8612300000130
Tag: model.ParseCallTag(m["tag"]), // volte = tag Tag: model.ParseCallTag(m["tag"]), // volte = tag
VNI: vni, // ims.mnc001.mcc110.3gppnetwork.org VNI: vni, // ims.mnc001.mcc110.3gppnetwork.org
} }
@@ -182,19 +170,15 @@ func (r *IMSUserService) Delete(neId, imsi string) int64 {
} }
// LoadData 重新加载从imsi开始num的数据 // LoadData 重新加载从imsi开始num的数据
func (r *IMSUserService) LoadData(neId, imsi, num string) { func (r *IMSUserService) LoadData(neId, imsiOrMsisdn, num string) {
startIMSI, _ := strconv.ParseInt(imsi, 10, 64) startIMSIOrMsisdn, _ := strconv.ParseInt(imsiOrMsisdn, 10, 64)
subNum, _ := strconv.ParseInt(num, 10, 64) subNum, _ := strconv.ParseInt(num, 10, 64)
var i int64 var i int64
for i = 0; i < subNum; i++ { for i = 0; i < subNum; i++ {
var keyIMSI string keyIMSI := fmt.Sprintf("%015d", startIMSIOrMsisdn+i)
if len(imsi) == model.IMSI_MAX_LENGTH { if !strings.HasPrefix(imsiOrMsisdn, "0") {
keyIMSI = fmt.Sprintf("%015d", startIMSI+i) keyIMSI = fmt.Sprintf("%d", startIMSIOrMsisdn+i)
} else {
// 处理不满15位的IMSI, tag=TAG_VoIP
keyIMSI = fmt.Sprintf("%d", startIMSI+i)
} }
// 删除原数据 // 删除原数据
r.imsUserRepository.Delete(keyIMSI, neId) r.imsUserRepository.Delete(keyIMSI, neId)
arr := r.dataByRedis(keyIMSI+":*", neId) arr := r.dataByRedis(keyIMSI+":*", neId)

View File

@@ -100,6 +100,7 @@ func (s *UDMVolteIMSController) Info(c *gin.Context) {
neId := c.Param("neId") neId := c.Param("neId")
imsi := c.Param("imsi") imsi := c.Param("imsi")
msisdn := c.Query("msisdn") msisdn := c.Query("msisdn")
volte := c.Query("volte")
if neId == "" || imsi == "" { if neId == "" || imsi == "" {
c.JSON(422, resp.CodeMsg(422002, "bind err: neId or imsi is empty")) c.JSON(422, resp.CodeMsg(422002, "bind err: neId or imsi is empty"))
return return
@@ -108,6 +109,10 @@ func (s *UDMVolteIMSController) Info(c *gin.Context) {
c.JSON(422, resp.CodeMsg(422002, "bind err: msisdn is required")) c.JSON(422, resp.CodeMsg(422002, "bind err: msisdn is required"))
return return
} }
if volte == "" || !(volte == "0" || volte == "1") {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: volte is required"))
return
}
// 查询网元获取IP // 查询网元获取IP
neInfo := s.neInfoService.SelectNeInfoByNeTypeAndNeID("UDM", neId) neInfo := s.neInfoService.SelectNeInfoByNeTypeAndNeID("UDM", neId)
@@ -124,7 +129,7 @@ func (s *UDMVolteIMSController) Info(c *gin.Context) {
defer telnetClient.Close() defer telnetClient.Close()
// 发送MML // 发送MML
cmd := fmt.Sprintf("dsp imsuser:imsi=%s,msisdn=%s", imsi, msisdn) cmd := fmt.Sprintf("dsp imsuser:imsi=%s,msisdn=%s,volte=%s", imsi, msisdn, volte)
data, err := telnet.ConvertToMap(telnetClient, cmd) data, err := telnet.ConvertToMap(telnetClient, cmd)
if err != nil { if err != nil {
c.JSON(200, resp.ErrMsg(err.Error())) c.JSON(200, resp.ErrMsg(err.Error()))
@@ -297,13 +302,16 @@ func (s *UDMVolteIMSController) Adds(c *gin.Context) {
func (s *UDMVolteIMSController) Remove(c *gin.Context) { func (s *UDMVolteIMSController) Remove(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
neId := c.Param("neId") neId := c.Param("neId")
imsi := c.Param("imsi") imsi_msisdn := c.Param("imsi")
msisdn := c.Query("msisdn") volte := c.Query("volte")
if neId == "" || imsi == "" { if neId == "" || imsi_msisdn == "" {
c.JSON(400, resp.CodeMsg(400, i18n.TKey(language, "app.common.err400"))) c.JSON(400, resp.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
return return
} }
imsiArr := strings.Split(imsi, ",") if volte == "" || !(volte == "0" || volte == "1") {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: volte is required"))
return
}
// 查询网元获取IP // 查询网元获取IP
neInfo := s.neInfoService.SelectNeInfoByNeTypeAndNeID("UDM", neId) neInfo := s.neInfoService.SelectNeInfoByNeTypeAndNeID("UDM", neId)
@@ -319,46 +327,34 @@ func (s *UDMVolteIMSController) Remove(c *gin.Context) {
} }
defer telnetClient.Close() defer telnetClient.Close()
// 精确msisdn删除 imsiArr := strings.Split(imsi_msisdn, ",")
if msisdn != "" { // 处理字符转id数组后去重
uniqueIDs := parse.RemoveDuplicates(imsiArr)
if len(uniqueIDs) <= 0 {
c.JSON(200, resp.Err(nil))
return
}
resultData := map[string]string{}
for _, im := range uniqueIDs {
imArr := strings.SplitN(im, "_", 2)
if len(imArr) != 2 {
resultData[im] = "format should be imsi_msisdn"
continue
}
// 发送MML // 发送MML
cmd := fmt.Sprintf("del imsuser:imsi=%s,msisdn=%s", imsiArr[0], msisdn) cmd := fmt.Sprintf("del imsuser:imsi=%s,msisdn=%s,volte=%s", imArr[0], imArr[1], volte)
data, err := telnet.ConvertToStr(telnetClient, cmd) data, err := telnet.ConvertToStr(telnetClient, cmd)
if err != nil { if err != nil {
c.JSON(200, resp.ErrMsg(err.Error())) resultData[im] = err.Error()
return continue
} }
// 命令ok时 // 命令ok时
if strings.Contains(data, "ok") { if strings.Contains(data, "ok") {
s.udmVolteIMSService.Delete(imsi, neId) s.udmVolteIMSService.Delete(imArr[0], neId)
} }
c.JSON(200, resp.OkData(data)) resultData[im] = data
return
} else {
// 处理字符转id数组后去重
uniqueIDs := parse.RemoveDuplicates(imsiArr)
if len(uniqueIDs) <= 0 {
c.JSON(200, resp.Err(nil))
return
}
resultData := map[string]string{}
for _, imsi := range uniqueIDs {
// 发送MML
cmd := fmt.Sprintf("del imsuser:imsi=%s", imsi)
data, err := telnet.ConvertToStr(telnetClient, cmd)
if err != nil {
resultData[imsi] = err.Error()
continue
}
// 命令ok时
if strings.Contains(data, "ok") {
s.udmVolteIMSService.Delete(imsi, neId)
}
resultData[imsi] = data
}
c.JSON(200, resp.OkData(resultData))
return
} }
c.JSON(200, resp.OkData(resultData))
} }
// UDMVolteIMS用户批量删除 // UDMVolteIMS用户批量删除
@@ -381,8 +377,13 @@ func (s *UDMVolteIMSController) 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")
volte := c.Query("volte")
if neId == "" || imsi == "" || num == "" { if neId == "" || imsi == "" || num == "" {
c.JSON(422, resp.CodeMsg(422002, "bind err: neId/imsi/num is empty")) c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId/imsi/num is empty"))
return
}
if volte == "" || !(volte == "0" || volte == "1") {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: volte is required"))
return return
} }
@@ -401,7 +402,13 @@ func (s *UDMVolteIMSController) Removes(c *gin.Context) {
defer telnetClient.Close() defer telnetClient.Close()
// 发送MML // 发送MML
cmd := fmt.Sprintf("bde imsuser:start_imsi=%s,sub_num=%s", imsi, num) cmd := ""
if volte == "0" {
cmd = fmt.Sprintf("bde imsuser:start_msisdn=%s,sub_num=%s,volte=0", imsi, num)
}
if volte == "1" {
cmd = fmt.Sprintf("bde imsuser:start_imsi=%s,sub_num=%s,volte=1", imsi, num)
}
data, err := telnet.ConvertToStr(telnetClient, cmd) data, err := telnet.ConvertToStr(telnetClient, cmd)
if err != nil { if err != nil {
c.JSON(200, resp.ErrMsg(err.Error())) c.JSON(200, resp.ErrMsg(err.Error()))

View File

@@ -181,7 +181,10 @@ func (r UDMVolteIMSUser) LoadData(neId, imsiOrMsisdn, num string) {
subNum, _ := strconv.ParseInt(num, 10, 64) subNum, _ := strconv.ParseInt(num, 10, 64)
var i int64 var i int64
for i = 0; i < subNum; i++ { for i = 0; i < subNum; i++ {
keyIMSI := fmt.Sprintf("%d", startIMSIOrMsisdn+i) keyIMSI := fmt.Sprintf("%015d", startIMSIOrMsisdn+i)
if !strings.HasPrefix(imsiOrMsisdn, "0") {
keyIMSI = fmt.Sprintf("%d", startIMSIOrMsisdn+i)
}
// 删除原数据 // 删除原数据
r.udmVolteIMSRepository.Delete(keyIMSI, neId) r.udmVolteIMSRepository.Delete(keyIMSI, neId)
// 加载数据 // 加载数据