diff --git a/features/udm_user/model/udm_auth_user.go b/features/udm_user/model/udm_auth_user.go index 4e72f20d..520d3463 100644 --- a/features/udm_user/model/udm_auth_user.go +++ b/features/udm_user/model/udm_auth_user.go @@ -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"` // 状态 diff --git a/features/udm_user/repo/repo_udm_auth_user.go b/features/udm_user/repo/repo_udm_auth_user.go index 6b836b8c..4650f384 100644 --- a/features/udm_user/repo/repo_udm_auth_user.go +++ b/features/udm_user/repo/repo_udm_auth_user.go @@ -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 根据实体查询 diff --git a/features/udm_user/repo/repo_udm_sub_user.go b/features/udm_user/repo/repo_udm_sub_user.go index 2aac933d..68f9e0e7 100644 --- a/features/udm_user/repo/repo_udm_sub_user.go +++ b/features/udm_user/repo/repo_udm_sub_user.go @@ -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 根据实体查询 diff --git a/features/udm_user/service/service_redis_data.go b/features/udm_user/service/service_redis_data.go index 77fac34b..30cc7f3b 100644 --- a/features/udm_user/service/service_redis_data.go +++ b/features/udm_user/service/service_redis_data.go @@ -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, ",")