diff --git a/features/udm_user/api_udm_user.go b/features/udm_user/api_udm_user.go index 7f113f98..2c984b4d 100644 --- a/features/udm_user/api_udm_user.go +++ b/features/udm_user/api_udm_user.go @@ -1,11 +1,15 @@ package udmuser import ( + "fmt" "net/http" "ems.agt/features/udm_user/service" + mmlclient "ems.agt/lib/core/mml_client" "ems.agt/lib/core/utils/ctx" "ems.agt/lib/core/vo/result" + "ems.agt/lib/dborm" + "ems.agt/lib/log" "ems.agt/lib/services" "ems.agt/restagent/config" ) @@ -21,25 +25,37 @@ func Routers() []services.RouterItem { rs := [...]services.RouterItem{ { Method: "GET", - Pattern: "/authUserList", + Pattern: "/auths", Handler: apis.UdmAuthUserList, Middleware: nil, //midware.Authorize(nil), }, { Method: "POST", - Pattern: "/authUserSave", + Pattern: "/auth/getSave", Handler: apis.UdmAuthUserSave, Middleware: nil, //midware.Authorize(nil), }, { Method: "GET", - Pattern: "/subUserList", + Pattern: "/auth/{neId}/{imsi}", + Handler: apis.UdmAuthUserInfo, + Middleware: nil, //midware.Authorize(nil), + }, + { + Method: "POST", + Pattern: "/auth", + Handler: apis.UdmAuthUserAdd, + Middleware: nil, //midware.Authorize(nil), + }, + { + Method: "GET", + Pattern: "/subs", Handler: apis.UdmSubUserList, Middleware: nil, //midware.Authorize(nil), }, { Method: "POST", - Pattern: "/subUserSave", + Pattern: "/sub/getSave", Handler: apis.UdmSubUserSave, Middleware: nil, //midware.Authorize(nil), }, @@ -60,6 +76,16 @@ func Routers() []services.RouterItem { return rsPrefix } +// NeInfoByUDM 网元信息 +func NeInfoByUDM(neId string) (*dborm.NeInfo, error) { + neInfo, err := dborm.XormGetNeInfo("UDM", neId) + if err != nil { + log.Error("dborm.XormGetNeInfo is failed:", err) + return nil, err + } + return neInfo, nil +} + // UDM 用户 // // PATH /udmUserManage @@ -70,7 +96,7 @@ type UdmUserApi struct { // UDM鉴权用户 // -// GET /authUserList +// GET /auths func (s *UdmUserApi) UdmAuthUserList(w http.ResponseWriter, r *http.Request) { querys := ctx.QueryMap(r) data := s.authUser.AuthUserList(querys) @@ -79,15 +105,51 @@ func (s *UdmUserApi) UdmAuthUserList(w http.ResponseWriter, r *http.Request) { // UDM鉴权用户-获取全部保存数据库 // -// POST /authUserSave +// POST /auth/getSave func (s *UdmUserApi) UdmAuthUserSave(w http.ResponseWriter, r *http.Request) { - data := s.authUser.AuthUserSave() + data := s.authUser.AuthUserSave("") + ctx.JSON(w, 200, result.OkData(data)) +} + +// UDM鉴权用户-信息 +// +// GET /{neId}/{imsi} +func (s *UdmUserApi) UdmAuthUserInfo(w http.ResponseWriter, r *http.Request) { + neId := ctx.Param(r, "neId") + imsi := ctx.Param(r, "imsi") + if neId == "" || imsi == "" { + ctx.JSON(w, 400, result.CodeMsg(400, "参数错误")) + return + } + + neInfo, err := NeInfoByUDM(neId) + if err != nil { + ctx.JSON(w, 200, result.ErrMsg(err.Error())) + return + } + + msg := fmt.Sprintf("dsp authdat:imsi=%s", imsi) + + // 发送MML + data, err := mmlclient.MMLSendMsgToMap(neInfo.Ip, msg) + if err != nil { + ctx.JSON(w, 200, result.ErrMsg(err.Error())) + return + } + ctx.JSON(w, 200, result.OkData(data)) +} + +// UDM鉴权用户-新增 +// +// POST /auth +func (s *UdmUserApi) UdmAuthUserAdd(w http.ResponseWriter, r *http.Request) { + data := s.authUser.AuthUserSave("") ctx.JSON(w, 200, result.OkData(data)) } // UDM签约用户 // -// GET /subUserList +// GET /subs func (s *UdmUserApi) UdmSubUserList(w http.ResponseWriter, r *http.Request) { querys := ctx.QueryMap(r) data := s.subUser.SubUserList(querys) @@ -96,8 +158,8 @@ func (s *UdmUserApi) UdmSubUserList(w http.ResponseWriter, r *http.Request) { // UDM签约用户-获取全部保存数据库 // -// POST /subUserSave +// POST /sub/getSave func (s *UdmUserApi) UdmSubUserSave(w http.ResponseWriter, r *http.Request) { - data := s.subUser.SubUserSave() + data := s.subUser.SubUserSave("") ctx.JSON(w, 200, result.OkData(data)) } diff --git a/features/udm_user/model/udm_auth_user.go b/features/udm_user/model/udm_auth_user.go index 2a371421..4e72f20d 100644 --- a/features/udm_user/model/udm_auth_user.go +++ b/features/udm_user/model/udm_auth_user.go @@ -10,4 +10,5 @@ type UdmAuthUser struct { Ki string `json:"ki" xorm:"ki"` // ki AlgoIndex string `json:"algoIndex" xorm:"algo_index"` // Opc string `json:"opc" xorm:"opc"` + NeID string `json:"neId" xorm:"ne_id"` // UDM网元标识-子系统 } diff --git a/features/udm_user/model/udm_sub_user.go b/features/udm_user/model/udm_sub_user.go index 81371ee6..c43c96de 100644 --- a/features/udm_user/model/udm_sub_user.go +++ b/features/udm_user/model/udm_sub_user.go @@ -13,4 +13,5 @@ type UdmSubUser struct { CnType string `json:"cnType" xorm:"cn_type"` SubData string `json:"subData" xorm:"sub_data"` Eps string `json:"eps" xorm:"eps"` + NeID string `json:"neId" xorm:"ne_id"` // UDM网元标识-子系统 } diff --git a/features/udm_user/repo/repo_udm_auth_user.go b/features/udm_user/repo/repo_udm_auth_user.go index abc24344..ad1280af 100644 --- a/features/udm_user/repo/repo_udm_auth_user.go +++ b/features/udm_user/repo/repo_udm_auth_user.go @@ -12,7 +12,7 @@ import ( // 实例化数据层 RepoUdmAuthUser 结构体 var NewRepoUdmAuthUser = &RepoUdmAuthUser{ selectSql: `select - id, msisdn, imsi, amf, status, ki, algo_index, opc + id, msisdn, imsi, amf, status, ki, algo_index, opc, ne_id from u_auth_user`, resultMap: map[string]string{ @@ -24,6 +24,7 @@ var NewRepoUdmAuthUser = &RepoUdmAuthUser{ "ki": "Ki", "algo_index": "AlgoLndex", "opc": "Opc", + "ne_id": "NeID", }, } @@ -59,6 +60,10 @@ func (r *RepoUdmAuthUser) SelectPage(query map[string]any) map[string]any { conditions = append(conditions, "msisdn like concat(?, '%')") params = append(params, v) } + if v, ok := query["neId"]; ok && v != "" { + conditions = append(conditions, "ne_id = ?") + params = append(params, v) + } // 构建查询条件语句 whereSql := "" diff --git a/features/udm_user/repo/repo_udm_sub_user.go b/features/udm_user/repo/repo_udm_sub_user.go index f8db0995..aa7d4d66 100644 --- a/features/udm_user/repo/repo_udm_sub_user.go +++ b/features/udm_user/repo/repo_udm_sub_user.go @@ -12,7 +12,7 @@ import ( // 实例化数据层 RepoUdmSubUser 结构体 var NewRepoUdmSubUser = &RepoUdmSubUser{ selectSql: `select - id, msisdn, imsi, sub_ue_ambr_temp, sub_snssai_temp, rai, forbidden_areas_temp, service_area_restrict_temp, cn_type, sub_data, eps + id, msisdn, imsi, sub_ue_ambr_temp, sub_snssai_temp, rai, forbidden_areas_temp, service_area_restrict_temp, cn_type, sub_data, eps, ne_id from u_sub_user`, resultMap: map[string]string{ @@ -27,6 +27,7 @@ var NewRepoUdmSubUser = &RepoUdmSubUser{ "cn_type": "CnType", "sub_data": "SubData", "eps": "Eps", + "ne_id": "NeID", }, } @@ -66,6 +67,10 @@ func (r *RepoUdmSubUser) SelectPage(query map[string]any) map[string]any { conditions = append(conditions, "imsi like concat(?, '%')") params = append(params, v) } + if v, ok := query["neId"]; ok && v != "" { + conditions = append(conditions, "ne_id = ?") + params = append(params, v) + } // 构建查询条件语句 whereSql := "" diff --git a/features/udm_user/service/service_ne_ifno.go b/features/udm_user/service/service_ne_ifno.go new file mode 100644 index 00000000..0299fb6f --- /dev/null +++ b/features/udm_user/service/service_ne_ifno.go @@ -0,0 +1,15 @@ +package service + +import ( + "ems.agt/lib/dborm" + "ems.agt/lib/log" +) + +func UDMNeInfo(neId string) (*dborm.NeInfo, error) { + neInfo, err := dborm.XormGetNeInfo("UDM", neId) + if err != nil { + log.Error("dborm.XormGetNeInfo is failed:", err) + return nil, err + } + return neInfo, nil +} diff --git a/features/udm_user/service/service_udm_auth_user.go b/features/udm_user/service/service_udm_auth_user.go index 26968465..6625f110 100644 --- a/features/udm_user/service/service_udm_auth_user.go +++ b/features/udm_user/service/service_udm_auth_user.go @@ -17,7 +17,7 @@ type ServiceUdmAuthUser struct { } // AuthUserSave UDM鉴权用户-获取全部保存数据库 -func (r *ServiceUdmAuthUser) AuthUserSave() int64 { +func (r *ServiceUdmAuthUser) AuthUserSave(neID string) int64 { var num int64 = 0 authArr := redisUdmAuthUserList() // 有数据才清空 @@ -25,7 +25,7 @@ func (r *ServiceUdmAuthUser) AuthUserSave() int64 { return num } - _, err := datasource.ExecDB("", "TRUNCATE TABLE u_auth_user", nil) + _, err := datasource.ExecDB("", "DELETE FROM u_auth_user WHERE ne_id = ?", []any{neID}) if err != nil { log.Errorf("TRUNCATE err => %v", err) } diff --git a/features/udm_user/service/service_udm_sub_user.go b/features/udm_user/service/service_udm_sub_user.go index 660a3d44..c0904c0d 100644 --- a/features/udm_user/service/service_udm_sub_user.go +++ b/features/udm_user/service/service_udm_sub_user.go @@ -19,7 +19,7 @@ type ServiceUdmSubUser struct { } // SubUserSave UDM签约用户-获取全部保存数据库 -func (r *ServiceUdmSubUser) SubUserSave() int64 { +func (r *ServiceUdmSubUser) SubUserSave(neID string) int64 { var num int64 = 0 subArr := redisUdmSubUserList() // 有数据才清空 @@ -27,7 +27,8 @@ func (r *ServiceUdmSubUser) SubUserSave() int64 { return num } - _, err := datasource.ExecDB("", "TRUNCATE TABLE u_sub_user", nil) + // _, err := datasource.ExecDB("", "TRUNCATE TABLE u_sub_user", nil) + _, err := datasource.ExecDB("", "DELETE FROM u_sub_user WHERE ne_id = ?", []any{neID}) if err != nil { log.Errorf("TRUNCATE err => %v", err) }