fix: UDM鉴权用户去除Msisdn字段
This commit is contained in:
@@ -3,7 +3,6 @@ package model
|
|||||||
// UdmAuthUser UDM鉴权用户
|
// UdmAuthUser UDM鉴权用户
|
||||||
type UdmAuthUser struct {
|
type UdmAuthUser struct {
|
||||||
ID string `json:"id" xorm:"pk 'id' autoincr"`
|
ID string `json:"id" xorm:"pk 'id' autoincr"`
|
||||||
Msisdn string `json:"msisdn" xorm:"msisdn"` // 相当手机号
|
|
||||||
Imsi string `json:"imsi" xorm:"imsi"` // SIM卡号
|
Imsi string `json:"imsi" xorm:"imsi"` // SIM卡号
|
||||||
Amf string `json:"amf" xorm:"amf"` // ANF
|
Amf string `json:"amf" xorm:"amf"` // ANF
|
||||||
Status string `json:"status" xorm:"status"` // 状态
|
Status string `json:"status" xorm:"status"` // 状态
|
||||||
|
|||||||
@@ -14,12 +14,11 @@ import (
|
|||||||
// 实例化数据层 RepoUdmAuthUser 结构体
|
// 实例化数据层 RepoUdmAuthUser 结构体
|
||||||
var NewRepoUdmAuthUser = &RepoUdmAuthUser{
|
var NewRepoUdmAuthUser = &RepoUdmAuthUser{
|
||||||
selectSql: `select
|
selectSql: `select
|
||||||
id, msisdn, imsi, amf, status, ki, algo_index, opc, ne_id
|
id, 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{
|
||||||
"id": "ID",
|
"id": "ID",
|
||||||
"msisdn": "Msisdn",
|
|
||||||
"imsi": "Imsi",
|
"imsi": "Imsi",
|
||||||
"amf": "Amf",
|
"amf": "Amf",
|
||||||
"status": "Status",
|
"status": "Status",
|
||||||
@@ -58,10 +57,6 @@ func (r *RepoUdmAuthUser) SelectPage(query map[string]any) map[string]any {
|
|||||||
// 查询条件拼接
|
// 查询条件拼接
|
||||||
var conditions []string
|
var conditions []string
|
||||||
var params []any
|
var params []any
|
||||||
if v, ok := query["msisdn"]; ok && v != "" {
|
|
||||||
conditions = append(conditions, "msisdn like concat(concat('%', ?), '%')")
|
|
||||||
params = append(params, v)
|
|
||||||
}
|
|
||||||
if v, ok := query["imsi"]; ok && v != "" {
|
if v, ok := query["imsi"]; ok && v != "" {
|
||||||
conditions = append(conditions, "imsi like concat(concat('%', ?), '%')")
|
conditions = append(conditions, "imsi like concat(concat('%', ?), '%')")
|
||||||
params = append(params, v)
|
params = append(params, v)
|
||||||
@@ -77,18 +72,23 @@ func (r *RepoUdmAuthUser) SelectPage(query map[string]any) map[string]any {
|
|||||||
whereSql += " where " + strings.Join(conditions, " and ")
|
whereSql += " where " + strings.Join(conditions, " and ")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
result := map[string]any{
|
||||||
|
"total": 0,
|
||||||
|
"rows": []model.UdmAuthUser{},
|
||||||
|
}
|
||||||
|
|
||||||
// 查询数量 长度为0直接返回
|
// 查询数量 长度为0直接返回
|
||||||
totalSql := "select count(1) as 'total' from u_auth_user"
|
totalSql := "select count(1) as 'total' from u_auth_user"
|
||||||
totalRows, err := datasource.RawDB("", totalSql+whereSql, params)
|
totalRows, err := datasource.RawDB("", totalSql+whereSql, params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorf("total err => %v", err)
|
log.Errorf("total err => %v", err)
|
||||||
|
return result
|
||||||
}
|
}
|
||||||
total := parse.Number(totalRows[0]["total"])
|
total := parse.Number(totalRows[0]["total"])
|
||||||
if total == 0 {
|
if total == 0 {
|
||||||
return map[string]any{
|
return result
|
||||||
"total": total,
|
} else {
|
||||||
"rows": nil,
|
result["total"] = total
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 分页
|
// 分页
|
||||||
@@ -120,11 +120,8 @@ func (r *RepoUdmAuthUser) SelectPage(query map[string]any) map[string]any {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 转换实体
|
// 转换实体
|
||||||
rows := r.convertResultRows(results)
|
result["rows"] = r.convertResultRows(results)
|
||||||
return map[string]any{
|
return result
|
||||||
"total": total,
|
|
||||||
"rows": rows,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// SelectList 根据实体查询
|
// SelectList 根据实体查询
|
||||||
|
|||||||
@@ -89,22 +89,23 @@ func (r *RepoUdmSubUser) SelectPage(query map[string]any) map[string]any {
|
|||||||
whereSql += " where " + strings.Join(conditions, " and ")
|
whereSql += " where " + strings.Join(conditions, " and ")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
result := map[string]any{
|
||||||
|
"total": 0,
|
||||||
|
"rows": []model.UdmAuthUser{},
|
||||||
|
}
|
||||||
|
|
||||||
// 查询数量 长度为0直接返回
|
// 查询数量 长度为0直接返回
|
||||||
totalSql := "select count(1) as 'total' from u_sub_user"
|
totalSql := "select count(1) as 'total' from u_sub_user"
|
||||||
totalRows, err := datasource.RawDB("", totalSql+whereSql, params)
|
totalRows, err := datasource.RawDB("", totalSql+whereSql, params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorf("total err => %v", err)
|
log.Errorf("total err => %v", err)
|
||||||
return map[string]any{
|
return result
|
||||||
"total": 0,
|
|
||||||
"rows": nil,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
total := parse.Number(totalRows[0]["total"])
|
total := parse.Number(totalRows[0]["total"])
|
||||||
if total == 0 {
|
if total == 0 {
|
||||||
return map[string]any{
|
return result
|
||||||
"total": total,
|
} else {
|
||||||
"rows": nil,
|
result["total"] = total
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 分页
|
// 分页
|
||||||
@@ -133,14 +134,12 @@ func (r *RepoUdmSubUser) SelectPage(query map[string]any) map[string]any {
|
|||||||
results, err := datasource.RawDB("", querySql, params)
|
results, err := datasource.RawDB("", querySql, params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorf("query err => %v", err)
|
log.Errorf("query err => %v", err)
|
||||||
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
// 转换实体
|
// 转换实体
|
||||||
rows := r.convertResultRows(results)
|
result["rows"] = r.convertResultRows(results)
|
||||||
return map[string]any{
|
return result
|
||||||
"total": total,
|
|
||||||
"rows": rows,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// SelectList 根据实体查询
|
// SelectList 根据实体查询
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package service
|
package service
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"ems.agt/features/udm_user/model"
|
"ems.agt/features/udm_user/model"
|
||||||
@@ -9,28 +8,30 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// phoneImsiList 获取所有imsi
|
// phoneImsiList 获取所有imsi
|
||||||
func phoneImsiList() map[string]string {
|
// func phoneImsiList() map[string]string {
|
||||||
phoneAndImsiArr := make(map[string]string, 0)
|
// phoneAndImsiArr := make(map[string]string, 0)
|
||||||
phoneKeys, err := redis.GetKeys("udmuser", "1*********")
|
// phoneKeys, err := redis.GetKeys("udmuser", "1*********")
|
||||||
if err != nil {
|
// if err != nil {
|
||||||
return phoneAndImsiArr
|
// return phoneAndImsiArr
|
||||||
}
|
// }
|
||||||
for _, phone := range phoneKeys {
|
// for _, phone := range phoneKeys {
|
||||||
imsi, err := redis.Get("udmuser", phone)
|
// imsi, err := redis.Get("udmuser", phone)
|
||||||
if err != nil {
|
// if err != nil {
|
||||||
continue
|
// continue
|
||||||
}
|
// }
|
||||||
phoneAndImsiArr[phone] = imsi
|
// phoneAndImsiArr[phone] = imsi
|
||||||
}
|
// }
|
||||||
return phoneAndImsiArr
|
// return phoneAndImsiArr
|
||||||
}
|
// }
|
||||||
|
|
||||||
// redisUdmAuthUserList UDM鉴权用户
|
// redisUdmAuthUserList UDM鉴权用户
|
||||||
func redisUdmAuthUserList() []model.UdmAuthUser {
|
func redisUdmAuthUserList() []model.UdmAuthUser {
|
||||||
phoneAndImsiArr := phoneImsiList()
|
|
||||||
user := []model.UdmAuthUser{}
|
user := []model.UdmAuthUser{}
|
||||||
for phone, imsi := range phoneAndImsiArr {
|
ausfArr, err := redis.GetKeys("udmuser", "ausf:*")
|
||||||
key := fmt.Sprintf("ausf:%s", imsi)
|
if err != nil {
|
||||||
|
return user
|
||||||
|
}
|
||||||
|
for _, key := range ausfArr {
|
||||||
m, err := redis.GetHash("udmuser", key)
|
m, err := redis.GetHash("udmuser", key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
continue
|
continue
|
||||||
@@ -40,10 +41,13 @@ func redisUdmAuthUserList() []model.UdmAuthUser {
|
|||||||
if _, ok := m["auth_success"]; ok {
|
if _, ok := m["auth_success"]; ok {
|
||||||
status = "1"
|
status = "1"
|
||||||
}
|
}
|
||||||
|
amf := ""
|
||||||
|
if v, ok := m["amf"]; ok {
|
||||||
|
amf = strings.Replace(v, "\r\n", "", 1)
|
||||||
|
}
|
||||||
a := model.UdmAuthUser{
|
a := model.UdmAuthUser{
|
||||||
Msisdn: phone,
|
Imsi: key[5:],
|
||||||
Imsi: imsi,
|
Amf: amf,
|
||||||
Amf: m["amf"],
|
|
||||||
Status: status,
|
Status: status,
|
||||||
Ki: m["ki"],
|
Ki: m["ki"],
|
||||||
AlgoIndex: m["algo"],
|
AlgoIndex: m["algo"],
|
||||||
@@ -56,26 +60,25 @@ func redisUdmAuthUserList() []model.UdmAuthUser {
|
|||||||
|
|
||||||
// redisUdmSubUserList UDM签约用户
|
// redisUdmSubUserList UDM签约用户
|
||||||
func redisUdmSubUserList() []model.UdmSubUser {
|
func redisUdmSubUserList() []model.UdmSubUser {
|
||||||
phoneAndImsiArr := phoneImsiList()
|
// phoneAndImsiArr := phoneImsiList()
|
||||||
user := []model.UdmSubUser{}
|
user := []model.UdmSubUser{}
|
||||||
for phone, imsi := range phoneAndImsiArr {
|
udmsdArr, err := redis.GetKeys("udmuser", "udm-sd:*")
|
||||||
key := fmt.Sprintf("udm-sd:%s", imsi)
|
if err != nil {
|
||||||
|
return user
|
||||||
|
}
|
||||||
|
for _, key := range udmsdArr {
|
||||||
m, err := redis.GetHash("udmuser", key)
|
m, err := redis.GetHash("udmuser", key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
a := model.UdmSubUser{
|
a := model.UdmSubUser{
|
||||||
Imsi: imsi,
|
Imsi: key[7:],
|
||||||
Msisdn: m["gpsi"],
|
Msisdn: strings.TrimPrefix(m["gpsi"], "86"),
|
||||||
SmfSel: m["smf-sel"],
|
SmfSel: m["smf-sel"],
|
||||||
SmData: m["sm-dat"], // 1-000001&cmnet&ims&3gnet
|
SmData: m["sm-dat"], // 1-000001&cmnet&ims&3gnet
|
||||||
}
|
}
|
||||||
|
|
||||||
if a.Msisdn == "" {
|
|
||||||
a.Msisdn = phone
|
|
||||||
}
|
|
||||||
|
|
||||||
// def_ambr,def_nssai,0,def_arfb,def_sar,3,1,12000,1,1000,0,1,-
|
// def_ambr,def_nssai,0,def_arfb,def_sar,3,1,12000,1,1000,0,1,-
|
||||||
if v, ok := m["am-dat"]; ok {
|
if v, ok := m["am-dat"]; ok {
|
||||||
arr := strings.Split(v, ",")
|
arr := strings.Split(v, ",")
|
||||||
|
|||||||
Reference in New Issue
Block a user