ref: 多core表结构和代码调整修改

This commit is contained in:
TsMask
2025-06-10 17:50:54 +08:00
parent c7501a952d
commit cfe6ab61e3
189 changed files with 2159 additions and 3195 deletions

View File

@@ -23,13 +23,13 @@ type UDMVOIPUser struct {
}
// dataByRedis UDMVOIP用户 db:0 中 voip:*
func (r UDMVOIPUser) dataByRedis(username, neId string) []model.UDMVOIPUser {
func (r UDMVOIPUser) dataByRedis(coreUid, neUid, username string) []model.UDMVOIPUser {
arr := []model.UDMVOIPUser{}
key := fmt.Sprintf("voip:%s", username)
source := fmt.Sprintf("UDM_%s", neId)
source := fmt.Sprintf("UDM_%s", neUid)
// 网元主机的Redis客户端
redisClient, err := neService.NewNeInfo.NeRunRedisClient("UDM", neId)
redisClient, err := neService.NewNeInfo.NeRunRedisClient(coreUid, neUid)
if err != nil {
return arr
}
@@ -56,7 +56,9 @@ func (r UDMVOIPUser) dataByRedis(username, neId string) []model.UDMVOIPUser {
}
a := model.UDMVOIPUser{
NeId: neId,
CoreUID: coreUid,
NeUID: neUid,
NeType: "UDM",
UserName: username,
Password: m["password"],
}
@@ -66,22 +68,24 @@ func (r UDMVOIPUser) dataByRedis(username, neId string) []model.UDMVOIPUser {
}
// ResetData 重置VOIP用户数据清空数据库重新同步Redis数据
func (r UDMVOIPUser) ResetData(neId string) int64 {
arr := r.dataByRedis("*", neId)
func (r UDMVOIPUser) ResetData(coreUid, neUid string) int64 {
arr := r.dataByRedis(coreUid, neUid, "*")
// 数据清空后添加
go r.udmVOIPRepository.ClearAndInsert(neId, arr)
go r.udmVOIPRepository.ClearAndInsert(coreUid, neUid, arr)
return int64(len(arr))
}
// ParseInfo 解析单个用户userName信息 data从命令MML得到的结果
func (r UDMVOIPUser) ParseInfo(neId string, data map[string]string) model.UDMVOIPUser {
func (r UDMVOIPUser) ParseInfo(coreUid, neUid string, data map[string]string) model.UDMVOIPUser {
u := model.UDMVOIPUser{
NeId: neId,
CoreUID: coreUid,
NeUID: neUid,
NeType: "UDM",
UserName: data["username"],
Password: data["password"],
}
// 赋予ID
item := r.udmVOIPRepository.SelectByUserNameAndNeID(u.UserName, neId)
item := r.udmVOIPRepository.SelectByUserName(coreUid, neUid, u.UserName)
if item.ID != "" {
u.ID = item.ID
}
@@ -99,17 +103,17 @@ func (r UDMVOIPUser) Find(u model.UDMVOIPUser) []model.UDMVOIPUser {
}
// Insert 从数据中读取后删除username再存入数据库
func (r UDMVOIPUser) Insert(neId string, username string) int64 {
uArr := r.dataByRedis(username, neId)
func (r UDMVOIPUser) Insert(coreUid, neUid string, username string) int64 {
uArr := r.dataByRedis(coreUid, neUid, username)
if len(uArr) > 0 {
r.udmVOIPRepository.Delete(username, neId)
r.udmVOIPRepository.DeleteByUserName(coreUid, neUid, username)
return r.udmVOIPRepository.Inserts(uArr)
}
return 0
}
// InsertData 导入文件数据 dataType目前两种txt/csv
func (r UDMVOIPUser) InsertData(neId, dataType string, data any) int64 {
func (r UDMVOIPUser) InsertData(coreUid, neUid, dataType string, data any) int64 {
// imsi截取前缀,重新获取部分数据
prefixes := make(map[string]struct{})
@@ -138,9 +142,9 @@ func (r UDMVOIPUser) InsertData(neId, dataType string, data any) int64 {
var num int64 = 0
for prefix := range prefixes {
// 直接删除前缀的记录
r.udmVOIPRepository.DeletePrefixByUserName(prefix, neId)
r.udmVOIPRepository.DeletePrefixByUserName(coreUid, neUid, prefix)
// keys voip:4600001000004*
arr := r.dataByRedis(prefix+"*", neId)
arr := r.dataByRedis(coreUid, neUid, prefix+"*")
if len(arr) > 0 {
num += r.udmVOIPRepository.Inserts(arr)
}
@@ -149,21 +153,20 @@ func (r UDMVOIPUser) InsertData(neId, dataType string, data any) int64 {
}
// Delete 删除单个不重新加载
func (r UDMVOIPUser) Delete(username, neId string) int64 {
return r.udmVOIPRepository.Delete(username, neId)
func (r UDMVOIPUser) Delete(coreUid, neUid, username string) int64 {
return r.udmVOIPRepository.DeleteByUserName(coreUid, neUid, username)
}
// LoadData 重新加载从username开始num的数据
func (r UDMVOIPUser) LoadData(neId, username, num string) {
func (r UDMVOIPUser) LoadData(coreUid, neUid, username string, num int64) {
startUserName, _ := strconv.ParseInt(username, 10, 64)
subNum, _ := strconv.ParseInt(num, 10, 64)
var i int64
for i = 0; i < subNum; i++ {
for i = 0; i < num; i++ {
keyUserName := fmt.Sprintf("%d", startUserName+i)
// 删除原数据
r.udmVOIPRepository.Delete(keyUserName, neId)
r.udmVOIPRepository.DeleteByUserName(coreUid, neUid, keyUserName)
// 加载数据
arr := r.dataByRedis(keyUserName, neId)
arr := r.dataByRedis(coreUid, neUid, keyUserName)
if len(arr) < 1 {
continue
}