Merge remote-tracking branch 'origin/main' into multi-tenant

This commit is contained in:
TsMask
2024-12-25 17:51:42 +08:00
6 changed files with 32 additions and 31 deletions

View File

@@ -18,7 +18,7 @@ func InitConfig(configFile string) {
// 读取配置文件 // 读取配置文件
err := v.ReadInConfig() err := v.ReadInConfig()
if err != nil { if err != nil {
fmt.Printf("读取配置文件失败: %v \n", err) fmt.Printf("failure to read configuration file: %v \n", err)
return return
} }
} }

View File

@@ -149,9 +149,9 @@ gorm:
type: "mysql" type: "mysql"
host: "127.0.0.1" host: "127.0.0.1"
port: 3306 port: 3306
username: "<用户名>" username: "<username>"
password: "<密码>" password: "<password>"
database: "<数据库>" database: "<database>"
logging: false logging: false
# 多个数据源时可以用这个指定默认的数据源 # 多个数据源时可以用这个指定默认的数据源
defaultDataSourceName: "default" defaultDataSourceName: "default"
@@ -162,7 +162,7 @@ redis:
default: default:
port: 6379 # Redis port port: 6379 # Redis port
host: "127.0.0.1" # Redis host host: "127.0.0.1" # Redis host
password: "<密码>" password: "<password>"
db: 0 # Redis db_num db: 0 # Redis db_num
# 多个数据源时可以用这个指定默认的数据源 # 多个数据源时可以用这个指定默认的数据源
defaultDataSourceName: "default" defaultDataSourceName: "default"

View File

@@ -6,27 +6,27 @@ server:
# security 安全 # security 安全
security: security:
csrf: csrf:
# 允许调用的域名地址的例如http://<Referer地址>/ # 允许调用的域名地址的例如http://<Referer>/
refererWhiteList: refererWhiteList:
- "127.0.0.1" - "127.0.0.1"
- "<Referer地址>" - "<Referer>"
# GORM 数据源 # GORM 数据源
gorm: gorm:
dataSource: dataSource:
default: default:
type: "mysql" type: "mysql"
host: "<mysql地址>" host: "<mysql host>"
port: 3306 port: 3306
username: "<用户名>" username: "<mysql username>"
password: "<密码>" password: "<mysql password>"
database: "<数据库>" database: "<mysql database>"
# Redis 缓存数据 # Redis 缓存数据
redis: redis:
dataSource: dataSource:
default: default:
port: 6379 # Redis port port: 6379 # Redis port
host: "<redis地址>" host: "<redis host>"
password: "<密码>" password: "<redis password>"
db: 0 # Redis db_num db: 0 # Redis db_num

View File

@@ -72,11 +72,15 @@ func (r *UDMUserInfo) SelectList(u model.UDMUserInfo) []model.UDMUserInfo {
return rows return rows
} }
// SelectByIMSIAndNeID 通过imsi和ne_id查询 // SelectByIMSIAndNeID 通过imsi和ne_id查询 neId为%时模糊imsi查询
func (r *UDMUserInfo) SelectByIMSIAndNeID(imsi, neId string) model.UDMUserInfo { func (r *UDMUserInfo) SelectByIMSIAndNeID(imsi, neId string) model.UDMUserInfo {
tx := datasource.DB("").Model(&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{} rows := []model.UDMUserInfo{}
if err := tx.Limit(1).Find(&rows).Error; err != nil { 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 return tx.RowsAffected
} }
// Delete 删除实体 // Delete 删除实体 neId为%时模糊imsi前缀
func (r *UDMUserInfo) Delete(imsi, neId string) int64 { 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 { if err := tx.Error; err != nil {
logger.Errorf("Delete err => %v", err) logger.Errorf("Delete err => %v", err)
} }
return tx.RowsAffected 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
}

View File

@@ -187,7 +187,7 @@ func (r *UDMSubUser) Insert(neId string, u model.UDMSubUser) int64 {
r.udmSubRepository.Delete(u.IMSI, neId) r.udmSubRepository.Delete(u.IMSI, neId)
// 新增到拓展信息 // 新增到拓展信息
if u.Remark != "" { if u.Remark != "" {
r.udmUserInfoRepository.Delete(u.IMSI, neId) r.udmUserInfoRepository.Delete(u.IMSI, "%")
r.udmUserInfoRepository.Inserts([]model.UDMUserInfo{{ r.udmUserInfoRepository.Inserts([]model.UDMUserInfo{{
IMSI: u.IMSI, IMSI: u.IMSI,
MSISDN: u.MSISDN, MSISDN: u.MSISDN,
@@ -257,9 +257,9 @@ func (r *UDMSubUser) LoadData(neId, imsi, num, remark string) {
// 删除原数据 // 删除原数据
r.udmSubRepository.Delete(keyIMSI, neId) r.udmSubRepository.Delete(keyIMSI, neId)
if remark == "-(Deleted)-" { if remark == "-(Deleted)-" {
r.udmUserInfoRepository.Delete(keyIMSI, neId) r.udmUserInfoRepository.Delete(keyIMSI, "%")
} }
// 加载数据 // 加载数据,删除标记为-(Deleted)-加载为空不插入
arr := r.dataByRedis(keyIMSI, neId) arr := r.dataByRedis(keyIMSI, neId)
if len(arr) < 1 { if len(arr) < 1 {
continue continue

View File

@@ -16,7 +16,7 @@ type UDMUserInfo struct {
udmUserInfoRepository *repository.UDMUserInfo udmUserInfoRepository *repository.UDMUserInfo
} }
// SelectByIMSIAndNeID 通过IMSI和网元标识查询信息 // SelectByIMSIAndNeID 通过IMSI和网元标识查询信息 neId为%时模糊imsi查询
func (r *UDMUserInfo) SelectByIMSIAndNeID(imsi, neId string) model.UDMUserInfo { func (r *UDMUserInfo) SelectByIMSIAndNeID(imsi, neId string) model.UDMUserInfo {
return r.udmUserInfoRepository.SelectByIMSIAndNeID(imsi, neId) 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 return r.udmUserInfoRepository.Inserts([]model.UDMUserInfo{u}) > 0
} }
// Delete 删除信息 // Delete 删除信息 neId为%时模糊imsi查询
func (r *UDMUserInfo) Delete(imsi, neId string) int64 { func (r *UDMUserInfo) Delete(imsi, neId string) int64 {
return r.udmUserInfoRepository.Delete(imsi, neId) return r.udmUserInfoRepository.Delete(imsi, neId)
} }