Merge branch 'main' of http://192.168.0.229:3180/OMC/ems_backend
This commit is contained in:
@@ -80,10 +80,10 @@ func Routers() []services.RouterItem {
|
|||||||
Middleware: midware.Authorize(nil),
|
Middleware: midware.Authorize(nil),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Method: "POST",
|
Method: "POST",
|
||||||
Pattern: "/authExport/{neId}",
|
Pattern: "/authExport",
|
||||||
Handler: apis.UdmAuthUserExport,
|
Handler: apis.UdmAuthUserExport,
|
||||||
Middleware: midware.Authorize(nil),
|
// Middleware: midware.Authorize(nil),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Method: "POST",
|
Method: "POST",
|
||||||
@@ -154,7 +154,7 @@ func Routers() []services.RouterItem {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
Method: "POST",
|
Method: "POST",
|
||||||
Pattern: "/subExport/{neId}",
|
Pattern: "/subExport",
|
||||||
Handler: apis.UdmSubUserExport,
|
Handler: apis.UdmSubUserExport,
|
||||||
Middleware: midware.Authorize(nil),
|
Middleware: midware.Authorize(nil),
|
||||||
},
|
},
|
||||||
@@ -477,30 +477,58 @@ func (s *UdmUserApi) UdmAuthUserRemoves(w http.ResponseWriter, r *http.Request)
|
|||||||
|
|
||||||
// UDM鉴权用户-导出
|
// UDM鉴权用户-导出
|
||||||
//
|
//
|
||||||
// POST /authExport/{neId}
|
// POST /authExport
|
||||||
func (s *UdmUserApi) UdmAuthUserExport(w http.ResponseWriter, r *http.Request) {
|
func (s *UdmUserApi) UdmAuthUserExport(w http.ResponseWriter, r *http.Request) {
|
||||||
neId := ctx.Param(r, "neId")
|
var body struct {
|
||||||
if neId == "" {
|
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, "参数错误"))
|
ctx.JSON(w, 400, result.CodeMsg(400, "参数错误"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
neId = "-"
|
|
||||||
list := s.authUser.List(model.UdmAuthUser{NeID: neId})
|
if !(body.Type == "csv" || body.Type == "txt") {
|
||||||
// 文件名
|
ctx.JSON(w, 200, result.ErrMsg("导出文件类型支持csv、txt"))
|
||||||
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()))
|
|
||||||
return
|
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)
|
ctx.FileAttachment(w, r, filePath, fileName)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -520,8 +548,8 @@ func (s *UdmUserApi) UdmAuthUserImport(w http.ResponseWriter, r *http.Request) {
|
|||||||
ctx.JSON(w, 200, result.ErrMsg(err.Error()))
|
ctx.JSON(w, 200, result.ErrMsg(err.Error()))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if !strings.HasSuffix(fileHeader.Filename, ".csv") {
|
if !(strings.HasSuffix(fileHeader.Filename, ".csv") || strings.HasSuffix(fileHeader.Filename, ".txt")) {
|
||||||
ctx.JSON(w, 200, result.ErrMsg("请上传CSV格式文件,内容字段imsi, ki, algo, amf, opc"))
|
ctx.JSON(w, 200, result.ErrMsg("请上传.csv、.txt格式文件,内容字段imsi,ki,algo,amf,opc"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -557,11 +585,19 @@ func (s *UdmUserApi) UdmAuthUserImport(w http.ResponseWriter, r *http.Request) {
|
|||||||
ctx.JSON(w, 200, result.ErrMsg(err.Error()))
|
ctx.JSON(w, 200, result.ErrMsg(err.Error()))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 命令ok时
|
// 命令ok时
|
||||||
if strings.Contains(data, "ok") {
|
if strings.Contains(data, "ok") {
|
||||||
data := file.ReadCSVFile(filePath)
|
if strings.HasSuffix(fileHeader.Filename, ".csv") {
|
||||||
neId = "-"
|
data := file.ReadCSVFile(filePath)
|
||||||
s.authUser.InsertCSV(neId, data)
|
neId = "-"
|
||||||
|
s.authUser.InsertCSV(neId, data)
|
||||||
|
}
|
||||||
|
if strings.HasSuffix(fileHeader.Filename, ".txt") {
|
||||||
|
data := file.ReadTxtFile(filePath)
|
||||||
|
neId = "-"
|
||||||
|
s.authUser.InsertTxt(neId, data)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
ctx.JSON(w, 200, result.OkData(data))
|
ctx.JSON(w, 200, result.OkData(data))
|
||||||
}
|
}
|
||||||
@@ -1005,30 +1041,58 @@ func (s *UdmUserApi) UdmSubUserRemoves(w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
// UDM签约用户-导出
|
// UDM签约用户-导出
|
||||||
//
|
//
|
||||||
// POST /subExport/{neId}
|
// POST /subExport
|
||||||
func (s *UdmUserApi) UdmSubUserExport(w http.ResponseWriter, r *http.Request) {
|
func (s *UdmUserApi) UdmSubUserExport(w http.ResponseWriter, r *http.Request) {
|
||||||
neId := ctx.Param(r, "neId")
|
var body struct {
|
||||||
if neId == "" {
|
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, "参数错误"))
|
ctx.JSON(w, 400, result.CodeMsg(400, "参数错误"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
neId = "-"
|
|
||||||
list := s.subUser.List(model.UdmSubUser{NeID: neId})
|
if !(body.Type == "csv" || body.Type == "txt") {
|
||||||
// 文件名
|
ctx.JSON(w, 200, result.ErrMsg("导出文件类型支持csv、txt"))
|
||||||
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()))
|
|
||||||
return
|
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)
|
ctx.FileAttachment(w, r, filePath, fileName)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1048,8 +1112,8 @@ func (s *UdmUserApi) UdmSubUserImport(w http.ResponseWriter, r *http.Request) {
|
|||||||
ctx.JSON(w, 200, result.ErrMsg(err.Error()))
|
ctx.JSON(w, 200, result.ErrMsg(err.Error()))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if !strings.HasSuffix(fileHeader.Filename, ".csv") {
|
if !(strings.HasSuffix(fileHeader.Filename, ".csv") || strings.HasSuffix(fileHeader.Filename, ".txt")) {
|
||||||
ctx.JSON(w, 200, result.ErrMsg("请上传CSV格式文件,内容字段imsi, msisdn, ambr, nssai, arfb, sar,rat, cn, smf_sel, sm_dat,eps_dat"))
|
ctx.JSON(w, 200, result.ErrMsg("请上传.csv、.txt格式文件,内容字段imsi,msisdn,ambr,nssai,arfb,sar,rat,cn,smf_sel,sm_dat,eps_dat"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1087,9 +1151,16 @@ func (s *UdmUserApi) UdmSubUserImport(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
// 命令ok时
|
// 命令ok时
|
||||||
if strings.Contains(data, "ok") {
|
if strings.Contains(data, "ok") {
|
||||||
data := file.ReadCSVFile(filePath)
|
if strings.HasSuffix(fileHeader.Filename, ".csv") {
|
||||||
neId = "-"
|
data := file.ReadCSVFile(filePath)
|
||||||
s.subUser.InsertCSV(neId, data)
|
neId = "-"
|
||||||
|
s.subUser.InsertCSV(neId, data)
|
||||||
|
}
|
||||||
|
if strings.HasSuffix(fileHeader.Filename, ".txt") {
|
||||||
|
data := file.ReadTxtFile(filePath)
|
||||||
|
neId = "-"
|
||||||
|
s.subUser.InsertTxt(neId, data)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
ctx.JSON(w, 200, result.OkData(data))
|
ctx.JSON(w, 200, result.OkData(data))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -195,6 +195,7 @@ func (r *RepoUdmAuthUser) Insert(neID string, authUser model.UdmAuthUser) int64
|
|||||||
func (r *RepoUdmAuthUser) Inserts(neID string, authUser model.UdmAuthUser, num string) int64 {
|
func (r *RepoUdmAuthUser) Inserts(neID string, authUser model.UdmAuthUser, num string) int64 {
|
||||||
var insertNum int64
|
var insertNum int64
|
||||||
|
|
||||||
|
imsiVlen := len(authUser.Imsi)
|
||||||
imsiV, err := strconv.Atoi(authUser.Imsi)
|
imsiV, err := strconv.Atoi(authUser.Imsi)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0
|
return 0
|
||||||
@@ -208,7 +209,11 @@ func (r *RepoUdmAuthUser) Inserts(neID string, authUser model.UdmAuthUser, num s
|
|||||||
authUser.NeID = neID
|
authUser.NeID = neID
|
||||||
authUser.Status = "1"
|
authUser.Status = "1"
|
||||||
for i := 0; i < numV; i++ {
|
for i := 0; i < numV; i++ {
|
||||||
authUser.Imsi = fmt.Sprint(imsiV + i)
|
imsi := fmt.Sprint(imsiV + i)
|
||||||
|
if len(imsi) < imsiVlen {
|
||||||
|
imsi = fmt.Sprintf("%0*s", imsiVlen, imsi)
|
||||||
|
}
|
||||||
|
authUser.Imsi = imsi
|
||||||
results, err := datasource.DefaultDB().Table("u_auth_user").Insert(authUser)
|
results, err := datasource.DefaultDB().Table("u_auth_user").Insert(authUser)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
insertNum += results
|
insertNum += results
|
||||||
|
|||||||
@@ -210,10 +210,12 @@ func (r *RepoUdmSubUser) Insert(neID string, subUser model.UdmSubUser) int64 {
|
|||||||
func (r *RepoUdmSubUser) Inserts(neID string, subUser model.UdmSubUser, num string) int64 {
|
func (r *RepoUdmSubUser) Inserts(neID string, subUser model.UdmSubUser, num string) int64 {
|
||||||
var insertNum int64
|
var insertNum int64
|
||||||
|
|
||||||
|
imsiVlen := len(subUser.Imsi)
|
||||||
imsiV, err := strconv.Atoi(subUser.Imsi)
|
imsiV, err := strconv.Atoi(subUser.Imsi)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
msisdnVlen := len(subUser.Msisdn)
|
||||||
msisdnV, err := strconv.Atoi(subUser.Msisdn)
|
msisdnV, err := strconv.Atoi(subUser.Msisdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0
|
return 0
|
||||||
@@ -226,8 +228,18 @@ func (r *RepoUdmSubUser) Inserts(neID string, subUser model.UdmSubUser, num stri
|
|||||||
|
|
||||||
subUser.NeID = neID
|
subUser.NeID = neID
|
||||||
for i := 0; i < numV; i++ {
|
for i := 0; i < numV; i++ {
|
||||||
subUser.Imsi = fmt.Sprint(imsiV + i)
|
msisdn := fmt.Sprint(msisdnV + i)
|
||||||
subUser.Msisdn = fmt.Sprint(msisdnV + i)
|
if len(msisdn) < msisdnVlen {
|
||||||
|
msisdn = fmt.Sprintf("%0*s", msisdnVlen, msisdn)
|
||||||
|
}
|
||||||
|
subUser.Msisdn = msisdn
|
||||||
|
|
||||||
|
imsi := fmt.Sprint(imsiV + i)
|
||||||
|
if len(imsi) < imsiVlen {
|
||||||
|
imsi = fmt.Sprintf("%0*s", imsiVlen, imsi)
|
||||||
|
}
|
||||||
|
subUser.Imsi = imsi
|
||||||
|
|
||||||
// IP会自动递增
|
// IP会自动递增
|
||||||
if subUser.StaticIp != "" {
|
if subUser.StaticIp != "" {
|
||||||
parts := strings.Split(subUser.StaticIp, ".")
|
parts := strings.Split(subUser.StaticIp, ".")
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ func (r *ServiceUdmAuthUser) Inserts(neID string, authUser model.UdmAuthUser, nu
|
|||||||
return r.repoAuthUser.Inserts(neID, authUser, num)
|
return r.repoAuthUser.Inserts(neID, authUser, num)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Insert UDM鉴权用户-批量添加
|
// InsertCSV UDM鉴权用户-批量添加
|
||||||
func (r *ServiceUdmAuthUser) InsertCSV(neID string, data []map[string]string) int64 {
|
func (r *ServiceUdmAuthUser) InsertCSV(neID string, data []map[string]string) int64 {
|
||||||
var num int64
|
var num int64
|
||||||
for _, v := range data {
|
for _, v := range data {
|
||||||
@@ -74,6 +74,28 @@ func (r *ServiceUdmAuthUser) InsertCSV(neID string, data []map[string]string) in
|
|||||||
return num
|
return num
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// InsertTxt UDM鉴权用户-批量添加
|
||||||
|
func (r *ServiceUdmAuthUser) InsertTxt(neID string, data [][]string) int64 {
|
||||||
|
var num int64
|
||||||
|
for _, v := range data {
|
||||||
|
if len(v) < 4 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
var authUser model.UdmAuthUser
|
||||||
|
authUser.NeID = neID
|
||||||
|
authUser.Status = "1"
|
||||||
|
authUser.Imsi = v[0]
|
||||||
|
authUser.Ki = v[1]
|
||||||
|
authUser.AlgoIndex = v[2]
|
||||||
|
authUser.Amf = v[3]
|
||||||
|
if len(v) == 5 {
|
||||||
|
authUser.Opc = v[4]
|
||||||
|
}
|
||||||
|
num += r.repoAuthUser.Insert(neID, authUser)
|
||||||
|
}
|
||||||
|
return num
|
||||||
|
}
|
||||||
|
|
||||||
// Insert UDM鉴权用户-修改更新
|
// Insert UDM鉴权用户-修改更新
|
||||||
func (r *ServiceUdmAuthUser) Update(neID string, authUser model.UdmAuthUser) int64 {
|
func (r *ServiceUdmAuthUser) Update(neID string, authUser model.UdmAuthUser) int64 {
|
||||||
return r.repoAuthUser.Update(neID, authUser)
|
return r.repoAuthUser.Update(neID, authUser)
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ func (r *ServiceUdmSubUser) Inserts(neID string, subUser model.UdmSubUser, num s
|
|||||||
return r.repoSunUser.Inserts(neID, subUser, num)
|
return r.repoSunUser.Inserts(neID, subUser, num)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Insert UDM签约用户-批量添加
|
// InsertCSV UDM签约用户-批量添加
|
||||||
func (r *ServiceUdmSubUser) InsertCSV(neID string, data []map[string]string) int64 {
|
func (r *ServiceUdmSubUser) InsertCSV(neID string, data []map[string]string) int64 {
|
||||||
var num int64
|
var num int64
|
||||||
for _, v := range data {
|
for _, v := range data {
|
||||||
@@ -91,6 +91,33 @@ func (r *ServiceUdmSubUser) InsertCSV(neID string, data []map[string]string) int
|
|||||||
return num
|
return num
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// InsertTxt UDM签约用户-批量添加
|
||||||
|
func (r *ServiceUdmSubUser) InsertTxt(neID string, data [][]string) int64 {
|
||||||
|
var num int64
|
||||||
|
for _, v := range data {
|
||||||
|
if len(v) < 10 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
var subUser model.UdmSubUser
|
||||||
|
subUser.NeID = neID
|
||||||
|
subUser.Imsi = v[0]
|
||||||
|
subUser.Msisdn = v[1]
|
||||||
|
subUser.Ambr = v[2]
|
||||||
|
subUser.Nssai = v[3]
|
||||||
|
subUser.Arfb = v[4]
|
||||||
|
subUser.Sar = v[5]
|
||||||
|
subUser.Rat = v[6]
|
||||||
|
subUser.Cn = v[7]
|
||||||
|
subUser.SmfSel = v[8]
|
||||||
|
subUser.SmData = v[9]
|
||||||
|
if len(v) == 11 {
|
||||||
|
subUser.EpsDat = v[10]
|
||||||
|
}
|
||||||
|
num += r.repoSunUser.Insert(neID, subUser)
|
||||||
|
}
|
||||||
|
return num
|
||||||
|
}
|
||||||
|
|
||||||
// Insert UDM签约用户-批量添加4G用户
|
// Insert UDM签约用户-批量添加4G用户
|
||||||
func (r *ServiceUdmSubUser) Insert4G(neID string, subUser model.UdmSubUser) int64 {
|
func (r *ServiceUdmSubUser) Insert4G(neID string, subUser model.UdmSubUser) int64 {
|
||||||
return r.repoSunUser.Insert4G(neID, subUser)
|
return r.repoSunUser.Insert4G(neID, subUser)
|
||||||
|
|||||||
@@ -45,10 +45,14 @@ func WriterCSVFile(data [][]string, filePath string) error {
|
|||||||
|
|
||||||
// 读取CSV文件,转换map数据
|
// 读取CSV文件,转换map数据
|
||||||
func ReadCSVFile(filePath string) []map[string]string {
|
func ReadCSVFile(filePath string) []map[string]string {
|
||||||
|
// 创建 map 存储 CSV 数据
|
||||||
|
arr := make([]map[string]string, 0)
|
||||||
|
|
||||||
// 打开 CSV 文件
|
// 打开 CSV 文件
|
||||||
file, err := os.Open(filePath)
|
file, err := os.Open(filePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("无法打开 CSV 文件:", err)
|
log.Fatal("无法打开 CSV 文件:", err)
|
||||||
|
return arr
|
||||||
}
|
}
|
||||||
defer file.Close()
|
defer file.Close()
|
||||||
|
|
||||||
@@ -59,11 +63,9 @@ func ReadCSVFile(filePath string) []map[string]string {
|
|||||||
header, err := reader.Read()
|
header, err := reader.Read()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("无法读取 CSV 头部行:", err)
|
log.Fatal("无法读取 CSV 头部行:", err)
|
||||||
|
return arr
|
||||||
}
|
}
|
||||||
|
|
||||||
// 创建 map 存储 CSV 数据
|
|
||||||
arr := make([]map[string]string, 0)
|
|
||||||
|
|
||||||
// 遍历 CSV 数据行
|
// 遍历 CSV 数据行
|
||||||
for {
|
for {
|
||||||
// 读取一行数据
|
// 读取一行数据
|
||||||
|
|||||||
79
lib/core/file/txt.go
Normal file
79
lib/core/file/txt.go
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
package file
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"ems.agt/lib/log"
|
||||||
|
)
|
||||||
|
|
||||||
|
// 写入Txt文件用,号分割 需要转换数据
|
||||||
|
// 例如:
|
||||||
|
// data := [][]string{}
|
||||||
|
// data = append(data, []string{"姓名", "年龄", "城市"})
|
||||||
|
// data = append(data, []string{"1", "2", "3"})
|
||||||
|
// err := file.WriterCSVFile(data, filePath)
|
||||||
|
func WriterTxtFile(data [][]string, filePath string) error {
|
||||||
|
// 获取文件所在的目录路径
|
||||||
|
dirPath := filepath.Dir(filePath)
|
||||||
|
|
||||||
|
// 确保文件夹路径存在
|
||||||
|
err := os.MkdirAll(dirPath, os.ModePerm)
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf("创建文件夹失败 CreateFile %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建或打开文件
|
||||||
|
file, err := os.Create(filePath)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer file.Close()
|
||||||
|
|
||||||
|
// 创建一个 Writer 对象,用于将数据写入文件
|
||||||
|
writer := bufio.NewWriter(file)
|
||||||
|
for _, row := range data {
|
||||||
|
line := strings.Join(row, ",")
|
||||||
|
fmt.Fprintln(writer, line)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 将缓冲区中的数据刷新到文件中
|
||||||
|
err = writer.Flush()
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf("刷新缓冲区时发生错误:", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// 读取Txt文件,用,号分割 转换数组数据
|
||||||
|
func ReadTxtFile(filePath string) [][]string {
|
||||||
|
// 创建 map 存储 CSV 数据
|
||||||
|
arr := make([][]string, 0)
|
||||||
|
|
||||||
|
// 打开文本文件
|
||||||
|
file, err := os.Open(filePath)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal("无法打开文件:", err)
|
||||||
|
return arr
|
||||||
|
}
|
||||||
|
defer file.Close()
|
||||||
|
|
||||||
|
// 创建一个 Scanner 对象,用于逐行读取文件内容
|
||||||
|
scanner := bufio.NewScanner(file)
|
||||||
|
if scanner.Err() != nil {
|
||||||
|
log.Fatal("读取文件时出错:", scanner.Err())
|
||||||
|
return arr
|
||||||
|
}
|
||||||
|
|
||||||
|
for scanner.Scan() {
|
||||||
|
line := scanner.Text()
|
||||||
|
fields := strings.Split(line, ",")
|
||||||
|
arr = append(arr, fields)
|
||||||
|
}
|
||||||
|
|
||||||
|
return arr
|
||||||
|
}
|
||||||
@@ -42,14 +42,14 @@ func MMLSendMsgToString(ip, msg string) (string, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 截断
|
// 截断
|
||||||
index := strings.Index(str, "\nUDM>")
|
index := strings.Index(str, "\n")
|
||||||
if index != -1 {
|
if index != -1 {
|
||||||
str = str[:index]
|
str = str[:index]
|
||||||
str = strings.ToLower(str)
|
str = strings.ToLower(str)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 命令成功
|
// 命令成功
|
||||||
if strings.Contains(str, "ok") {
|
if strings.Contains(str, "ok") || strings.Contains(str, "OK") {
|
||||||
return str, nil
|
return str, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user