package repository import ( "fmt" "be.ems/src/framework/database/db" "be.ems/src/framework/logger" "be.ems/src/modules/network_data/model" ) // 实例化数据层 UDMExtend 结构体 var NewUDMExtend = &UDMExtend{} // UDMExtend UDM鉴权信息表 数据层处理 type UDMExtend struct{} // SelectByPage 分页查询集合 func (r UDMExtend) SelectByPage(query map[string]string) ([]model.UDMExtend, int64) { tx := db.DB("").Model(&model.UDMExtend{}) // 查询条件拼接 if v, ok := query["imsi"]; ok && v != "" { tx = tx.Where("imsi like ?", fmt.Sprintf("%%%s%%", v)) } if v, ok := query["neId"]; ok && v != "" { tx = tx.Where("ne_id = ?", v) } // 查询结果 var total int64 = 0 rows := []model.UDMExtend{} // 查询数量为0直接返回 if err := tx.Count(&total).Error; err != nil || total <= 0 { return rows, total } // 排序 if v, ok := query["sortField"]; ok && v != "" { sortField := v if o, ok := query["sortOrder"]; ok && o != "" { sortField = sortField + " desc" } tx = tx.Order(sortField) } // 查询数据分页 pageNum, pageSize := db.PageNumSize(query["pageNum"], query["pageSize"]) tx = tx.Limit(pageSize).Offset(pageSize * pageNum) err := tx.Find(&rows).Error if err != nil { logger.Errorf("query find err => %v", err.Error()) return rows, total } return rows, total } // SelectList 根据实体查询 func (r *UDMExtend) SelectList(u model.UDMExtend) []model.UDMExtend { tx := db.DB("").Model(&model.UDMExtend{}) // 构建查询条件 if u.IMSI != "" { tx = tx.Where("imsi = ?", u.IMSI) } if u.NeId != "" { tx = tx.Where("ne_id = ?", u.NeId) } tx = tx.Order("imsi asc") // 查询数据 rows := []model.UDMExtend{} if err := tx.Find(&rows).Error; err != nil { logger.Errorf("query find err => %v", err.Error()) return rows } return rows } // SelectByIMSIAndNeID 通过imsi和ne_id查询 neId为%时模糊imsi查询 func (r *UDMExtend) SelectByIMSIAndNeID(imsi, neId string) model.UDMExtend { tx := db.DB("").Model(&model.UDMExtend{}) // 构建查询条件 if neId == "%" { tx = tx.Where("imsi like ?", fmt.Sprintf("%s%%", imsi)) } else { tx = tx.Where(" imsi = ? and ne_id = ?", imsi, neId) } // 查询数据 rows := []model.UDMExtend{} if err := tx.Limit(1).Find(&rows).Error; err != nil { logger.Errorf("query find err => %v", err.Error()) } if len(rows) > 0 { return rows[0] } return model.UDMExtend{} } // Insert 批量添加 func (r *UDMExtend) Inserts(uArr []model.UDMExtend) int64 { tx := db.DB("").CreateInBatches(uArr, 500) if err := tx.Error; err != nil { logger.Errorf("CreateInBatches err => %v", err) } return tx.RowsAffected } // Delete 删除实体 neId为%时模糊imsi前缀 func (r *UDMExtend) Delete(imsi, neId string) int64 { tx := db.DB("") if neId == "%" { tx = tx.Where("imsi like ?", fmt.Sprintf("%s%%", imsi)) } else { tx = tx.Where(" imsi = ? and ne_id = ?", imsi, neId) } tx = tx.Delete(&model.UDMExtend{}) if err := tx.Error; err != nil { logger.Errorf("Delete err => %v", err) } return tx.RowsAffected }