From a7a4819a0f3c2d92d385d2800b268c64da158c71 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Tue, 12 Sep 2023 16:13:04 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20UDM=E7=94=A8=E6=88=B7=E8=8E=B7=E5=8F=96s?= =?UTF-8?q?ql=E6=9F=A5=E8=AF=A2=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- features/udm_user/api_udm_user.go | 16 ++++++++-------- features/udm_user/model/udm_sub_user.go | 2 +- features/udm_user/repo/repo_udm_auth_user.go | 8 ++++---- features/udm_user/repo/repo_udm_sub_user.go | 18 +++++++++--------- .../udm_user/service/service_redis_data.go | 2 ++ lib/core/file/ssh.go | 3 ++- 6 files changed, 26 insertions(+), 23 deletions(-) diff --git a/features/udm_user/api_udm_user.go b/features/udm_user/api_udm_user.go index a7e13481..4a70b0de 100644 --- a/features/udm_user/api_udm_user.go +++ b/features/udm_user/api_udm_user.go @@ -9,6 +9,7 @@ import ( "ems.agt/features/udm_user/model" "ems.agt/features/udm_user/service" + "ems.agt/lib/core/conf" "ems.agt/lib/core/file" mmlclient "ems.agt/lib/core/mml_client" "ems.agt/lib/core/utils/ctx" @@ -250,7 +251,6 @@ func (s *UdmUserApi) UdmAuthUserInfo(w http.ResponseWriter, r *http.Request) { list := s.authUser.List(model.UdmAuthUser{NeID: neId, Imsi: imsi}) if len(list) > 0 { userInfo = list[0] - ctx.JSON(w, 200, result.OkData(list[0])) } else { userInfo = model.UdmAuthUser{ Imsi: imsi, @@ -476,7 +476,7 @@ func (s *UdmUserApi) UdmAuthUserExport(w http.ResponseWriter, r *http.Request) { 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("/usr/local/omc/upload/mml/%s", fileName) + filePath := fmt.Sprintf("%s/upload/mml/%s", conf.Get("ne.omcdir"), fileName) // 转换数据 data := [][]string{} data = append(data, []string{"imsi", "ki", "amf", "algo", "opc", "status"}) @@ -510,8 +510,8 @@ func (s *UdmUserApi) UdmAuthUserImport(w http.ResponseWriter, r *http.Request) { // 文件名 fileName := fmt.Sprintf("OMC_AUTH_USER_IMPORT_%s_%d.csv", neId, time.Now().UnixMilli()) - filePath := fmt.Sprintf("/usr/local/omc/upload/mml/%s", fileName) - dstPath := "/home/agtuser/" + filePath := fmt.Sprintf("%s/upload/mml/%s", conf.Get("ne.omcdir"), fileName) + dstPath := conf.Get("mml.upload").(string) // 输出保存文件 err = ctx.SaveUploadedFile(r, filePath) if err != nil { @@ -596,7 +596,6 @@ func (s *UdmUserApi) UdmSubUserInfo(w http.ResponseWriter, r *http.Request) { list := s.subUser.List(model.UdmSubUser{NeID: neId, Imsi: imsi}) if len(list) > 0 { userInfo = list[0] - ctx.JSON(w, 200, result.OkData(list[0])) } else { cnType, _ := strconv.ParseInt(data["CNType"][:4], 0, 64) rat, _ := strconv.ParseInt(data["RAT"][:4], 0, 64) @@ -614,6 +613,7 @@ func (s *UdmUserApi) UdmSubUserInfo(w http.ResponseWriter, r *http.Request) { } // 1,64,24,65,def_eps,1,2,010200000000,- if v, ok := data["EPS-Data"]; ok { + userInfo.EpsDat = v arr := strings.Split(v, ",") userInfo.EpsFlag = arr[0] userInfo.EpsOdb = arr[1] @@ -980,7 +980,7 @@ func (s *UdmUserApi) UdmSubUserExport(w http.ResponseWriter, r *http.Request) { 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("/usr/local/omc/upload/mml/%s", fileName) + 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"}) @@ -1014,8 +1014,8 @@ func (s *UdmUserApi) UdmSubUserImport(w http.ResponseWriter, r *http.Request) { // 文件名 fileName := fmt.Sprintf("OMC_SUB_USER_IMPORT_%s_%d.csv", neId, time.Now().UnixMilli()) - filePath := fmt.Sprintf("/usr/local/omc/upload/mml/%s", fileName) - dstPath := "/home/agtuser/" + filePath := fmt.Sprintf("%s/upload/mml/%s", conf.Get("ne.omcdir"), fileName) + dstPath := conf.Get("mml.upload").(string) // 输出保存文件 err = ctx.SaveUploadedFile(r, filePath) if err != nil { diff --git a/features/udm_user/model/udm_sub_user.go b/features/udm_user/model/udm_sub_user.go index 84078ce3..466fce1c 100644 --- a/features/udm_user/model/udm_sub_user.go +++ b/features/udm_user/model/udm_sub_user.go @@ -25,5 +25,5 @@ type UdmSubUser struct { ApnContext string `json:"apnContext" xorm:"apn_context"` StaticIp string `json:"staticIp" xorm:"static_ip"` - SubNum string `json:"subNum" xorm:"-"` // 批量数 + SubNum string `json:"subNum,omitempty" xorm:"-"` // 批量数 } diff --git a/features/udm_user/repo/repo_udm_auth_user.go b/features/udm_user/repo/repo_udm_auth_user.go index c9e6e799..7026dbae 100644 --- a/features/udm_user/repo/repo_udm_auth_user.go +++ b/features/udm_user/repo/repo_udm_auth_user.go @@ -118,7 +118,7 @@ func (r *RepoUdmAuthUser) SelectList(auth model.UdmAuthUser) []model.UdmAuthUser var conditions []string var params []any if auth.Imsi != "" { - conditions = append(conditions, "msisdn like concat(?, '%')") + conditions = append(conditions, "imsi = ?") params = append(params, auth.Imsi) } if auth.NeID != "" { @@ -207,8 +207,8 @@ func (r *RepoUdmAuthUser) Inserts(neID string, authUser model.UdmAuthUser, num s func (r *RepoUdmAuthUser) Update(neID string, authUser model.UdmAuthUser) int64 { // 查询先 var user model.UdmAuthUser - err := datasource.DefaultDB().Table("u_auth_user").Where("imsi = ? and ne_id = ?", authUser.Imsi, neID).Find(&user) - if err != nil { + has, err := datasource.DefaultDB().Table("u_auth_user").Where("imsi = ? and ne_id = ?", authUser.Imsi, neID).Get(&user) + if !has || err != nil { return 0 } @@ -225,7 +225,7 @@ func (r *RepoUdmAuthUser) Update(neID string, authUser model.UdmAuthUser) int64 user.Opc = authUser.Opc } - results, err := datasource.DefaultDB().Table("u_auth_user").Update(user) + results, err := datasource.DefaultDB().Table("u_auth_user").Where("imsi = ? and ne_id = ?", user.Imsi, user.NeID).Update(user) if err != nil { return 0 } diff --git a/features/udm_user/repo/repo_udm_sub_user.go b/features/udm_user/repo/repo_udm_sub_user.go index abfce460..3e72953a 100644 --- a/features/udm_user/repo/repo_udm_sub_user.go +++ b/features/udm_user/repo/repo_udm_sub_user.go @@ -22,7 +22,7 @@ var NewRepoUdmSubUser = &RepoUdmSubUser{ "msisdn": "Msisdn", "imsi": "Imsi", "ambr": "Ambr", - "nssai": "Assai", + "nssai": "Nssai", "rat": "Rat", "arfb": "Arfb", "sar": "Sar", @@ -130,7 +130,7 @@ func (r *RepoUdmSubUser) SelectList(auth model.UdmSubUser) []model.UdmSubUser { var conditions []string var params []any if auth.Imsi != "" { - conditions = append(conditions, "msisdn like concat(?, '%')") + conditions = append(conditions, "imsi = ?") params = append(params, auth.Imsi) } if auth.NeID != "" { @@ -257,8 +257,8 @@ func (r *RepoUdmSubUser) Insert4G(neID string, subUser model.UdmSubUser) int64 { func (r *RepoUdmSubUser) Update(neID string, authUser model.UdmSubUser) int64 { // 查询先 var user model.UdmSubUser - err := datasource.DefaultDB().Table("u_sub_user").Where("imsi = ? and ne_id = ?", authUser.Imsi, neID).Find(&user) - if err != nil { + has, err := datasource.DefaultDB().Table("u_sub_user").Where("imsi = ? and ne_id = ?", authUser.Imsi, neID).Get(&user) + if !has || err != nil { return 0 } @@ -290,7 +290,7 @@ func (r *RepoUdmSubUser) Update(neID string, authUser model.UdmSubUser) int64 { user.EpsDat = authUser.EpsDat } - results, err := datasource.DefaultDB().Table("u_sub_user").Update(user) + results, err := datasource.DefaultDB().Table("u_sub_user").Where("imsi = ? and ne_id = ?", user.Imsi, user.NeID).Update(user) if err != nil { return 0 } @@ -315,8 +315,8 @@ func (r *RepoUdmSubUser) Update4GIP(neID string, subUser model.UdmSubUser) int64 // 查询先 var user model.UdmSubUser - err := datasource.DefaultDB().Table("u_sub_user").Where("imsi = ? and ne_id = ?", subUser.Imsi, neID).Find(&user) - if err == nil { + has, err := datasource.DefaultDB().Table("u_sub_user").Where("imsi = ? and ne_id = ?", subUser.Imsi, neID).Get(&user) + if has && err == nil { // IP会自动递增 parts := strings.Split(subUser.StaticIp, ".") lastPart := parts[3] @@ -354,8 +354,8 @@ func (r *RepoUdmSubUser) UpdateSmData(neID string, subUser model.UdmSubUser) int // 查询先 var user model.UdmSubUser - err := datasource.DefaultDB().Table("u_sub_user").Where("imsi = ? and ne_id = ?", subUser.Imsi, neID).Find(&user) - if err == nil { + has, err := datasource.DefaultDB().Table("u_sub_user").Where("imsi = ? and ne_id = ?", subUser.Imsi, neID).Get(&user) + if has && err == nil { // IP会自动递增,需提前规划好DNN对应的IP;如dnn不需要绑定IP则不带此字段名 // parts := strings.Split(subUser.SmData, "&") user.SmData = subUser.SmData diff --git a/features/udm_user/service/service_redis_data.go b/features/udm_user/service/service_redis_data.go index b0839842..8ccc8437 100644 --- a/features/udm_user/service/service_redis_data.go +++ b/features/udm_user/service/service_redis_data.go @@ -56,6 +56,7 @@ func redisUdmSubUserList() []model.UdmSubUser { a := model.UdmSubUser{ Imsi: imsi, Msisdn: m["gpsi"], + SmfSel: m["smf-sel"], SmData: m["sm-dat"], // 1-000001&cmnet&ims&3gnet } @@ -75,6 +76,7 @@ func redisUdmSubUserList() []model.UdmSubUser { } // 1,64,24,65,def_eps,1,2,010200000000,- if v, ok := m["eps-dat"]; ok { + a.EpsDat = v arr := strings.Split(v, ",") a.EpsFlag = arr[0] a.EpsOdb = arr[1] diff --git a/lib/core/file/ssh.go b/lib/core/file/ssh.go index d5d11e80..07e4d7c2 100644 --- a/lib/core/file/ssh.go +++ b/lib/core/file/ssh.go @@ -5,6 +5,7 @@ import ( "os/exec" "ems.agt/lib/core/conf" + "ems.agt/lib/log" ) // 网元NE 文件复制到远程文件夹 @@ -17,6 +18,6 @@ func FileNeSCP(neIp, filePath, dstPath string) error { if err != nil { return err } - fmt.Println(out) + log.Infof("FileNeSCP %s", string(out)) return nil }