fix: UDM导入txt支持

This commit is contained in:
TsMask
2023-09-15 18:01:43 +08:00
parent c6f277f0e9
commit 289e892254
5 changed files with 96 additions and 15 deletions

View File

@@ -520,8 +520,8 @@ func (s *UdmUserApi) UdmAuthUserImport(w http.ResponseWriter, r *http.Request) {
ctx.JSON(w, 200, result.ErrMsg(err.Error()))
return
}
if !strings.HasSuffix(fileHeader.Filename, ".csv") {
ctx.JSON(w, 200, result.ErrMsg("请上传CSV格式文件内容字段imsi, ki, algo, amf, opc"))
if !(strings.HasSuffix(fileHeader.Filename, ".csv") || strings.HasSuffix(fileHeader.Filename, ".txt")) {
ctx.JSON(w, 200, result.ErrMsg("请上传.csv、.txt格式文件内容字段imsi,ki,algo,amf,opc"))
return
}
@@ -557,11 +557,19 @@ func (s *UdmUserApi) UdmAuthUserImport(w http.ResponseWriter, r *http.Request) {
ctx.JSON(w, 200, result.ErrMsg(err.Error()))
return
}
// 命令ok时
if strings.Contains(data, "ok") {
data := file.ReadCSVFile(filePath)
neId = "-"
s.authUser.InsertCSV(neId, data)
if strings.HasSuffix(fileHeader.Filename, ".csv") {
data := file.ReadCSVFile(filePath)
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))
}
@@ -1048,8 +1056,8 @@ func (s *UdmUserApi) UdmSubUserImport(w http.ResponseWriter, r *http.Request) {
ctx.JSON(w, 200, result.ErrMsg(err.Error()))
return
}
if !strings.HasSuffix(fileHeader.Filename, ".csv") {
ctx.JSON(w, 200, result.ErrMsg("请上传CSV格式文件内容字段imsi, msisdn, ambr, nssai, arfb, sar,rat, cn, smf_sel, sm_dat,eps_dat"))
if !(strings.HasSuffix(fileHeader.Filename, ".csv") || strings.HasSuffix(fileHeader.Filename, ".txt")) {
ctx.JSON(w, 200, result.ErrMsg("请上传.csv、.txt格式文件内容字段imsi,msisdn,ambr,nssai,arfb,sar,rat,cn,smf_sel,sm_dat,eps_dat"))
return
}
@@ -1087,9 +1095,16 @@ func (s *UdmUserApi) UdmSubUserImport(w http.ResponseWriter, r *http.Request) {
}
// 命令ok时
if strings.Contains(data, "ok") {
data := file.ReadCSVFile(filePath)
neId = "-"
s.subUser.InsertCSV(neId, data)
if strings.HasSuffix(fileHeader.Filename, ".csv") {
data := file.ReadCSVFile(filePath)
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))
}

View File

@@ -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 {
var insertNum int64
imsiVlen := len(authUser.Imsi)
imsiV, err := strconv.Atoi(authUser.Imsi)
if err != nil {
return 0
@@ -208,7 +209,11 @@ func (r *RepoUdmAuthUser) Inserts(neID string, authUser model.UdmAuthUser, num s
authUser.NeID = neID
authUser.Status = "1"
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)
if err == nil {
insertNum += results

View File

@@ -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 {
var insertNum int64
imsiVlen := len(subUser.Imsi)
imsiV, err := strconv.Atoi(subUser.Imsi)
if err != nil {
return 0
}
msisdnVlen := len(subUser.Msisdn)
msisdnV, err := strconv.Atoi(subUser.Msisdn)
if err != nil {
return 0
@@ -226,8 +228,18 @@ func (r *RepoUdmSubUser) Inserts(neID string, subUser model.UdmSubUser, num stri
subUser.NeID = neID
for i := 0; i < numV; i++ {
subUser.Imsi = fmt.Sprint(imsiV + i)
subUser.Msisdn = fmt.Sprint(msisdnV + i)
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会自动递增
if subUser.StaticIp != "" {
parts := strings.Split(subUser.StaticIp, ".")

View File

@@ -47,7 +47,7 @@ func (r *ServiceUdmAuthUser) Inserts(neID string, authUser model.UdmAuthUser, nu
return r.repoAuthUser.Inserts(neID, authUser, num)
}
// Insert UDM鉴权用户-批量添加
// InsertCSV UDM鉴权用户-批量添加
func (r *ServiceUdmAuthUser) InsertCSV(neID string, data []map[string]string) int64 {
var num int64
for _, v := range data {
@@ -74,6 +74,28 @@ func (r *ServiceUdmAuthUser) InsertCSV(neID string, data []map[string]string) in
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鉴权用户-修改更新
func (r *ServiceUdmAuthUser) Update(neID string, authUser model.UdmAuthUser) int64 {
return r.repoAuthUser.Update(neID, authUser)

View File

@@ -47,7 +47,7 @@ func (r *ServiceUdmSubUser) Inserts(neID string, subUser model.UdmSubUser, num s
return r.repoSunUser.Inserts(neID, subUser, num)
}
// Insert UDM签约用户-批量添加
// InsertCSV UDM签约用户-批量添加
func (r *ServiceUdmSubUser) InsertCSV(neID string, data []map[string]string) int64 {
var num int64
for _, v := range data {
@@ -91,6 +91,33 @@ func (r *ServiceUdmSubUser) InsertCSV(neID string, data []map[string]string) int
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用户
func (r *ServiceUdmSubUser) Insert4G(neID string, subUser model.UdmSubUser) int64 {
return r.repoSunUser.Insert4G(neID, subUser)