diff --git a/src/modules/network_data/controller/udm_volte_ims.go b/src/modules/network_data/controller/udm_volte_ims.go index 878059dc..1a034553 100644 --- a/src/modules/network_data/controller/udm_volte_ims.go +++ b/src/modules/network_data/controller/udm_volte_ims.go @@ -100,6 +100,7 @@ func (s *UDMVolteIMSController) Info(c *gin.Context) { neId := c.Param("neId") imsi := c.Param("imsi") msisdn := c.Query("msisdn") + volte := c.Query("volte") if neId == "" || imsi == "" { c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId or imsi is empty")) return @@ -108,6 +109,10 @@ func (s *UDMVolteIMSController) Info(c *gin.Context) { 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 + } // 查询网元获取IP neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", neId) @@ -124,7 +129,7 @@ func (s *UDMVolteIMSController) Info(c *gin.Context) { defer telnetClient.Close() // 发送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) if err != nil { 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) { language := reqctx.AcceptLanguage(c) neId := c.Param("neId") - imsi := c.Param("imsi") - msisdn := c.Query("msisdn") - if neId == "" || imsi == "" { + 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 } - 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 neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", neId) @@ -319,46 +327,34 @@ func (s *UDMVolteIMSController) Remove(c *gin.Context) { } defer telnetClient.Close() - // 精确msisdn删除 - if msisdn != "" { + 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 _, 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,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) if err != nil { - c.JSON(200, resp.ErrMsg(err.Error())) - return + resultData[im] = err.Error() + continue } // 命令ok时 if strings.Contains(data, "ok") { - s.udmVolteIMSService.Delete(imsi, neId) + s.udmVolteIMSService.Delete(imArr[0], neId) } - c.JSON(200, resp.OkData(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 + resultData[im] = data } + c.JSON(200, resp.OkData(resultData)) } // UDMVolteIMS用户批量删除 @@ -379,12 +375,17 @@ func (s *UDMVolteIMSController) Remove(c *gin.Context) { func (s *UDMVolteIMSController) Removes(c *gin.Context) { language := reqctx.AcceptLanguage(c) neId := c.Param("neId") - imsi := c.Param("imsi") + imsi_msisdn := c.Param("imsi") num := c.Param("num") - if neId == "" || imsi == "" || num == "" { + 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 + } // 查询网元获取IP neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", neId) @@ -400,8 +401,22 @@ func (s *UDMVolteIMSController) 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, resp.ErrMsg(err.Error()))