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