fix: UE事件查询方式调整

This commit is contained in:
TsMask
2024-12-20 19:34:14 +08:00
parent 1fd62a5196
commit fa283c4f7b
10 changed files with 174 additions and 381 deletions

View File

@@ -56,8 +56,8 @@ func (s *AMFController) UEList(c *gin.Context) {
// querys.RmUID = neInfo.RmUID // querys.RmUID = neInfo.RmUID
// 查询数据 // 查询数据
data := s.ueEventService.SelectPage(querys) rows, total := s.ueEventService.SelectPage(querys)
c.JSON(200, result.Ok(data)) c.JSON(200, result.Ok(map[string]any{"rows": rows, "total": total}))
} }
// UE会话删除 // UE会话删除
@@ -101,13 +101,12 @@ func (s *AMFController) UEExport(c *gin.Context) {
if querys.PageSize > 10000 { if querys.PageSize > 10000 {
querys.PageSize = 10000 querys.PageSize = 10000
} }
data := s.ueEventService.SelectPage(querys) rows, total := s.ueEventService.SelectPage(querys)
if parse.Number(data["total"]) == 0 { if total == 0 {
// 导出数据记录为空 // 导出数据记录为空
c.JSON(200, result.ErrMsg(i18n.TKey(language, "app.common.exportEmpty"))) c.JSON(200, result.ErrMsg(i18n.TKey(language, "app.common.exportEmpty")))
return return
} }
rows := data["rows"].([]model.UEEventAMF)
// 导出文件名称 // 导出文件名称
fileName := fmt.Sprintf("amf_ue_event_export_%d_%d.xlsx", len(rows), time.Now().UnixMilli()) fileName := fmt.Sprintf("amf_ue_event_export_%d_%d.xlsx", len(rows), time.Now().UnixMilli())

View File

@@ -57,8 +57,8 @@ func (s *MMEController) UEList(c *gin.Context) {
// querys.RmUID = neInfo.RmUID // querys.RmUID = neInfo.RmUID
// 查询数据 // 查询数据
data := s.ueEventService.SelectPage(querys) rows, total := s.ueEventService.SelectPage(querys)
c.JSON(200, result.Ok(data)) c.JSON(200, result.Ok(map[string]any{"rows": rows, "total": total}))
} }
// UE会话删除 // UE会话删除
@@ -102,13 +102,12 @@ func (s *MMEController) UEExport(c *gin.Context) {
if querys.PageSize > 10000 { if querys.PageSize > 10000 {
querys.PageSize = 10000 querys.PageSize = 10000
} }
data := s.ueEventService.SelectPage(querys) rows, total := s.ueEventService.SelectPage(querys)
if parse.Number(data["total"]) == 0 { if total == 0 {
// 导出数据记录为空 // 导出数据记录为空
c.JSON(200, result.ErrMsg(i18n.TKey(language, "app.common.exportEmpty"))) c.JSON(200, result.ErrMsg(i18n.TKey(language, "app.common.exportEmpty")))
return return
} }
rows := data["rows"].([]model.UEEventMME)
// 导出文件名称 // 导出文件名称
fileName := fmt.Sprintf("mme_ue_event_export_%d_%d.xlsx", len(rows), time.Now().UnixMilli()) fileName := fmt.Sprintf("mme_ue_event_export_%d_%d.xlsx", len(rows), time.Now().UnixMilli())

View File

@@ -6,7 +6,7 @@ type UDMUserInfo struct {
IMSI string `json:"imsi" gorm:"column:imsi"` // SIM卡/USIM卡ID IMSI string `json:"imsi" gorm:"column:imsi"` // SIM卡/USIM卡ID
MSISDN string `json:"msisdn" gorm:"column:msisdn"` // 用户电话号码 MSISDN string `json:"msisdn" gorm:"column:msisdn"` // 用户电话号码
NeId string `json:"neId" gorm:"column:ne_id"` // UDM网元标识-子系统 NeId string `json:"neId" gorm:"column:ne_id"` // UDM网元标识-子系统
Remark string `json:"remark" gorm:"remark"` // 备注 Remark string `json:"remark" gorm:"column:remark"` // 备注
} }
// TableName 表名称 // TableName 表名称

View File

@@ -14,6 +14,11 @@ type UEEventAMF struct {
CreatedAt time.Time `json:"createdAt" gorm:"column:created_at;default:CURRENT_TIMESTAMP"` CreatedAt time.Time `json:"createdAt" gorm:"column:created_at;default:CURRENT_TIMESTAMP"`
} }
// TableName 表名称
func (*UEEventAMF) TableName() string {
return "ue_event_amf"
}
// UEEventAMFQuery UE会话对象AMF查询参数结构体 // UEEventAMFQuery UE会话对象AMF查询参数结构体
type UEEventAMFQuery struct { type UEEventAMFQuery struct {
NeType string `json:"neType" form:"neType" binding:"required"` // 网元类型, 暂时支持AMF NeType string `json:"neType" form:"neType" binding:"required"` // 网元类型, 暂时支持AMF

View File

@@ -14,6 +14,11 @@ type UEEventMME struct {
CreatedAt time.Time `json:"createdAt" gorm:"column:created_at;default:CURRENT_TIMESTAMP"` CreatedAt time.Time `json:"createdAt" gorm:"column:created_at;default:CURRENT_TIMESTAMP"`
} }
// TableName 表名称
func (*UEEventMME) TableName() string {
return "ue_event_mme"
}
// UEEventMMEQuery UE会话对象MME查询参数结构体 // UEEventMMEQuery UE会话对象MME查询参数结构体
type UEEventMMEQuery struct { type UEEventMMEQuery struct {
NeType string `json:"neType" form:"neType" binding:"required"` // 网元类型, 暂时支持MME NeType string `json:"neType" form:"neType" binding:"required"` // 网元类型, 暂时支持MME

View File

@@ -1,164 +1,87 @@
package repository package repository
import ( import (
"fmt"
"strings"
"be.ems/src/framework/datasource" "be.ems/src/framework/datasource"
"be.ems/src/framework/logger" "be.ems/src/framework/logger"
"be.ems/src/framework/utils/parse"
"be.ems/src/framework/utils/repo"
"be.ems/src/modules/network_data/model" "be.ems/src/modules/network_data/model"
) )
// 实例化数据层 UDMUserInfo 结构体 // 实例化数据层 UDMUserInfo 结构体
var NewUDMUserInfo = &UDMUserInfo{ var NewUDMUserInfo = &UDMUserInfo{}
selectSql: `select id, imsi, msisdn, ne_id, remark from u_user_info`,
resultMap: map[string]string{
"id": "ID",
"imsi": "IMSI",
"msisdn": "MSISDN",
"ne_id": "NeId",
"remark": "Remark",
},
}
// UDMUserInfo UDM鉴权信息表 数据层处理 // UDMUserInfo UDM鉴权信息表 数据层处理
type UDMUserInfo struct { type UDMUserInfo struct{}
// 查询视图对象SQL
selectSql string
// 结果字段与实体映射
resultMap map[string]string
}
// convertResultRows 将结果记录转实体结果组 // SelectByPage 分页查询集合
func (r *UDMUserInfo) convertResultRows(rows []map[string]any) []model.UDMUserInfo { func (r UDMUserInfo) SelectByPage(query map[string]string) ([]model.UDMUserInfo, int64) {
arr := make([]model.UDMUserInfo, 0) tx := datasource.DB("").Model(&model.UDMUserInfo{})
for _, row := range rows {
item := model.UDMUserInfo{}
for key, value := range row {
if keyMapper, ok := r.resultMap[key]; ok {
repo.SetFieldValue(&item, keyMapper, value)
}
}
arr = append(arr, item)
}
return arr
}
// SelectPage 根据条件分页查询
func (r *UDMUserInfo) SelectPage(query map[string]any) map[string]any {
// 查询条件拼接 // 查询条件拼接
var conditions []string
var params []any
if v, ok := query["imsi"]; ok && v != "" { if v, ok := query["imsi"]; ok && v != "" {
conditions = append(conditions, "imsi like concat(concat('%', ?), '%')") tx = tx.Where("imsi like concat(concat('%', ?), '%')", v)
params = append(params, strings.Trim(v.(string), " "))
} }
if v, ok := query["neId"]; ok && v != "" { if v, ok := query["neId"]; ok && v != "" {
conditions = append(conditions, "ne_id = ?") tx = tx.Where("ne_id = ?", v)
params = append(params, v)
} }
// 构建查询条件语句 // 查询结果
whereSql := "" var total int64 = 0
if len(conditions) > 0 { rows := []model.UDMUserInfo{}
whereSql += " where " + strings.Join(conditions, " and ")
}
result := map[string]any{ // 查询数量为0直接返回
"total": 0, if err := tx.Count(&total).Error; err != nil || total <= 0 {
"rows": []model.UDMUserInfo{}, return rows, total
} }
// 查询数量 长度为0直接返回
totalSql := "select count(1) as 'total' from u_user_info"
totalRows, err := datasource.RawDB("", totalSql+whereSql, params)
if err != nil {
logger.Errorf("total err => %v", err)
return result
}
total := parse.Number(totalRows[0]["total"])
if total == 0 {
return result
} else {
result["total"] = total
}
// 分页
pageNum, pageSize := repo.PageNumSize(query["pageNum"], query["pageSize"])
pageSql := " limit ?,? "
params = append(params, pageNum*pageSize)
params = append(params, pageSize)
// 排序 // 排序
orderSql := ""
if v, ok := query["sortField"]; ok && v != "" { if v, ok := query["sortField"]; ok && v != "" {
sortSql := v.(string) sortField := v
if o, ok := query["sortOrder"]; ok && o != nil && v != "" { if o, ok := query["sortOrder"]; ok && o != "" {
if o == "desc" { sortField = sortField + " desc"
sortSql += " desc "
} else {
sortSql += " asc "
}
} }
orderSql = fmt.Sprintf(" order by %s ", sortSql) tx = tx.Order(sortField)
} }
// 查询数据 // 查询数据分页
querySql := r.selectSql + whereSql + orderSql + pageSql pageNum, pageSize := datasource.PageNumSize(query["pageNum"], query["pageSize"])
results, err := datasource.RawDB("", querySql, params) tx = tx.Limit(pageSize).Offset(pageSize * pageNum)
err := tx.Find(&rows).Error
if err != nil { if err != nil {
logger.Errorf("query err => %v", err) logger.Errorf("query find err => %v", err.Error())
return rows, total
} }
return rows, total
// 转换实体
result["rows"] = r.convertResultRows(results)
return result
} }
// SelectList 根据实体查询 // SelectList 根据实体查询
func (r *UDMUserInfo) SelectList(u model.UDMUserInfo) []model.UDMUserInfo { func (r *UDMUserInfo) SelectList(u model.UDMUserInfo) []model.UDMUserInfo {
// 查询条件拼接 tx := datasource.DB("").Model(&model.UDMUserInfo{})
var conditions []string // 构建查询条件
var params []any
if u.IMSI != "" { if u.IMSI != "" {
conditions = append(conditions, "imsi = ?") tx = tx.Where("imsi = ?", u.IMSI)
params = append(params, u.IMSI)
} }
if u.NeId != "" { if u.NeId != "" {
conditions = append(conditions, "ne_id = ?") tx = tx.Where("ne_id = ?", u.NeId)
params = append(params, u.NeId)
} }
tx = tx.Order("imsi asc")
// 构建查询条件语句
whereSql := ""
if len(conditions) > 0 {
whereSql += " where " + strings.Join(conditions, " and ")
}
// 查询数据 // 查询数据
querySql := r.selectSql + whereSql + " order by imsi asc " rows := []model.UDMUserInfo{}
results, err := datasource.RawDB("", querySql, params) if err := tx.Find(&rows).Error; err != nil {
if err != nil { logger.Errorf("query find err => %v", err.Error())
logger.Errorf("query err => %v", err) return rows
} }
return rows
// 转换实体
return r.convertResultRows(results)
} }
// SelectByIMSIAndNeID 通过imsi和ne_id查询 // SelectByIMSIAndNeID 通过imsi和ne_id查询
func (r *UDMUserInfo) SelectByIMSIAndNeID(imsi, neId string) model.UDMUserInfo { func (r *UDMUserInfo) SelectByIMSIAndNeID(imsi, neId string) model.UDMUserInfo {
querySql := r.selectSql + " where imsi = ? and ne_id = ?" tx := datasource.DB("").Model(&model.UDMUserInfo{})
results, err := datasource.RawDB("", querySql, []any{imsi, neId}) // 构建查询条件
if err != nil { tx = tx.Where(" imsi = ? and ne_id = ?", imsi, neId)
logger.Errorf("query err => %v", err) // 查询数据
return model.UDMUserInfo{} rows := []model.UDMUserInfo{}
if err := tx.Limit(1).Find(&rows).Error; err != nil {
logger.Errorf("query find err => %v", err.Error())
} }
// 转换实体
rows := r.convertResultRows(results)
if len(rows) > 0 { if len(rows) > 0 {
return rows[0] return rows[0]
} }

View File

@@ -1,175 +1,106 @@
package repository package repository
import ( import (
"fmt"
"strings" "strings"
"be.ems/src/framework/datasource" "be.ems/src/framework/datasource"
"be.ems/src/framework/logger" "be.ems/src/framework/logger"
"be.ems/src/framework/utils/parse"
"be.ems/src/framework/utils/repo"
"be.ems/src/modules/network_data/model" "be.ems/src/modules/network_data/model"
) )
// 实例化数据层 UEEventAMF 结构体 // 实例化数据层 UEEventAMF 结构体
var NewUEEventAMF = &UEEventAMF{ var NewUEEventAMF = &UEEventAMF{}
selectSql: `select id, ne_type, ne_name, rm_uid, timestamp, event_type, event_json, created_at from ue_event_amf`,
resultMap: map[string]string{
"id": "ID",
"ne_type": "NeType",
"ne_name": "NeName",
"rm_uid": "RmUID",
"timestamp": "Timestamp",
"event_type": "EventType",
"event_json": "EventJSONStr",
"created_at": "CreatedAt",
},
}
// UEEventAMF UE会话事件 数据层处理 // UEEventAMF UE会话事件 数据层处理
type UEEventAMF struct { type UEEventAMF struct{}
// 查询视图对象SQL
selectSql string
// 结果字段与实体映射
resultMap map[string]string
}
// convertResultRows 将结果记录转实体结果组 // SelectByPage 分页查询集合
func (r *UEEventAMF) convertResultRows(rows []map[string]any) []model.UEEventAMF { func (r UEEventAMF) SelectByPage(querys model.UEEventAMFQuery) ([]model.UEEventAMF, int64) {
arr := make([]model.UEEventAMF, 0) tx := datasource.DB("").Model(&model.UEEventAMF{})
for _, row := range rows {
item := model.UEEventAMF{}
for key, value := range row {
if keyMapper, ok := r.resultMap[key]; ok {
repo.SetFieldValue(&item, keyMapper, value)
}
}
arr = append(arr, item)
}
return arr
}
// SelectPage 根据条件分页查询
func (r *UEEventAMF) SelectPage(querys model.UEEventAMFQuery) map[string]any {
// 查询条件拼接 // 查询条件拼接
var conditions []string
var params []any
if querys.NeType != "" { if querys.NeType != "" {
conditions = append(conditions, "ne_type = ?") tx = tx.Where("ne_type = ?", querys.NeType)
params = append(params, querys.NeType)
} }
if querys.RmUID != "" { if querys.RmUID != "" {
conditions = append(conditions, "rm_uid = ?") tx = tx.Where("rm_uid = ?", querys.RmUID)
params = append(params, querys.RmUID)
} }
if querys.StartTime != "" { if querys.StartTime != "" {
conditions = append(conditions, "timestamp >= ?") startTime := querys.StartTime
if len(querys.StartTime) == 13 { if len(startTime) == 13 {
querys.StartTime = querys.StartTime[:10] startTime = startTime[:10]
} }
params = append(params, querys.StartTime) tx = tx.Where("timestamp >= ?", startTime)
} }
if querys.EndTime != "" { if querys.EndTime != "" {
conditions = append(conditions, "timestamp <= ?") endTime := querys.EndTime
if len(querys.EndTime) == 13 { if len(endTime) == 13 {
querys.EndTime = querys.EndTime[:10] endTime = endTime[:10]
} }
params = append(params, querys.EndTime) tx = tx.Where("timestamp <= ?", endTime)
} }
if querys.EventType != "" { if querys.EventType != "" {
eventTypes := strings.Split(querys.EventType, ",") eventTypes := strings.Split(querys.EventType, ",")
placeholder := repo.KeyPlaceholderByQuery(len(eventTypes)) tx = tx.Where("event_type in ?", eventTypes)
conditions = append(conditions, fmt.Sprintf("event_type in (%s)", placeholder))
for _, eventType := range eventTypes {
params = append(params, eventType)
}
} }
if querys.IMSI != "" { if querys.IMSI != "" {
conditions = append(conditions, "JSON_EXTRACT(event_json, '$.imsi') = ?") tx = tx.Where("JSON_EXTRACT(event_json, '$.imsi') = ?", querys.IMSI)
params = append(params, querys.IMSI)
} }
// 构建查询条件语句 // 查询结果
whereSql := "" var total int64 = 0
if len(conditions) > 0 { rows := []model.UEEventAMF{}
whereSql += " where " + strings.Join(conditions, " and ")
}
result := map[string]any{ // 查询数量为0直接返回
"total": 0, if err := tx.Count(&total).Error; err != nil || total <= 0 {
"rows": []model.UEEventAMF{}, return rows, total
} }
// 查询数量 长度为0直接返回
totalSql := "select count(1) as 'total' from ue_event_amf"
totalRows, err := datasource.RawDB("", totalSql+whereSql, params)
if err != nil {
logger.Errorf("total err => %v", err)
return result
}
total := parse.Number(totalRows[0]["total"])
if total == 0 {
return result
} else {
result["total"] = total
}
// 分页
pageNum, pageSize := repo.PageNumSize(querys.PageNum, querys.PageSize)
pageSql := " limit ?,? "
params = append(params, pageNum*pageSize)
params = append(params, pageSize)
// 排序 // 排序
orderSql := ""
if querys.SortField != "" { if querys.SortField != "" {
sortSql := querys.SortField sortField := querys.SortField
if querys.SortOrder != "" { if querys.SortOrder == "desc" {
if querys.SortOrder == "desc" { sortField = sortField + " desc"
sortSql += " desc "
} else {
sortSql += " asc "
}
} }
orderSql = fmt.Sprintf(" order by id desc, %s ", sortSql) tx = tx.Order(sortField)
} }
// 查询数据 // 查询数据分页
querySql := r.selectSql + whereSql + orderSql + pageSql pageNum, pageSize := datasource.PageNumSize(querys.PageNum, querys.PageSize)
results, err := datasource.RawDB("", querySql, params) tx = tx.Limit(pageSize).Offset(pageSize * pageNum)
err := tx.Find(&rows).Error
if err != nil { if err != nil {
logger.Errorf("query err => %v", err) logger.Errorf("query find err => %v", err.Error())
return rows, total
} }
return rows, total
// 转换实体
result["rows"] = r.convertResultRows(results)
return result
} }
// SelectByIds 通过ID查询 // SelectByIds 通过ID查询
func (r *UEEventAMF) SelectByIds(ueIds []string) []model.UEEventAMF { func (r UEEventAMF) SelectByIds(ids []string) []model.UEEventAMF {
placeholder := repo.KeyPlaceholderByQuery(len(ueIds)) rows := []model.UEEventAMF{}
querySql := r.selectSql + " where id in (" + placeholder + ")" if len(ids) <= 0 {
parameters := repo.ConvertIdsSlice(ueIds) return rows
results, err := datasource.RawDB("", querySql, parameters)
if err != nil {
logger.Errorf("query err => %v", err)
return []model.UEEventAMF{}
} }
// 转换实体 tx := datasource.DB("").Model(&model.UEEventAMF{})
return r.convertResultRows(results) // 构建查询条件
tx = tx.Where("id in ?", ids)
// 查询数据
if err := tx.Find(&rows).Error; err != nil {
logger.Errorf("query find err => %v", err.Error())
return rows
}
return rows
} }
// DeleteByIds 批量删除信息 // DeleteByIds 批量删除信息
func (r *UEEventAMF) DeleteByIds(ueIds []string) int64 { func (r UEEventAMF) DeleteByIds(ids []string) int64 {
placeholder := repo.KeyPlaceholderByQuery(len(ueIds)) if len(ids) <= 0 {
sql := "delete from ue_event_amf where id in (" + placeholder + ")"
parameters := repo.ConvertIdsSlice(ueIds)
results, err := datasource.ExecDB("", sql, parameters)
if err != nil {
logger.Errorf("delete err => %v", err)
return 0 return 0
} }
return results tx := datasource.DB("").Where("id in ?", ids)
if err := tx.Delete(&model.UEEventAMF{}).Error; err != nil {
logger.Errorf("delete err => %v", err.Error())
return 0
}
return tx.RowsAffected
} }

View File

@@ -1,175 +1,106 @@
package repository package repository
import ( import (
"fmt"
"strings" "strings"
"be.ems/src/framework/datasource" "be.ems/src/framework/datasource"
"be.ems/src/framework/logger" "be.ems/src/framework/logger"
"be.ems/src/framework/utils/parse"
"be.ems/src/framework/utils/repo"
"be.ems/src/modules/network_data/model" "be.ems/src/modules/network_data/model"
) )
// 实例化数据层 UEEventMME 结构体 // 实例化数据层 UEEventMME 结构体
var NewUEEventMME = &UEEventMME{ var NewUEEventMME = &UEEventMME{}
selectSql: `select id, ne_type, ne_name, rm_uid, timestamp, event_type, event_json, created_at from ue_event_mme`,
resultMap: map[string]string{
"id": "ID",
"ne_type": "NeType",
"ne_name": "NeName",
"rm_uid": "RmUID",
"timestamp": "Timestamp",
"event_type": "EventType",
"event_json": "EventJSONStr",
"created_at": "CreatedAt",
},
}
// UEEventMME UE会话事件 数据层处理 // UEEventMME UE会话事件 数据层处理
type UEEventMME struct { type UEEventMME struct{}
// 查询视图对象SQL
selectSql string
// 结果字段与实体映射
resultMap map[string]string
}
// convertResultRows 将结果记录转实体结果组 // SelectByPage 分页查询集合
func (r *UEEventMME) convertResultRows(rows []map[string]any) []model.UEEventMME { func (r UEEventMME) SelectByPage(querys model.UEEventMMEQuery) ([]model.UEEventMME, int64) {
arr := make([]model.UEEventMME, 0) tx := datasource.DB("").Model(&model.UEEventMME{})
for _, row := range rows {
item := model.UEEventMME{}
for key, value := range row {
if keyMapper, ok := r.resultMap[key]; ok {
repo.SetFieldValue(&item, keyMapper, value)
}
}
arr = append(arr, item)
}
return arr
}
// SelectPage 根据条件分页查询
func (r *UEEventMME) SelectPage(querys model.UEEventMMEQuery) map[string]any {
// 查询条件拼接 // 查询条件拼接
var conditions []string
var params []any
if querys.NeType != "" { if querys.NeType != "" {
conditions = append(conditions, "ne_type = ?") tx = tx.Where("ne_type = ?", querys.NeType)
params = append(params, querys.NeType)
} }
if querys.RmUID != "" { if querys.RmUID != "" {
conditions = append(conditions, "rm_uid = ?") tx = tx.Where("rm_uid = ?", querys.RmUID)
params = append(params, querys.RmUID)
} }
if querys.StartTime != "" { if querys.StartTime != "" {
conditions = append(conditions, "timestamp >= ?") startTime := querys.StartTime
if len(querys.StartTime) == 13 { if len(startTime) == 13 {
querys.StartTime = querys.StartTime[:10] startTime = startTime[:10]
} }
params = append(params, querys.StartTime) tx = tx.Where("timestamp >= ?", startTime)
} }
if querys.EndTime != "" { if querys.EndTime != "" {
conditions = append(conditions, "timestamp <= ?") endTime := querys.EndTime
if len(querys.EndTime) == 13 { if len(endTime) == 13 {
querys.EndTime = querys.EndTime[:10] endTime = endTime[:10]
} }
params = append(params, querys.EndTime) tx = tx.Where("timestamp <= ?", endTime)
} }
if querys.EventType != "" { if querys.EventType != "" {
eventTypes := strings.Split(querys.EventType, ",") eventTypes := strings.Split(querys.EventType, ",")
placeholder := repo.KeyPlaceholderByQuery(len(eventTypes)) tx = tx.Where("event_type in ?", eventTypes)
conditions = append(conditions, fmt.Sprintf("event_type in (%s)", placeholder))
for _, eventType := range eventTypes {
params = append(params, eventType)
}
} }
if querys.IMSI != "" { if querys.IMSI != "" {
conditions = append(conditions, "JSON_EXTRACT(event_json, '$.imsi') = ?") tx = tx.Where("JSON_EXTRACT(event_json, '$.imsi') = ?", querys.IMSI)
params = append(params, querys.IMSI)
} }
// 构建查询条件语句 // 查询结果
whereSql := "" var total int64 = 0
if len(conditions) > 0 { rows := []model.UEEventMME{}
whereSql += " where " + strings.Join(conditions, " and ")
}
result := map[string]any{ // 查询数量为0直接返回
"total": 0, if err := tx.Count(&total).Error; err != nil || total <= 0 {
"rows": []model.UEEventMME{}, return rows, total
} }
// 查询数量 长度为0直接返回
totalSql := "select count(1) as 'total' from ue_event_mme"
totalRows, err := datasource.RawDB("", totalSql+whereSql, params)
if err != nil {
logger.Errorf("total err => %v", err)
return result
}
total := parse.Number(totalRows[0]["total"])
if total == 0 {
return result
} else {
result["total"] = total
}
// 分页
pageNum, pageSize := repo.PageNumSize(querys.PageNum, querys.PageSize)
pageSql := " limit ?,? "
params = append(params, pageNum*pageSize)
params = append(params, pageSize)
// 排序 // 排序
orderSql := ""
if querys.SortField != "" { if querys.SortField != "" {
sortSql := querys.SortField sortField := querys.SortField
if querys.SortOrder != "" { if querys.SortOrder == "desc" {
if querys.SortOrder == "desc" { sortField = sortField + " desc"
sortSql += " desc "
} else {
sortSql += " asc "
}
} }
orderSql = fmt.Sprintf(" order by id desc, %s ", sortSql) tx = tx.Order(sortField)
} }
// 查询数据 // 查询数据分页
querySql := r.selectSql + whereSql + orderSql + pageSql pageNum, pageSize := datasource.PageNumSize(querys.PageNum, querys.PageSize)
results, err := datasource.RawDB("", querySql, params) tx = tx.Limit(pageSize).Offset(pageSize * pageNum)
err := tx.Find(&rows).Error
if err != nil { if err != nil {
logger.Errorf("query err => %v", err) logger.Errorf("query find err => %v", err.Error())
return rows, total
} }
return rows, total
// 转换实体
result["rows"] = r.convertResultRows(results)
return result
} }
// SelectByIds 通过ID查询 // SelectByIds 通过ID查询
func (r *UEEventMME) SelectByIds(ueIds []string) []model.UEEventMME { func (r UEEventMME) SelectByIds(ids []string) []model.UEEventMME {
placeholder := repo.KeyPlaceholderByQuery(len(ueIds)) rows := []model.UEEventMME{}
querySql := r.selectSql + " where id in (" + placeholder + ")" if len(ids) <= 0 {
parameters := repo.ConvertIdsSlice(ueIds) return rows
results, err := datasource.RawDB("", querySql, parameters)
if err != nil {
logger.Errorf("query err => %v", err)
return []model.UEEventMME{}
} }
// 转换实体 tx := datasource.DB("").Model(&model.UEEventMME{})
return r.convertResultRows(results) // 构建查询条件
tx = tx.Where("id in ?", ids)
// 查询数据
if err := tx.Find(&rows).Error; err != nil {
logger.Errorf("query find err => %v", err.Error())
return rows
}
return rows
} }
// DeleteByIds 批量删除信息 // DeleteByIds 批量删除信息
func (r *UEEventMME) DeleteByIds(ueIds []string) int64 { func (r UEEventMME) DeleteByIds(ids []string) int64 {
placeholder := repo.KeyPlaceholderByQuery(len(ueIds)) if len(ids) <= 0 {
sql := "delete from ue_event_mme where id in (" + placeholder + ")"
parameters := repo.ConvertIdsSlice(ueIds)
results, err := datasource.ExecDB("", sql, parameters)
if err != nil {
logger.Errorf("delete err => %v", err)
return 0 return 0
} }
return results tx := datasource.DB("").Where("id in ?", ids)
if err := tx.Delete(&model.UEEventMME{}).Error; err != nil {
logger.Errorf("delete err => %v", err.Error())
return 0
}
return tx.RowsAffected
} }

View File

@@ -19,8 +19,8 @@ type UEEventAMF struct {
} }
// SelectPage 根据条件分页查询 // SelectPage 根据条件分页查询
func (r *UEEventAMF) SelectPage(querys model.UEEventAMFQuery) map[string]any { func (r *UEEventAMF) SelectPage(querys model.UEEventAMFQuery) ([]model.UEEventAMF, int64) {
return r.ueEventRepository.SelectPage(querys) return r.ueEventRepository.SelectByPage(querys)
} }
// DeleteByIds 批量删除信息 // DeleteByIds 批量删除信息

View File

@@ -18,8 +18,8 @@ type UEEventMME struct {
} }
// SelectPage 根据条件分页查询 // SelectPage 根据条件分页查询
func (r *UEEventMME) SelectPage(querys model.UEEventMMEQuery) map[string]any { func (r *UEEventMME) SelectPage(querys model.UEEventMMEQuery) ([]model.UEEventMME, int64) {
return r.ueEventRepository.SelectPage(querys) return r.ueEventRepository.SelectByPage(querys)
} }
// DeleteByIds 批量删除信息 // DeleteByIds 批量删除信息