fix: UDM数据来源通过网元主机的Redis客户端进行连接

This commit is contained in:
TsMask
2024-10-16 16:41:57 +08:00
parent 717ee894bd
commit 87836c7adc
7 changed files with 83 additions and 35 deletions

View File

@@ -46,7 +46,6 @@ func (s *UDMAuthController) ResetData(c *gin.Context) {
return
}
neId = ""
data := s.udmAuthService.ResetData(neId)
c.JSON(200, result.OkData(data))
}
@@ -56,7 +55,6 @@ func (s *UDMAuthController) ResetData(c *gin.Context) {
// GET /list
func (s *UDMAuthController) List(c *gin.Context) {
querys := ctx.QueryMap(c)
querys["neId"] = ""
data := s.udmAuthService.SelectPage(querys)
c.JSON(200, result.Ok(data))
}
@@ -100,7 +98,6 @@ func (s *UDMAuthController) Info(c *gin.Context) {
return
}
neId = ""
// 解析返回的数据
u := s.udmAuthService.ParseInfo(imsi, neId, data)
s.udmAuthService.Insert(neId, u)
@@ -150,7 +147,6 @@ func (s *UDMAuthController) Add(c *gin.Context) {
// 命令ok时
if strings.Contains(data, "ok") {
neId = ""
s.udmAuthService.Insert(neId, body)
}
c.JSON(200, result.OkData(data))
@@ -200,8 +196,7 @@ func (s *UDMAuthController) Adds(c *gin.Context) {
// 命令ok时
if strings.Contains(data, "ok") {
neId = ""
go s.udmAuthService.LoadData(neId, body.IMSI, num)
s.udmAuthService.LoadData(neId, body.IMSI, num)
}
c.JSON(200, result.OkData(data))
}
@@ -249,7 +244,6 @@ func (s *UDMAuthController) Edit(c *gin.Context) {
// 命令ok时
if strings.Contains(data, "ok") {
neId = ""
s.udmAuthService.Insert(neId, body)
}
c.JSON(200, result.OkData(data))
@@ -300,7 +294,6 @@ func (s *UDMAuthController) Remove(c *gin.Context) {
}
// 命令ok时
if strings.Contains(data, "ok") {
neId = ""
s.udmAuthService.Delete(imsi, neId)
}
resultData[imsi] = data
@@ -346,8 +339,7 @@ func (s *UDMAuthController) Removes(c *gin.Context) {
// 命令ok时
if strings.Contains(data, "ok") {
neId = ""
go s.udmAuthService.LoadData(neId, imsi, num)
s.udmAuthService.LoadData(neId, imsi, num)
}
c.JSON(200, result.OkData(data))
}

View File

@@ -45,7 +45,6 @@ func (s *UDMSubController) ResetData(c *gin.Context) {
return
}
neId = ""
data := s.udmSubService.ResetData(neId)
c.JSON(200, result.OkData(data))
}
@@ -55,7 +54,6 @@ func (s *UDMSubController) ResetData(c *gin.Context) {
// GET /list
func (s *UDMSubController) List(c *gin.Context) {
querys := ctx.QueryMap(c)
querys["neId"] = ""
data := s.udmSubService.SelectPage(querys)
c.JSON(200, result.Ok(data))
}
@@ -99,7 +97,6 @@ func (s *UDMSubController) Info(c *gin.Context) {
return
}
neId = ""
// 解析返回的数据
u := s.udmSubService.ParseInfo(imsi, neId, data)
s.udmSubService.Insert(neId, u)
@@ -149,7 +146,6 @@ func (s *UDMSubController) Add(c *gin.Context) {
// 命令ok时
if strings.Contains(data, "ok") {
neId = ""
body.NeId = neId
s.udmSubService.Insert(neId, body)
}
@@ -204,8 +200,7 @@ func (s *UDMSubController) Adds(c *gin.Context) {
// 命令ok时
if strings.Contains(data, "ok") {
neId = ""
go s.udmSubService.LoadData(neId, body.IMSI, num, body.Remark)
s.udmSubService.LoadData(neId, body.IMSI, num, body.Remark)
}
c.JSON(200, result.OkData(data))
}
@@ -253,7 +248,6 @@ func (s *UDMSubController) Edit(c *gin.Context) {
// 命令ok时
if strings.Contains(data, "ok") {
neId = ""
body.NeId = neId
s.udmSubService.Insert(neId, body)
}
@@ -305,7 +299,6 @@ func (s *UDMSubController) Remove(c *gin.Context) {
}
// 命令ok时
if strings.Contains(data, "ok") {
neId = ""
s.udmSubService.Delete(neId, imsi)
}
resultData[imsi] = data
@@ -351,9 +344,7 @@ func (s *UDMSubController) Removes(c *gin.Context) {
// 命令ok时
if strings.Contains(data, "ok") {
neId = ""
go s.udmSubService.LoadData(neId, imsi, num, "-(Deleted)-")
s.udmSubService.LoadData(neId, imsi, num, "-(Deleted)-")
}
c.JSON(200, result.OkData(data))
}

View File

@@ -53,7 +53,8 @@ func (r *UDMAuthUser) convertResultRows(rows []map[string]any) []model.UDMAuthUs
// ClearAndInsert 清空ne_id后新增实体
func (r *UDMAuthUser) ClearAndInsert(neId string, uArr []model.UDMAuthUser) int64 {
// 不指定neID时用 TRUNCATE 清空表快
_, err := datasource.ExecDB("", "TRUNCATE TABLE u_auth_user", nil)
// _, 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 {
logger.Errorf("TRUNCATE err => %v", err)
}

View File

@@ -82,9 +82,10 @@ func (r *UDMSubUser) convertResultRows(rows []map[string]any) []model.UDMSubUser
}
// ClearAndInsert 清空ne_id后新增实体
func (r *UDMSubUser) ClearAndInsert(neID string, u []model.UDMSubUser) int64 {
func (r *UDMSubUser) ClearAndInsert(neId string, u []model.UDMSubUser) int64 {
// 不指定neID时用 TRUNCATE 清空表快
_, 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 {
logger.Errorf("TRUNCATE err => %v", err)
}

View File

@@ -8,6 +8,7 @@ import (
"be.ems/src/framework/redis"
"be.ems/src/modules/network_data/model"
"be.ems/src/modules/network_data/repository"
neService "be.ems/src/modules/network_element/service"
)
// 实例化服务层 UDMAuthUser 结构体
@@ -25,12 +26,25 @@ type UDMAuthUser struct {
func (r *UDMAuthUser) dataByRedis(imsi, neId string) []model.UDMAuthUser {
arr := []model.UDMAuthUser{}
key := fmt.Sprintf("ausf:%s", imsi)
ausfArr, err := redis.GetKeys("udmuser", key)
source := fmt.Sprintf("UDM_%s", neId)
// 网元主机的Redis客户端
redisClient, err := neService.NewNeInfo.NeRunRedisClient("UDM", neId)
if err != nil {
return arr
}
defer func() {
redisClient.Close()
redis.ConnectPush(source, nil)
}()
redis.ConnectPush(source, redisClient.Client)
ausfArr, err := redis.GetKeys(source, key)
if err != nil {
return arr
}
for _, key := range ausfArr {
m, err := redis.GetHash("udmuser", key)
m, err := redis.GetHash(source, key)
if err != nil {
continue
}

View File

@@ -8,6 +8,7 @@ import (
"be.ems/src/framework/redis"
"be.ems/src/modules/network_data/model"
"be.ems/src/modules/network_data/repository"
neService "be.ems/src/modules/network_element/service"
)
// 实例化服务层 UDMSubUser 结构体
@@ -18,22 +19,33 @@ var NewUDMSub = &UDMSubUser{
// UDM签约信息 服务层处理
type UDMSubUser struct {
// UDM签约信息数据信息
udmSubRepository *repository.UDMSubUser
// UDM用户IMSI信息数据信息
udmUserInfoRepository *repository.UDMUserInfo
udmSubRepository *repository.UDMSubUser // UDM签约信息数据信息
udmUserInfoRepository *repository.UDMUserInfo // UDM用户IMSI信息数据信息
}
// dataByRedis UDM签约用户 db:0 中 udm-sd:*
func (r *UDMSubUser) dataByRedis(imsi, neId string) []model.UDMSubUser {
arr := []model.UDMSubUser{}
key := fmt.Sprintf("udm-sd:%s", imsi)
udmsdArr, err := redis.GetKeys("udmuser", key)
source := fmt.Sprintf("UDM_%s", neId)
// 网元主机的Redis客户端
redisClient, err := neService.NewNeInfo.NeRunRedisClient("UDM", neId)
if err != nil {
return arr
}
defer func() {
redisClient.Close()
redis.ConnectPush(source, nil)
}()
redis.ConnectPush(source, redisClient.Client)
udmsdArr, err := redis.GetKeys(source, key)
if err != nil {
return arr
}
for _, key := range udmsdArr {
m, err := redis.GetHash("udmuser", key)
m, err := redis.GetHash(source, key)
if err != nil {
continue
}