From fa283c4f7bdcaa1a6d4736657d6369face380f95 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Fri, 20 Dec 2024 19:34:14 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20UE=E4=BA=8B=E4=BB=B6=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=96=B9=E5=BC=8F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/modules/network_data/controller/amf.go | 9 +- src/modules/network_data/controller/mme.go | 9 +- .../network_data/model/udm_user_info.go | 2 +- .../network_data/model/ue_event_amf.go | 5 + .../network_data/model/ue_event_mme.go | 5 + .../network_data/repository/udm_user_info.go | 159 ++++------------ .../network_data/repository/ue_event_amf.go | 179 ++++++------------ .../network_data/repository/ue_event_mme.go | 179 ++++++------------ .../network_data/service/ue_event_amf.go | 4 +- .../network_data/service/ue_event_mme.go | 4 +- 10 files changed, 174 insertions(+), 381 deletions(-) diff --git a/src/modules/network_data/controller/amf.go b/src/modules/network_data/controller/amf.go index 2638b866..98ea42c9 100644 --- a/src/modules/network_data/controller/amf.go +++ b/src/modules/network_data/controller/amf.go @@ -56,8 +56,8 @@ func (s *AMFController) UEList(c *gin.Context) { // querys.RmUID = neInfo.RmUID // 查询数据 - data := s.ueEventService.SelectPage(querys) - c.JSON(200, result.Ok(data)) + rows, total := s.ueEventService.SelectPage(querys) + c.JSON(200, result.Ok(map[string]any{"rows": rows, "total": total})) } // UE会话删除 @@ -101,13 +101,12 @@ func (s *AMFController) UEExport(c *gin.Context) { if querys.PageSize > 10000 { querys.PageSize = 10000 } - data := s.ueEventService.SelectPage(querys) - if parse.Number(data["total"]) == 0 { + rows, total := s.ueEventService.SelectPage(querys) + if total == 0 { // 导出数据记录为空 c.JSON(200, result.ErrMsg(i18n.TKey(language, "app.common.exportEmpty"))) return } - rows := data["rows"].([]model.UEEventAMF) // 导出文件名称 fileName := fmt.Sprintf("amf_ue_event_export_%d_%d.xlsx", len(rows), time.Now().UnixMilli()) diff --git a/src/modules/network_data/controller/mme.go b/src/modules/network_data/controller/mme.go index f9802a36..6143dd6e 100644 --- a/src/modules/network_data/controller/mme.go +++ b/src/modules/network_data/controller/mme.go @@ -57,8 +57,8 @@ func (s *MMEController) UEList(c *gin.Context) { // querys.RmUID = neInfo.RmUID // 查询数据 - data := s.ueEventService.SelectPage(querys) - c.JSON(200, result.Ok(data)) + rows, total := s.ueEventService.SelectPage(querys) + c.JSON(200, result.Ok(map[string]any{"rows": rows, "total": total})) } // UE会话删除 @@ -102,13 +102,12 @@ func (s *MMEController) UEExport(c *gin.Context) { if querys.PageSize > 10000 { querys.PageSize = 10000 } - data := s.ueEventService.SelectPage(querys) - if parse.Number(data["total"]) == 0 { + rows, total := s.ueEventService.SelectPage(querys) + if total == 0 { // 导出数据记录为空 c.JSON(200, result.ErrMsg(i18n.TKey(language, "app.common.exportEmpty"))) return } - rows := data["rows"].([]model.UEEventMME) // 导出文件名称 fileName := fmt.Sprintf("mme_ue_event_export_%d_%d.xlsx", len(rows), time.Now().UnixMilli()) diff --git a/src/modules/network_data/model/udm_user_info.go b/src/modules/network_data/model/udm_user_info.go index 470a9abc..3f3ea4f9 100644 --- a/src/modules/network_data/model/udm_user_info.go +++ b/src/modules/network_data/model/udm_user_info.go @@ -6,7 +6,7 @@ type UDMUserInfo struct { IMSI string `json:"imsi" gorm:"column:imsi"` // SIM卡/USIM卡ID MSISDN string `json:"msisdn" gorm:"column:msisdn"` // 用户电话号码 NeId string `json:"neId" gorm:"column:ne_id"` // UDM网元标识-子系统 - Remark string `json:"remark" gorm:"remark"` // 备注 + Remark string `json:"remark" gorm:"column:remark"` // 备注 } // TableName 表名称 diff --git a/src/modules/network_data/model/ue_event_amf.go b/src/modules/network_data/model/ue_event_amf.go index 6fa549bd..a4649267 100644 --- a/src/modules/network_data/model/ue_event_amf.go +++ b/src/modules/network_data/model/ue_event_amf.go @@ -14,6 +14,11 @@ type UEEventAMF struct { CreatedAt time.Time `json:"createdAt" gorm:"column:created_at;default:CURRENT_TIMESTAMP"` } +// TableName 表名称 +func (*UEEventAMF) TableName() string { + return "ue_event_amf" +} + // UEEventAMFQuery UE会话对象AMF查询参数结构体 type UEEventAMFQuery struct { NeType string `json:"neType" form:"neType" binding:"required"` // 网元类型, 暂时支持AMF diff --git a/src/modules/network_data/model/ue_event_mme.go b/src/modules/network_data/model/ue_event_mme.go index 8ceab120..bff678a7 100644 --- a/src/modules/network_data/model/ue_event_mme.go +++ b/src/modules/network_data/model/ue_event_mme.go @@ -14,6 +14,11 @@ type UEEventMME struct { CreatedAt time.Time `json:"createdAt" gorm:"column:created_at;default:CURRENT_TIMESTAMP"` } +// TableName 表名称 +func (*UEEventMME) TableName() string { + return "ue_event_mme" +} + // UEEventMMEQuery UE会话对象MME查询参数结构体 type UEEventMMEQuery struct { NeType string `json:"neType" form:"neType" binding:"required"` // 网元类型, 暂时支持MME diff --git a/src/modules/network_data/repository/udm_user_info.go b/src/modules/network_data/repository/udm_user_info.go index c7aead43..1c274373 100644 --- a/src/modules/network_data/repository/udm_user_info.go +++ b/src/modules/network_data/repository/udm_user_info.go @@ -1,164 +1,87 @@ package repository import ( - "fmt" - "strings" - "be.ems/src/framework/datasource" "be.ems/src/framework/logger" - "be.ems/src/framework/utils/parse" - "be.ems/src/framework/utils/repo" "be.ems/src/modules/network_data/model" ) // 实例化数据层 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", - }, -} +var NewUDMUserInfo = &UDMUserInfo{} // UDMUserInfo UDM鉴权信息表 数据层处理 -type UDMUserInfo struct { - // 查询视图对象SQL - selectSql string - // 结果字段与实体映射 - resultMap map[string]string -} +type UDMUserInfo struct{} -// convertResultRows 将结果记录转实体结果组 -func (r *UDMUserInfo) convertResultRows(rows []map[string]any) []model.UDMUserInfo { - arr := make([]model.UDMUserInfo, 0) - 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 { +// SelectByPage 分页查询集合 +func (r UDMUserInfo) SelectByPage(query map[string]string) ([]model.UDMUserInfo, int64) { + tx := datasource.DB("").Model(&model.UDMUserInfo{}) // 查询条件拼接 - var conditions []string - var params []any if v, ok := query["imsi"]; ok && v != "" { - conditions = append(conditions, "imsi like concat(concat('%', ?), '%')") - params = append(params, strings.Trim(v.(string), " ")) + tx = tx.Where("imsi like concat(concat('%', ?), '%')", v) } if v, ok := query["neId"]; ok && v != "" { - conditions = append(conditions, "ne_id = ?") - params = append(params, v) + tx = tx.Where("ne_id = ?", v) } - // 构建查询条件语句 - whereSql := "" - if len(conditions) > 0 { - whereSql += " where " + strings.Join(conditions, " and ") - } + // 查询结果 + var total int64 = 0 + rows := []model.UDMUserInfo{} - result := map[string]any{ - "total": 0, - "rows": []model.UDMUserInfo{}, + // 查询数量为0直接返回 + if err := tx.Count(&total).Error; err != nil || total <= 0 { + 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 != "" { - sortSql := v.(string) - if o, ok := query["sortOrder"]; ok && o != nil && v != "" { - if o == "desc" { - sortSql += " desc " - } else { - sortSql += " asc " - } + sortField := v + if o, ok := query["sortOrder"]; ok && o != "" { + sortField = sortField + " desc" } - orderSql = fmt.Sprintf(" order by %s ", sortSql) + tx = tx.Order(sortField) } - // 查询数据 - querySql := r.selectSql + whereSql + orderSql + pageSql - results, err := datasource.RawDB("", querySql, params) + // 查询数据分页 + pageNum, pageSize := datasource.PageNumSize(query["pageNum"], query["pageSize"]) + tx = tx.Limit(pageSize).Offset(pageSize * pageNum) + err := tx.Find(&rows).Error if err != nil { - logger.Errorf("query err => %v", err) + logger.Errorf("query find err => %v", err.Error()) + return rows, total } - - // 转换实体 - result["rows"] = r.convertResultRows(results) - return result + return rows, total } // SelectList 根据实体查询 func (r *UDMUserInfo) SelectList(u model.UDMUserInfo) []model.UDMUserInfo { - // 查询条件拼接 - var conditions []string - var params []any + tx := datasource.DB("").Model(&model.UDMUserInfo{}) + // 构建查询条件 if u.IMSI != "" { - conditions = append(conditions, "imsi = ?") - params = append(params, u.IMSI) + tx = tx.Where("imsi = ?", u.IMSI) } if u.NeId != "" { - conditions = append(conditions, "ne_id = ?") - params = append(params, u.NeId) + tx = tx.Where("ne_id = ?", u.NeId) } - - // 构建查询条件语句 - whereSql := "" - if len(conditions) > 0 { - whereSql += " where " + strings.Join(conditions, " and ") - } - + tx = tx.Order("imsi asc") // 查询数据 - querySql := r.selectSql + whereSql + " order by imsi asc " - results, err := datasource.RawDB("", querySql, params) - if err != nil { - logger.Errorf("query err => %v", err) + rows := []model.UDMUserInfo{} + if err := tx.Find(&rows).Error; err != nil { + logger.Errorf("query find err => %v", err.Error()) + return rows } - - // 转换实体 - return r.convertResultRows(results) + return rows } // SelectByIMSIAndNeID 通过imsi和ne_id查询 func (r *UDMUserInfo) SelectByIMSIAndNeID(imsi, neId string) model.UDMUserInfo { - querySql := r.selectSql + " where imsi = ? and ne_id = ?" - results, err := datasource.RawDB("", querySql, []any{imsi, neId}) - if err != nil { - logger.Errorf("query err => %v", err) - return model.UDMUserInfo{} + tx := datasource.DB("").Model(&model.UDMUserInfo{}) + // 构建查询条件 + tx = tx.Where(" imsi = ? and ne_id = ?", imsi, neId) + // 查询数据 + 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 { return rows[0] } diff --git a/src/modules/network_data/repository/ue_event_amf.go b/src/modules/network_data/repository/ue_event_amf.go index 76442b8c..9542a6c7 100644 --- a/src/modules/network_data/repository/ue_event_amf.go +++ b/src/modules/network_data/repository/ue_event_amf.go @@ -1,175 +1,106 @@ package repository import ( - "fmt" "strings" "be.ems/src/framework/datasource" "be.ems/src/framework/logger" - "be.ems/src/framework/utils/parse" - "be.ems/src/framework/utils/repo" "be.ems/src/modules/network_data/model" ) // 实例化数据层 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", - }, -} +var NewUEEventAMF = &UEEventAMF{} // UEEventAMF UE会话事件 数据层处理 -type UEEventAMF struct { - // 查询视图对象SQL - selectSql string - // 结果字段与实体映射 - resultMap map[string]string -} +type UEEventAMF struct{} -// convertResultRows 将结果记录转实体结果组 -func (r *UEEventAMF) convertResultRows(rows []map[string]any) []model.UEEventAMF { - arr := make([]model.UEEventAMF, 0) - 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 { +// SelectByPage 分页查询集合 +func (r UEEventAMF) SelectByPage(querys model.UEEventAMFQuery) ([]model.UEEventAMF, int64) { + tx := datasource.DB("").Model(&model.UEEventAMF{}) // 查询条件拼接 - var conditions []string - var params []any if querys.NeType != "" { - conditions = append(conditions, "ne_type = ?") - params = append(params, querys.NeType) + tx = tx.Where("ne_type = ?", querys.NeType) } if querys.RmUID != "" { - conditions = append(conditions, "rm_uid = ?") - params = append(params, querys.RmUID) + tx = tx.Where("rm_uid = ?", querys.RmUID) } if querys.StartTime != "" { - conditions = append(conditions, "timestamp >= ?") - if len(querys.StartTime) == 13 { - querys.StartTime = querys.StartTime[:10] + startTime := querys.StartTime + if len(startTime) == 13 { + startTime = startTime[:10] } - params = append(params, querys.StartTime) + tx = tx.Where("timestamp >= ?", startTime) } if querys.EndTime != "" { - conditions = append(conditions, "timestamp <= ?") - if len(querys.EndTime) == 13 { - querys.EndTime = querys.EndTime[:10] + endTime := querys.EndTime + if len(endTime) == 13 { + endTime = endTime[:10] } - params = append(params, querys.EndTime) + tx = tx.Where("timestamp <= ?", endTime) } if querys.EventType != "" { eventTypes := strings.Split(querys.EventType, ",") - placeholder := repo.KeyPlaceholderByQuery(len(eventTypes)) - conditions = append(conditions, fmt.Sprintf("event_type in (%s)", placeholder)) - for _, eventType := range eventTypes { - params = append(params, eventType) - } + tx = tx.Where("event_type in ?", eventTypes) } if querys.IMSI != "" { - conditions = append(conditions, "JSON_EXTRACT(event_json, '$.imsi') = ?") - params = append(params, querys.IMSI) + tx = tx.Where("JSON_EXTRACT(event_json, '$.imsi') = ?", querys.IMSI) } - // 构建查询条件语句 - whereSql := "" - if len(conditions) > 0 { - whereSql += " where " + strings.Join(conditions, " and ") - } + // 查询结果 + var total int64 = 0 + rows := []model.UEEventAMF{} - result := map[string]any{ - "total": 0, - "rows": []model.UEEventAMF{}, + // 查询数量为0直接返回 + if err := tx.Count(&total).Error; err != nil || total <= 0 { + 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 != "" { - sortSql := querys.SortField - if querys.SortOrder != "" { - if querys.SortOrder == "desc" { - sortSql += " desc " - } else { - sortSql += " asc " - } + sortField := querys.SortField + if querys.SortOrder == "desc" { + sortField = sortField + " desc" } - orderSql = fmt.Sprintf(" order by id desc, %s ", sortSql) + tx = tx.Order(sortField) } - // 查询数据 - querySql := r.selectSql + whereSql + orderSql + pageSql - results, err := datasource.RawDB("", querySql, params) + // 查询数据分页 + pageNum, pageSize := datasource.PageNumSize(querys.PageNum, querys.PageSize) + tx = tx.Limit(pageSize).Offset(pageSize * pageNum) + err := tx.Find(&rows).Error if err != nil { - logger.Errorf("query err => %v", err) + logger.Errorf("query find err => %v", err.Error()) + return rows, total } - - // 转换实体 - result["rows"] = r.convertResultRows(results) - return result + return rows, total } // SelectByIds 通过ID查询 -func (r *UEEventAMF) SelectByIds(ueIds []string) []model.UEEventAMF { - placeholder := repo.KeyPlaceholderByQuery(len(ueIds)) - querySql := r.selectSql + " where id in (" + placeholder + ")" - parameters := repo.ConvertIdsSlice(ueIds) - results, err := datasource.RawDB("", querySql, parameters) - if err != nil { - logger.Errorf("query err => %v", err) - return []model.UEEventAMF{} +func (r UEEventAMF) SelectByIds(ids []string) []model.UEEventAMF { + rows := []model.UEEventAMF{} + if len(ids) <= 0 { + return rows } - // 转换实体 - return r.convertResultRows(results) + tx := datasource.DB("").Model(&model.UEEventAMF{}) + // 构建查询条件 + 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 批量删除信息 -func (r *UEEventAMF) DeleteByIds(ueIds []string) int64 { - placeholder := repo.KeyPlaceholderByQuery(len(ueIds)) - 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) +func (r UEEventAMF) DeleteByIds(ids []string) int64 { + if len(ids) <= 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 } diff --git a/src/modules/network_data/repository/ue_event_mme.go b/src/modules/network_data/repository/ue_event_mme.go index a035f5aa..7da121d6 100644 --- a/src/modules/network_data/repository/ue_event_mme.go +++ b/src/modules/network_data/repository/ue_event_mme.go @@ -1,175 +1,106 @@ package repository import ( - "fmt" "strings" "be.ems/src/framework/datasource" "be.ems/src/framework/logger" - "be.ems/src/framework/utils/parse" - "be.ems/src/framework/utils/repo" "be.ems/src/modules/network_data/model" ) // 实例化数据层 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", - }, -} +var NewUEEventMME = &UEEventMME{} // UEEventMME UE会话事件 数据层处理 -type UEEventMME struct { - // 查询视图对象SQL - selectSql string - // 结果字段与实体映射 - resultMap map[string]string -} +type UEEventMME struct{} -// convertResultRows 将结果记录转实体结果组 -func (r *UEEventMME) convertResultRows(rows []map[string]any) []model.UEEventMME { - arr := make([]model.UEEventMME, 0) - 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 { +// SelectByPage 分页查询集合 +func (r UEEventMME) SelectByPage(querys model.UEEventMMEQuery) ([]model.UEEventMME, int64) { + tx := datasource.DB("").Model(&model.UEEventMME{}) // 查询条件拼接 - var conditions []string - var params []any if querys.NeType != "" { - conditions = append(conditions, "ne_type = ?") - params = append(params, querys.NeType) + tx = tx.Where("ne_type = ?", querys.NeType) } if querys.RmUID != "" { - conditions = append(conditions, "rm_uid = ?") - params = append(params, querys.RmUID) + tx = tx.Where("rm_uid = ?", querys.RmUID) } if querys.StartTime != "" { - conditions = append(conditions, "timestamp >= ?") - if len(querys.StartTime) == 13 { - querys.StartTime = querys.StartTime[:10] + startTime := querys.StartTime + if len(startTime) == 13 { + startTime = startTime[:10] } - params = append(params, querys.StartTime) + tx = tx.Where("timestamp >= ?", startTime) } if querys.EndTime != "" { - conditions = append(conditions, "timestamp <= ?") - if len(querys.EndTime) == 13 { - querys.EndTime = querys.EndTime[:10] + endTime := querys.EndTime + if len(endTime) == 13 { + endTime = endTime[:10] } - params = append(params, querys.EndTime) + tx = tx.Where("timestamp <= ?", endTime) } if querys.EventType != "" { eventTypes := strings.Split(querys.EventType, ",") - placeholder := repo.KeyPlaceholderByQuery(len(eventTypes)) - conditions = append(conditions, fmt.Sprintf("event_type in (%s)", placeholder)) - for _, eventType := range eventTypes { - params = append(params, eventType) - } + tx = tx.Where("event_type in ?", eventTypes) } if querys.IMSI != "" { - conditions = append(conditions, "JSON_EXTRACT(event_json, '$.imsi') = ?") - params = append(params, querys.IMSI) + tx = tx.Where("JSON_EXTRACT(event_json, '$.imsi') = ?", querys.IMSI) } - // 构建查询条件语句 - whereSql := "" - if len(conditions) > 0 { - whereSql += " where " + strings.Join(conditions, " and ") - } + // 查询结果 + var total int64 = 0 + rows := []model.UEEventMME{} - result := map[string]any{ - "total": 0, - "rows": []model.UEEventMME{}, + // 查询数量为0直接返回 + if err := tx.Count(&total).Error; err != nil || total <= 0 { + 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 != "" { - sortSql := querys.SortField - if querys.SortOrder != "" { - if querys.SortOrder == "desc" { - sortSql += " desc " - } else { - sortSql += " asc " - } + sortField := querys.SortField + if querys.SortOrder == "desc" { + sortField = sortField + " desc" } - orderSql = fmt.Sprintf(" order by id desc, %s ", sortSql) + tx = tx.Order(sortField) } - // 查询数据 - querySql := r.selectSql + whereSql + orderSql + pageSql - results, err := datasource.RawDB("", querySql, params) + // 查询数据分页 + pageNum, pageSize := datasource.PageNumSize(querys.PageNum, querys.PageSize) + tx = tx.Limit(pageSize).Offset(pageSize * pageNum) + err := tx.Find(&rows).Error if err != nil { - logger.Errorf("query err => %v", err) + logger.Errorf("query find err => %v", err.Error()) + return rows, total } - - // 转换实体 - result["rows"] = r.convertResultRows(results) - return result + return rows, total } // SelectByIds 通过ID查询 -func (r *UEEventMME) SelectByIds(ueIds []string) []model.UEEventMME { - placeholder := repo.KeyPlaceholderByQuery(len(ueIds)) - querySql := r.selectSql + " where id in (" + placeholder + ")" - parameters := repo.ConvertIdsSlice(ueIds) - results, err := datasource.RawDB("", querySql, parameters) - if err != nil { - logger.Errorf("query err => %v", err) - return []model.UEEventMME{} +func (r UEEventMME) SelectByIds(ids []string) []model.UEEventMME { + rows := []model.UEEventMME{} + if len(ids) <= 0 { + return rows } - // 转换实体 - return r.convertResultRows(results) + tx := datasource.DB("").Model(&model.UEEventMME{}) + // 构建查询条件 + 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 批量删除信息 -func (r *UEEventMME) DeleteByIds(ueIds []string) int64 { - placeholder := repo.KeyPlaceholderByQuery(len(ueIds)) - 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) +func (r UEEventMME) DeleteByIds(ids []string) int64 { + if len(ids) <= 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 } diff --git a/src/modules/network_data/service/ue_event_amf.go b/src/modules/network_data/service/ue_event_amf.go index 29fdec2d..8ba7cc3d 100644 --- a/src/modules/network_data/service/ue_event_amf.go +++ b/src/modules/network_data/service/ue_event_amf.go @@ -19,8 +19,8 @@ type UEEventAMF struct { } // SelectPage 根据条件分页查询 -func (r *UEEventAMF) SelectPage(querys model.UEEventAMFQuery) map[string]any { - return r.ueEventRepository.SelectPage(querys) +func (r *UEEventAMF) SelectPage(querys model.UEEventAMFQuery) ([]model.UEEventAMF, int64) { + return r.ueEventRepository.SelectByPage(querys) } // DeleteByIds 批量删除信息 diff --git a/src/modules/network_data/service/ue_event_mme.go b/src/modules/network_data/service/ue_event_mme.go index dd034b25..2768686f 100644 --- a/src/modules/network_data/service/ue_event_mme.go +++ b/src/modules/network_data/service/ue_event_mme.go @@ -18,8 +18,8 @@ type UEEventMME struct { } // SelectPage 根据条件分页查询 -func (r *UEEventMME) SelectPage(querys model.UEEventMMEQuery) map[string]any { - return r.ueEventRepository.SelectPage(querys) +func (r *UEEventMME) SelectPage(querys model.UEEventMMEQuery) ([]model.UEEventMME, int64) { + return r.ueEventRepository.SelectByPage(querys) } // DeleteByIds 批量删除信息