fix: UDM导出csv和txt支持

This commit is contained in:
TsMask
2023-09-15 18:23:24 +08:00
parent 3b761cd3f3
commit 9e0ff2733a

View File

@@ -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)
}