优化用户信息接口和新增neId字段

This commit is contained in:
TsMask
2023-09-08 17:36:22 +08:00
parent be001bf890
commit 05c3bfb768
8 changed files with 106 additions and 16 deletions

View File

@@ -1,11 +1,15 @@
package udmuser package udmuser
import ( import (
"fmt"
"net/http" "net/http"
"ems.agt/features/udm_user/service" "ems.agt/features/udm_user/service"
mmlclient "ems.agt/lib/core/mml_client"
"ems.agt/lib/core/utils/ctx" "ems.agt/lib/core/utils/ctx"
"ems.agt/lib/core/vo/result" "ems.agt/lib/core/vo/result"
"ems.agt/lib/dborm"
"ems.agt/lib/log"
"ems.agt/lib/services" "ems.agt/lib/services"
"ems.agt/restagent/config" "ems.agt/restagent/config"
) )
@@ -21,25 +25,37 @@ func Routers() []services.RouterItem {
rs := [...]services.RouterItem{ rs := [...]services.RouterItem{
{ {
Method: "GET", Method: "GET",
Pattern: "/authUserList", Pattern: "/auths",
Handler: apis.UdmAuthUserList, Handler: apis.UdmAuthUserList,
Middleware: nil, //midware.Authorize(nil), Middleware: nil, //midware.Authorize(nil),
}, },
{ {
Method: "POST", Method: "POST",
Pattern: "/authUserSave", Pattern: "/auth/getSave",
Handler: apis.UdmAuthUserSave, Handler: apis.UdmAuthUserSave,
Middleware: nil, //midware.Authorize(nil), Middleware: nil, //midware.Authorize(nil),
}, },
{ {
Method: "GET", 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, Handler: apis.UdmSubUserList,
Middleware: nil, //midware.Authorize(nil), Middleware: nil, //midware.Authorize(nil),
}, },
{ {
Method: "POST", Method: "POST",
Pattern: "/subUserSave", Pattern: "/sub/getSave",
Handler: apis.UdmSubUserSave, Handler: apis.UdmSubUserSave,
Middleware: nil, //midware.Authorize(nil), Middleware: nil, //midware.Authorize(nil),
}, },
@@ -60,6 +76,16 @@ func Routers() []services.RouterItem {
return rsPrefix 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 用户 // UDM 用户
// //
// PATH /udmUserManage // PATH /udmUserManage
@@ -70,7 +96,7 @@ type UdmUserApi struct {
// UDM鉴权用户 // UDM鉴权用户
// //
// GET /authUserList // GET /auths
func (s *UdmUserApi) UdmAuthUserList(w http.ResponseWriter, r *http.Request) { func (s *UdmUserApi) UdmAuthUserList(w http.ResponseWriter, r *http.Request) {
querys := ctx.QueryMap(r) querys := ctx.QueryMap(r)
data := s.authUser.AuthUserList(querys) data := s.authUser.AuthUserList(querys)
@@ -79,15 +105,51 @@ func (s *UdmUserApi) UdmAuthUserList(w http.ResponseWriter, r *http.Request) {
// UDM鉴权用户-获取全部保存数据库 // UDM鉴权用户-获取全部保存数据库
// //
// POST /authUserSave // POST /auth/getSave
func (s *UdmUserApi) UdmAuthUserSave(w http.ResponseWriter, r *http.Request) { 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)) ctx.JSON(w, 200, result.OkData(data))
} }
// UDM签约用户 // UDM签约用户
// //
// GET /subUserList // GET /subs
func (s *UdmUserApi) UdmSubUserList(w http.ResponseWriter, r *http.Request) { func (s *UdmUserApi) UdmSubUserList(w http.ResponseWriter, r *http.Request) {
querys := ctx.QueryMap(r) querys := ctx.QueryMap(r)
data := s.subUser.SubUserList(querys) data := s.subUser.SubUserList(querys)
@@ -96,8 +158,8 @@ func (s *UdmUserApi) UdmSubUserList(w http.ResponseWriter, r *http.Request) {
// UDM签约用户-获取全部保存数据库 // UDM签约用户-获取全部保存数据库
// //
// POST /subUserSave // POST /sub/getSave
func (s *UdmUserApi) UdmSubUserSave(w http.ResponseWriter, r *http.Request) { 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)) ctx.JSON(w, 200, result.OkData(data))
} }

View File

@@ -10,4 +10,5 @@ type UdmAuthUser struct {
Ki string `json:"ki" xorm:"ki"` // ki Ki string `json:"ki" xorm:"ki"` // ki
AlgoIndex string `json:"algoIndex" xorm:"algo_index"` // AlgoIndex string `json:"algoIndex" xorm:"algo_index"` //
Opc string `json:"opc" xorm:"opc"` Opc string `json:"opc" xorm:"opc"`
NeID string `json:"neId" xorm:"ne_id"` // UDM网元标识-子系统
} }

View File

@@ -13,4 +13,5 @@ type UdmSubUser struct {
CnType string `json:"cnType" xorm:"cn_type"` CnType string `json:"cnType" xorm:"cn_type"`
SubData string `json:"subData" xorm:"sub_data"` SubData string `json:"subData" xorm:"sub_data"`
Eps string `json:"eps" xorm:"eps"` Eps string `json:"eps" xorm:"eps"`
NeID string `json:"neId" xorm:"ne_id"` // UDM网元标识-子系统
} }

View File

@@ -12,7 +12,7 @@ import (
// 实例化数据层 RepoUdmAuthUser 结构体 // 实例化数据层 RepoUdmAuthUser 结构体
var NewRepoUdmAuthUser = &RepoUdmAuthUser{ var NewRepoUdmAuthUser = &RepoUdmAuthUser{
selectSql: `select 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`, from u_auth_user`,
resultMap: map[string]string{ resultMap: map[string]string{
@@ -24,6 +24,7 @@ var NewRepoUdmAuthUser = &RepoUdmAuthUser{
"ki": "Ki", "ki": "Ki",
"algo_index": "AlgoLndex", "algo_index": "AlgoLndex",
"opc": "Opc", "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(?, '%')") conditions = append(conditions, "msisdn like concat(?, '%')")
params = append(params, v) params = append(params, v)
} }
if v, ok := query["neId"]; ok && v != "" {
conditions = append(conditions, "ne_id = ?")
params = append(params, v)
}
// 构建查询条件语句 // 构建查询条件语句
whereSql := "" whereSql := ""

View File

@@ -12,7 +12,7 @@ import (
// 实例化数据层 RepoUdmSubUser 结构体 // 实例化数据层 RepoUdmSubUser 结构体
var NewRepoUdmSubUser = &RepoUdmSubUser{ var NewRepoUdmSubUser = &RepoUdmSubUser{
selectSql: `select 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`, from u_sub_user`,
resultMap: map[string]string{ resultMap: map[string]string{
@@ -27,6 +27,7 @@ var NewRepoUdmSubUser = &RepoUdmSubUser{
"cn_type": "CnType", "cn_type": "CnType",
"sub_data": "SubData", "sub_data": "SubData",
"eps": "Eps", "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(?, '%')") conditions = append(conditions, "imsi like concat(?, '%')")
params = append(params, v) params = append(params, v)
} }
if v, ok := query["neId"]; ok && v != "" {
conditions = append(conditions, "ne_id = ?")
params = append(params, v)
}
// 构建查询条件语句 // 构建查询条件语句
whereSql := "" whereSql := ""

View File

@@ -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
}

View File

@@ -17,7 +17,7 @@ type ServiceUdmAuthUser struct {
} }
// AuthUserSave UDM鉴权用户-获取全部保存数据库 // AuthUserSave UDM鉴权用户-获取全部保存数据库
func (r *ServiceUdmAuthUser) AuthUserSave() int64 { func (r *ServiceUdmAuthUser) AuthUserSave(neID string) int64 {
var num int64 = 0 var num int64 = 0
authArr := redisUdmAuthUserList() authArr := redisUdmAuthUserList()
// 有数据才清空 // 有数据才清空
@@ -25,7 +25,7 @@ func (r *ServiceUdmAuthUser) AuthUserSave() int64 {
return num 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 { if err != nil {
log.Errorf("TRUNCATE err => %v", err) log.Errorf("TRUNCATE err => %v", err)
} }

View File

@@ -19,7 +19,7 @@ type ServiceUdmSubUser struct {
} }
// SubUserSave UDM签约用户-获取全部保存数据库 // SubUserSave UDM签约用户-获取全部保存数据库
func (r *ServiceUdmSubUser) SubUserSave() int64 { func (r *ServiceUdmSubUser) SubUserSave(neID string) int64 {
var num int64 = 0 var num int64 = 0
subArr := redisUdmSubUserList() subArr := redisUdmSubUserList()
// 有数据才清空 // 有数据才清空
@@ -27,7 +27,8 @@ func (r *ServiceUdmSubUser) SubUserSave() int64 {
return num 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 { if err != nil {
log.Errorf("TRUNCATE err => %v", err) log.Errorf("TRUNCATE err => %v", err)
} }