fix: UDM鉴权用户去除Msisdn字段

This commit is contained in:
TsMask
2023-09-19 15:30:48 +08:00
parent ab1c93fee2
commit 3308b0e9df
4 changed files with 58 additions and 60 deletions

View File

@@ -3,7 +3,6 @@ package model
// UdmAuthUser UDM鉴权用户
type UdmAuthUser struct {
ID string `json:"id" xorm:"pk 'id' autoincr"`
Msisdn string `json:"msisdn" xorm:"msisdn"` // 相当手机号
Imsi string `json:"imsi" xorm:"imsi"` // SIM卡号
Amf string `json:"amf" xorm:"amf"` // ANF
Status string `json:"status" xorm:"status"` // 状态

View File

@@ -14,12 +14,11 @@ import (
// 实例化数据层 RepoUdmAuthUser 结构体
var NewRepoUdmAuthUser = &RepoUdmAuthUser{
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`,
resultMap: map[string]string{
"id": "ID",
"msisdn": "Msisdn",
"imsi": "Imsi",
"amf": "Amf",
"status": "Status",
@@ -58,10 +57,6 @@ func (r *RepoUdmAuthUser) SelectPage(query map[string]any) map[string]any {
// 查询条件拼接
var conditions []string
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 != "" {
conditions = append(conditions, "imsi like concat(concat('%', ?), '%')")
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 ")
}
result := map[string]any{
"total": 0,
"rows": []model.UdmAuthUser{},
}
// 查询数量 长度为0直接返回
totalSql := "select count(1) as 'total' from u_auth_user"
totalRows, err := datasource.RawDB("", totalSql+whereSql, params)
if err != nil {
log.Errorf("total err => %v", err)
return result
}
total := parse.Number(totalRows[0]["total"])
if total == 0 {
return map[string]any{
"total": total,
"rows": nil,
}
return result
} else {
result["total"] = total
}
// 分页
@@ -120,11 +120,8 @@ func (r *RepoUdmAuthUser) SelectPage(query map[string]any) map[string]any {
}
// 转换实体
rows := r.convertResultRows(results)
return map[string]any{
"total": total,
"rows": rows,
}
result["rows"] = r.convertResultRows(results)
return result
}
// SelectList 根据实体查询

View File

@@ -89,22 +89,23 @@ func (r *RepoUdmSubUser) SelectPage(query map[string]any) map[string]any {
whereSql += " where " + strings.Join(conditions, " and ")
}
result := map[string]any{
"total": 0,
"rows": []model.UdmAuthUser{},
}
// 查询数量 长度为0直接返回
totalSql := "select count(1) as 'total' from u_sub_user"
totalRows, err := datasource.RawDB("", totalSql+whereSql, params)
if err != nil {
log.Errorf("total err => %v", err)
return map[string]any{
"total": 0,
"rows": nil,
}
return result
}
total := parse.Number(totalRows[0]["total"])
if total == 0 {
return map[string]any{
"total": total,
"rows": nil,
}
return result
} else {
result["total"] = total
}
// 分页
@@ -133,14 +134,12 @@ func (r *RepoUdmSubUser) SelectPage(query map[string]any) map[string]any {
results, err := datasource.RawDB("", querySql, params)
if err != nil {
log.Errorf("query err => %v", err)
return result
}
// 转换实体
rows := r.convertResultRows(results)
return map[string]any{
"total": total,
"rows": rows,
}
result["rows"] = r.convertResultRows(results)
return result
}
// SelectList 根据实体查询

View File

@@ -1,7 +1,6 @@
package service
import (
"fmt"
"strings"
"ems.agt/features/udm_user/model"
@@ -9,28 +8,30 @@ import (
)
// phoneImsiList 获取所有imsi
func phoneImsiList() map[string]string {
phoneAndImsiArr := make(map[string]string, 0)
phoneKeys, err := redis.GetKeys("udmuser", "1*********")
if err != nil {
return phoneAndImsiArr
}
for _, phone := range phoneKeys {
imsi, err := redis.Get("udmuser", phone)
if err != nil {
continue
}
phoneAndImsiArr[phone] = imsi
}
return phoneAndImsiArr
}
// func phoneImsiList() map[string]string {
// phoneAndImsiArr := make(map[string]string, 0)
// phoneKeys, err := redis.GetKeys("udmuser", "1*********")
// if err != nil {
// return phoneAndImsiArr
// }
// for _, phone := range phoneKeys {
// imsi, err := redis.Get("udmuser", phone)
// if err != nil {
// continue
// }
// phoneAndImsiArr[phone] = imsi
// }
// return phoneAndImsiArr
// }
// redisUdmAuthUserList UDM鉴权用户
func redisUdmAuthUserList() []model.UdmAuthUser {
phoneAndImsiArr := phoneImsiList()
user := []model.UdmAuthUser{}
for phone, imsi := range phoneAndImsiArr {
key := fmt.Sprintf("ausf:%s", imsi)
ausfArr, err := redis.GetKeys("udmuser", "ausf:*")
if err != nil {
return user
}
for _, key := range ausfArr {
m, err := redis.GetHash("udmuser", key)
if err != nil {
continue
@@ -40,10 +41,13 @@ func redisUdmAuthUserList() []model.UdmAuthUser {
if _, ok := m["auth_success"]; ok {
status = "1"
}
amf := ""
if v, ok := m["amf"]; ok {
amf = strings.Replace(v, "\r\n", "", 1)
}
a := model.UdmAuthUser{
Msisdn: phone,
Imsi: imsi,
Amf: m["amf"],
Imsi: key[5:],
Amf: amf,
Status: status,
Ki: m["ki"],
AlgoIndex: m["algo"],
@@ -56,26 +60,25 @@ func redisUdmAuthUserList() []model.UdmAuthUser {
// redisUdmSubUserList UDM签约用户
func redisUdmSubUserList() []model.UdmSubUser {
phoneAndImsiArr := phoneImsiList()
// phoneAndImsiArr := phoneImsiList()
user := []model.UdmSubUser{}
for phone, imsi := range phoneAndImsiArr {
key := fmt.Sprintf("udm-sd:%s", imsi)
udmsdArr, err := redis.GetKeys("udmuser", "udm-sd:*")
if err != nil {
return user
}
for _, key := range udmsdArr {
m, err := redis.GetHash("udmuser", key)
if err != nil {
continue
}
a := model.UdmSubUser{
Imsi: imsi,
Msisdn: m["gpsi"],
Imsi: key[7:],
Msisdn: strings.TrimPrefix(m["gpsi"], "86"),
SmfSel: m["smf-sel"],
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,-
if v, ok := m["am-dat"]; ok {
arr := strings.Split(v, ",")