diff --git a/src/modules/network_data/repository/udm_user_info.go b/src/modules/network_data/repository/udm_user_info.go index 1c274373..259dd0ba 100644 --- a/src/modules/network_data/repository/udm_user_info.go +++ b/src/modules/network_data/repository/udm_user_info.go @@ -72,11 +72,15 @@ func (r *UDMUserInfo) SelectList(u model.UDMUserInfo) []model.UDMUserInfo { return rows } -// SelectByIMSIAndNeID 通过imsi和ne_id查询 +// SelectByIMSIAndNeID 通过imsi和ne_id查询 neId为%时模糊imsi查询 func (r *UDMUserInfo) SelectByIMSIAndNeID(imsi, neId string) model.UDMUserInfo { tx := datasource.DB("").Model(&model.UDMUserInfo{}) // 构建查询条件 - tx = tx.Where(" imsi = ? and ne_id = ?", imsi, neId) + if neId == "%" { + tx = tx.Where("imsi like concat(?, '%')", imsi) + } else { + tx = tx.Where(" imsi = ? and ne_id = ?", imsi, neId) + } // 查询数据 rows := []model.UDMUserInfo{} if err := tx.Limit(1).Find(&rows).Error; err != nil { @@ -97,20 +101,17 @@ func (r *UDMUserInfo) Inserts(uArr []model.UDMUserInfo) int64 { return tx.RowsAffected } -// Delete 删除实体 +// Delete 删除实体 neId为%时模糊imsi前缀 func (r *UDMUserInfo) Delete(imsi, neId string) int64 { - tx := datasource.DefaultDB().Where("imsi = ? and ne_id = ?", imsi, neId).Delete(&model.UDMUserInfo{}) + tx := datasource.DefaultDB() + if neId == "%" { + tx = tx.Where("imsi like concat(?, '%')", imsi) + } else { + tx = tx.Where(" imsi = ? and ne_id = ?", imsi, neId) + } + tx = tx.Delete(&model.UDMUserInfo{}) if err := tx.Error; err != nil { logger.Errorf("Delete err => %v", err) } return tx.RowsAffected } - -// DeletePrefixByIMSI 删除前缀匹配的实体 -func (r *UDMUserInfo) DeletePrefixByIMSI(imsiPrefix, neId string) int64 { - tx := datasource.DefaultDB().Where("imsi like concat(?, '%') and ne_id = ?", imsiPrefix, neId).Delete(&model.UDMUserInfo{}) - if err := tx.Error; err != nil { - logger.Errorf("DeletePrefixByIMSI err => %v", err) - } - return tx.RowsAffected -} diff --git a/src/modules/network_data/service/udm_sub.go b/src/modules/network_data/service/udm_sub.go index ba9b37d4..28c78fff 100644 --- a/src/modules/network_data/service/udm_sub.go +++ b/src/modules/network_data/service/udm_sub.go @@ -197,7 +197,7 @@ func (r *UDMSubUser) Insert(neId string, u model.UDMSubUser) int64 { r.udmSubRepository.Delete(u.IMSI, neId) // 新增到拓展信息 if u.Remark != "" { - r.udmUserInfoRepository.Delete(u.IMSI, neId) + r.udmUserInfoRepository.Delete(u.IMSI, "%") r.udmUserInfoRepository.Inserts([]model.UDMUserInfo{{ IMSI: u.IMSI, MSISDN: u.MSISDN, @@ -267,9 +267,9 @@ func (r *UDMSubUser) LoadData(neId, imsi, num, remark string) { // 删除原数据 r.udmSubRepository.Delete(keyIMSI, neId) if remark == "-(Deleted)-" { - r.udmUserInfoRepository.Delete(keyIMSI, neId) + r.udmUserInfoRepository.Delete(keyIMSI, "%") } - // 加载数据 + // 加载数据,删除标记为-(Deleted)-加载为空不插入 arr := r.dataByRedis(keyIMSI, neId) if len(arr) < 1 { continue diff --git a/src/modules/network_data/service/udm_user_info.go b/src/modules/network_data/service/udm_user_info.go index da610724..0c53a7df 100644 --- a/src/modules/network_data/service/udm_user_info.go +++ b/src/modules/network_data/service/udm_user_info.go @@ -16,7 +16,7 @@ type UDMUserInfo struct { udmUserInfoRepository *repository.UDMUserInfo } -// SelectByIMSIAndNeID 通过IMSI和网元标识查询信息 +// SelectByIMSIAndNeID 通过IMSI和网元标识查询信息 neId为%时模糊imsi查询 func (r *UDMUserInfo) SelectByIMSIAndNeID(imsi, neId string) model.UDMUserInfo { return r.udmUserInfoRepository.SelectByIMSIAndNeID(imsi, neId) } @@ -27,7 +27,7 @@ func (r *UDMUserInfo) Save(u model.UDMUserInfo) bool { return r.udmUserInfoRepository.Inserts([]model.UDMUserInfo{u}) > 0 } -// Delete 删除信息 +// Delete 删除信息 neId为%时模糊imsi查询 func (r *UDMUserInfo) Delete(imsi, neId string) int64 { return r.udmUserInfoRepository.Delete(imsi, neId) }