From 72c688e17892acdb6628a6c37d8bc1fa2a098b3f Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Tue, 20 May 2025 11:44:09 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=87=E4=BB=B6=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=96=87=E6=9C=AC=E8=BE=93=E5=87=BA=E5=87=BD?= =?UTF-8?q?=E6=95=B0=EF=BC=8C=E8=B0=83=E6=95=B4=E9=80=90=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/framework/utils/file/txt.go | 44 ++++++++++++++----- .../backup_export_udm/backup_export_udm.go | 8 ++-- .../network_data/controller/udm_auth.go | 4 +- .../network_data/controller/udm_sub.go | 4 +- .../network_data/controller/udm_voip.go | 4 +- .../network_data/controller/udm_volte_ims.go | 4 +- .../network_element/service/ne_version.go | 2 + 7 files changed, 48 insertions(+), 22 deletions(-) diff --git a/src/framework/utils/file/txt.go b/src/framework/utils/file/txt.go index e468a191..30e5b9f6 100644 --- a/src/framework/utils/file/txt.go +++ b/src/framework/utils/file/txt.go @@ -6,25 +6,23 @@ import ( "os" "path/filepath" "strings" - - "be.ems/src/framework/logger" ) -// WriterFileTXT 写入txt文件 sep 分割符号 需要转换数据 +// WriterFileTXTLine 逐行写入txt文件 sep 分割符号 需要转换数据 // // 例如: // data := [][]string{} // data = append(data, []string{"姓名", "年龄", "城市"}) // data = append(data, []string{"1", "2", "3"}) // err := file.WriterFileTXT(data, filePath) -func WriterFileTXT(data [][]string, sep string, filePath string) error { +func WriterFileTXTLine(data [][]string, sep string, filePath string) error { // 获取文件所在的目录路径 dirPath := filepath.Dir(filePath) // 确保文件夹路径存在 err := os.MkdirAll(dirPath, 0775) if err != nil { - logger.Errorf("CreateFile MkdirAll %v", err) + return err } // 创建或打开文件 @@ -44,21 +42,19 @@ func WriterFileTXT(data [][]string, sep string, filePath string) error { // 将缓冲区中的数据刷新到文件中 err = writer.Flush() if err != nil { - logger.Errorf("CreateFile Flush %v", err) return err } return nil } -// ReadFileTXT 读取Txt文件,sep 分割符号 转换数组数据 -func ReadFileTXT(sep string, filePath string) [][]string { +// ReadFileTXTLine 逐行读取Txt文件,sep 分割符号 转换数组数据 +func ReadFileTXTLine(sep string, filePath string) [][]string { // 创建 map 存储数据 arr := make([][]string, 0) // 打开文本文件 file, err := os.Open(filePath) if err != nil { - logger.Errorf("OpenFile Open %v", err) return arr } defer file.Close() @@ -66,7 +62,6 @@ func ReadFileTXT(sep string, filePath string) [][]string { // 创建一个 Scanner 对象,用于逐行读取文件内容 scanner := bufio.NewScanner(file) if scanner.Err() != nil { - logger.Errorf("OpenFile NewScanner %v", scanner.Err()) return arr } @@ -78,3 +73,32 @@ func ReadFileTXT(sep string, filePath string) [][]string { return arr } + +// WriterFileTXT 写入txt文件 +// +// 例如: +// err := file.WriterFileTXT("", filePath) +func WriterFileTXT(text string, filePath string) error { + // 获取文件所在的目录路径 + dirPath := filepath.Dir(filePath) + + // 确保文件夹路径存在 + err := os.MkdirAll(dirPath, 0775) + if err != nil { + return err + } + + // 创建或打开文件 + file, err := os.Create(filePath) + if err != nil { + return err + } + defer file.Close() + + // 将缓冲区中的数据刷新到文件中 + _, err = file.WriteString(text) + if err != nil { + return err + } + return nil +} diff --git a/src/modules/crontask/processor/backup_export_udm/backup_export_udm.go b/src/modules/crontask/processor/backup_export_udm/backup_export_udm.go index 7b3f2ea0..e0625a6e 100644 --- a/src/modules/crontask/processor/backup_export_udm/backup_export_udm.go +++ b/src/modules/crontask/processor/backup_export_udm/backup_export_udm.go @@ -120,7 +120,7 @@ func (s BackupExportUDMProcessor) exportAuth(neId, fileType string) string { data = append(data, []string{v.IMSI, v.Ki, v.AlgoIndex, v.Amf, opc}) } // 输出到文件 - if err := file.WriterFileTXT(data, ",", filePath); err != nil { + if err := file.WriterFileTXTLine(data, ",", filePath); err != nil { return err.Error() } } @@ -168,7 +168,7 @@ func (s BackupExportUDMProcessor) exportSub(neId, fileType string) string { data = append(data, []string{v.IMSI, v.MSISDN, v.UeAmbrTpl, v.NssaiTpl, v.AreaForbiddenTpl, v.ServiceAreaRestrictionTpl, v.RatRestrictions, v.CnTypeRestrictions, v.SmfSel, v.SmData, epsDat}) } // 输出到文件 - if err := file.WriterFileTXT(data, ",", filePath); err != nil { + if err := file.WriterFileTXTLine(data, ",", filePath); err != nil { return err.Error() } } @@ -214,7 +214,7 @@ func (s BackupExportUDMProcessor) exportVOIP(neId, fileType string) string { data = append(data, []string{v.UserName, v.Password}) } // 输出到文件 - if err := file.WriterFileTXT(data, ",", filePath); err != nil { + if err := file.WriterFileTXTLine(data, ",", filePath); err != nil { return err.Error() } } @@ -260,7 +260,7 @@ func (s BackupExportUDMProcessor) exportVolte(neId, fileType string) string { data = append(data, []string{v.IMSI, v.MSISDN, v.Tag, v.VNI}) } // 输出到文件 - if err := file.WriterFileTXT(data, ",", filePath); err != nil { + if err := file.WriterFileTXTLine(data, ",", filePath); err != nil { return err.Error() } } diff --git a/src/modules/network_data/controller/udm_auth.go b/src/modules/network_data/controller/udm_auth.go index df94f622..b84d0619 100644 --- a/src/modules/network_data/controller/udm_auth.go +++ b/src/modules/network_data/controller/udm_auth.go @@ -525,7 +525,7 @@ func (s *UDMAuthController) Export(c *gin.Context) { data = append(data, []string{v.IMSI, v.Ki, v.AlgoIndex, v.Amf, opc}) } // 输出到文件 - if err := file.WriterFileTXT(data, ",", filePath); err != nil { + if err := file.WriterFileTXTLine(data, ",", filePath); err != nil { c.JSON(200, resp.ErrMsg(err.Error())) return } @@ -635,7 +635,7 @@ func (s *UDMAuthController) Import(c *gin.Context) { go s.udmAuthService.InsertData(neInfo.NeId, "csv", data) } if strings.HasSuffix(body.UploadPath, ".txt") { - data := file.ReadFileTXT(",", localFilePath) + data := file.ReadFileTXTLine(",", localFilePath) go s.udmAuthService.InsertData(neInfo.NeId, "txt", data) } } diff --git a/src/modules/network_data/controller/udm_sub.go b/src/modules/network_data/controller/udm_sub.go index 84b61bb4..bd0450ab 100644 --- a/src/modules/network_data/controller/udm_sub.go +++ b/src/modules/network_data/controller/udm_sub.go @@ -525,7 +525,7 @@ func (s *UDMSubController) Export(c *gin.Context) { data = append(data, []string{v.IMSI, v.MSISDN, v.UeAmbrTpl, v.NssaiTpl, v.AreaForbiddenTpl, v.ServiceAreaRestrictionTpl, v.RatRestrictions, v.CnTypeRestrictions, v.SmfSel, v.SmData, epsDat}) } // 输出到文件 - if err := file.WriterFileTXT(data, ",", filePath); err != nil { + if err := file.WriterFileTXTLine(data, ",", filePath); err != nil { c.JSON(200, resp.ErrMsg(err.Error())) return } @@ -619,7 +619,7 @@ func (s *UDMSubController) Import(c *gin.Context) { go s.udmSubService.InsertData(neInfo.NeId, "csv", data) } if strings.HasSuffix(body.UploadPath, ".txt") { - data := file.ReadFileTXT(",", localFilePath) + data := file.ReadFileTXTLine(",", localFilePath) go s.udmSubService.InsertData(neInfo.NeId, "txt", data) } } diff --git a/src/modules/network_data/controller/udm_voip.go b/src/modules/network_data/controller/udm_voip.go index df3e0110..ff19519f 100644 --- a/src/modules/network_data/controller/udm_voip.go +++ b/src/modules/network_data/controller/udm_voip.go @@ -455,7 +455,7 @@ func (s *UDMVOIPController) Export(c *gin.Context) { data = append(data, []string{v.UserName, v.Password}) } // 输出到文件 - if err := file.WriterFileTXT(data, ",", filePath); err != nil { + if err := file.WriterFileTXTLine(data, ",", filePath); err != nil { c.JSON(200, resp.ErrMsg(err.Error())) return } @@ -553,7 +553,7 @@ func (s *UDMVOIPController) Import(c *gin.Context) { go s.udmVOIPService.InsertData(neInfo.NeId, "csv", data) } if strings.HasSuffix(body.UploadPath, ".txt") { - data := file.ReadFileTXT(",", localFilePath) + data := file.ReadFileTXTLine(",", localFilePath) go s.udmVOIPService.InsertData(neInfo.NeId, "txt", data) } } diff --git a/src/modules/network_data/controller/udm_volte_ims.go b/src/modules/network_data/controller/udm_volte_ims.go index d3d2243e..d210a933 100644 --- a/src/modules/network_data/controller/udm_volte_ims.go +++ b/src/modules/network_data/controller/udm_volte_ims.go @@ -484,7 +484,7 @@ func (s *UDMVolteIMSController) Export(c *gin.Context) { data = append(data, []string{v.IMSI, v.MSISDN, v.Tag, v.VNI}) } // 输出到文件 - if err := file.WriterFileTXT(data, ",", filePath); err != nil { + if err := file.WriterFileTXTLine(data, ",", filePath); err != nil { c.JSON(200, resp.ErrMsg(err.Error())) return } @@ -582,7 +582,7 @@ func (s *UDMVolteIMSController) Import(c *gin.Context) { go s.udmVolteIMSService.InsertData(neInfo.NeId, "csv", data) } if strings.HasSuffix(body.UploadPath, ".txt") { - data := file.ReadFileTXT(",", localFilePath) + data := file.ReadFileTXTLine(",", localFilePath) go s.udmVolteIMSService.InsertData(neInfo.NeId, "txt", data) } } diff --git a/src/modules/network_element/service/ne_version.go b/src/modules/network_element/service/ne_version.go index db49214a..8d2064f9 100644 --- a/src/modules/network_element/service/ne_version.go +++ b/src/modules/network_element/service/ne_version.go @@ -178,6 +178,8 @@ func (r NeVersion) Operate(action string, neVersion model.NeVersion, preinput ma if err != nil { return "", err } + // 将安装升级执行结果写入文件 + file.WriterFileTXT(commandLine, fmt.Sprintf("/tmp/%s_%s.out", neVersion.NeType, action)) // ========= 完成阶段 ========= if strings.LastIndex(commandLine, okFlagStr) > 5 {