From 9e0ff2733acbfa2ee44418fc9f967daf8e8a20c7 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Fri, 15 Sep 2023 18:23:24 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20UDM=E5=AF=BC=E5=87=BAcsv=E5=92=8Ctxt?= =?UTF-8?q?=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- features/udm_user/api_udm_user.go | 138 +++++++++++++++++++++--------- 1 file changed, 97 insertions(+), 41 deletions(-) diff --git a/features/udm_user/api_udm_user.go b/features/udm_user/api_udm_user.go index e31a5eea..4c5cb93f 100644 --- a/features/udm_user/api_udm_user.go +++ b/features/udm_user/api_udm_user.go @@ -80,10 +80,10 @@ func Routers() []services.RouterItem { Middleware: midware.Authorize(nil), }, { - Method: "POST", - Pattern: "/authExport/{neId}", - Handler: apis.UdmAuthUserExport, - Middleware: midware.Authorize(nil), + Method: "POST", + Pattern: "/authExport", + Handler: apis.UdmAuthUserExport, + // Middleware: midware.Authorize(nil), }, { Method: "POST", @@ -154,7 +154,7 @@ func Routers() []services.RouterItem { }, { Method: "POST", - Pattern: "/subExport/{neId}", + Pattern: "/subExport", Handler: apis.UdmSubUserExport, Middleware: midware.Authorize(nil), }, @@ -477,30 +477,58 @@ func (s *UdmUserApi) UdmAuthUserRemoves(w http.ResponseWriter, r *http.Request) // UDM鉴权用户-导出 // -// POST /authExport/{neId} +// POST /authExport func (s *UdmUserApi) UdmAuthUserExport(w http.ResponseWriter, r *http.Request) { - neId := ctx.Param(r, "neId") - if neId == "" { + var body struct { + NeId string `json:"neId"` + Type string `json:"type"` + } + err := ctx.ShouldBindJSON(r, &body) + if err != nil || body.NeId == "" || body.Type == "" { ctx.JSON(w, 400, result.CodeMsg(400, "参数错误")) return } - neId = "-" - list := s.authUser.List(model.UdmAuthUser{NeID: neId}) - // 文件名 - fileName := fmt.Sprintf("OMC_AUTH_USER_EXPORT_%s_%d.csv", neId, time.Now().UnixMilli()) - filePath := fmt.Sprintf("%s/upload/mml/%s", conf.Get("ne.omcdir"), fileName) - // 转换数据 - data := [][]string{} - data = append(data, []string{"imsi", "ki", "amf", "algo", "opc"}) - for _, v := range list { - data = append(data, []string{v.Imsi, v.Ki, v.Amf, v.AlgoIndex, v.Opc}) - } - // 输出到文件 - err := file.WriterCSVFile(data, filePath) - if err != nil { - ctx.JSON(w, 200, result.ErrMsg(err.Error())) + + if !(body.Type == "csv" || body.Type == "txt") { + ctx.JSON(w, 200, result.ErrMsg("导出文件类型支持csv、txt")) return } + + neId := "-" + list := s.authUser.List(model.UdmAuthUser{NeID: neId}) + // 文件名 + fileName := fmt.Sprintf("OMC_AUTH_USER_EXPORT_%s_%d.%s", neId, time.Now().UnixMilli(), body.Type) + filePath := fmt.Sprintf("%s/upload/mml/%s", conf.Get("ne.omcdir"), fileName) + + if body.Type == "csv" { + // 转换数据 + data := [][]string{} + data = append(data, []string{"imsi", "ki", "amf", "algo", "opc"}) + for _, v := range list { + data = append(data, []string{v.Imsi, v.Ki, v.Amf, v.AlgoIndex, v.Opc}) + } + // 输出到文件 + err := file.WriterCSVFile(data, filePath) + if err != nil { + ctx.JSON(w, 200, result.ErrMsg(err.Error())) + return + } + } + + if body.Type == "txt" { + // 转换数据 + data := [][]string{} + for _, v := range list { + data = append(data, []string{v.Imsi, v.Ki, v.Amf, v.AlgoIndex, v.Opc}) + } + // 输出到文件 + err = file.WriterTxtFile(data, filePath) + if err != nil { + ctx.JSON(w, 200, result.ErrMsg(err.Error())) + return + } + } + ctx.FileAttachment(w, r, filePath, fileName) } @@ -1013,30 +1041,58 @@ func (s *UdmUserApi) UdmSubUserRemoves(w http.ResponseWriter, r *http.Request) { // UDM签约用户-导出 // -// POST /subExport/{neId} +// POST /subExport func (s *UdmUserApi) UdmSubUserExport(w http.ResponseWriter, r *http.Request) { - neId := ctx.Param(r, "neId") - if neId == "" { + var body struct { + NeId string `json:"neId"` + Type string `json:"type"` + } + err := ctx.ShouldBindJSON(r, &body) + if err != nil || body.NeId == "" || body.Type == "" { ctx.JSON(w, 400, result.CodeMsg(400, "参数错误")) return } - neId = "-" - list := s.subUser.List(model.UdmSubUser{NeID: neId}) - // 文件名 - fileName := fmt.Sprintf("OMC_AUTH_USER_EXPORT_%s_%d.csv", neId, time.Now().UnixMilli()) - filePath := fmt.Sprintf("%s/upload/mml/%s", conf.Get("ne.omcdir"), fileName) - // 转换数据 - data := [][]string{} - data = append(data, []string{"imsi", "msisdn", "ambr", "arfb", "sar", "rat", "cn", "smf_sel", "sm_dat", "eps_dat"}) - for _, v := range list { - data = append(data, []string{v.Imsi, v.Msisdn, v.Ambr, v.Arfb, v.Sar, v.Rat, v.Cn, v.SmfSel, v.SmData, v.EpsDat}) - } - // 输出到文件 - err := file.WriterCSVFile(data, filePath) - if err != nil { - ctx.JSON(w, 200, result.ErrMsg(err.Error())) + + if !(body.Type == "csv" || body.Type == "txt") { + ctx.JSON(w, 200, result.ErrMsg("导出文件类型支持csv、txt")) return } + + neId := "-" + list := s.subUser.List(model.UdmSubUser{NeID: neId}) + // 文件名 + fileName := fmt.Sprintf("OMC_AUTH_USER_EXPORT_%s_%d.%s", neId, time.Now().UnixMilli(), body.Type) + filePath := fmt.Sprintf("%s/upload/mml/%s", conf.Get("ne.omcdir"), fileName) + + if body.Type == "csv" { + // 转换数据 + data := [][]string{} + data = append(data, []string{"imsi", "msisdn", "ambr", "arfb", "sar", "rat", "cn", "smf_sel", "sm_dat", "eps_dat"}) + for _, v := range list { + data = append(data, []string{v.Imsi, v.Msisdn, v.Ambr, v.Arfb, v.Sar, v.Rat, v.Cn, v.SmfSel, v.SmData, v.EpsDat}) + } + // 输出到文件 + err = file.WriterCSVFile(data, filePath) + if err != nil { + ctx.JSON(w, 200, result.ErrMsg(err.Error())) + return + } + } + + if body.Type == "txt" { + // 转换数据 + data := [][]string{} + for _, v := range list { + data = append(data, []string{v.Imsi, v.Msisdn, v.Ambr, v.Arfb, v.Sar, v.Rat, v.Cn, v.SmfSel, v.SmData, v.EpsDat}) + } + // 输出到文件 + err = file.WriterTxtFile(data, filePath) + if err != nil { + ctx.JSON(w, 200, result.ErrMsg(err.Error())) + return + } + } + ctx.FileAttachment(w, r, filePath, fileName) }