Merge branch 'main-v2' into lite-ba

This commit is contained in:
TsMask
2025-10-11 11:43:53 +08:00
5 changed files with 53 additions and 73 deletions

View File

@@ -446,7 +446,7 @@ func (s *UDMSubController) Removes(c *gin.Context) {
// 命令ok时
if strings.Contains(data, "ok") {
s.udmSubService.LoadData(neId, imsi, num, "-(Deleted)-")
s.udmSubService.LoadData(neId, imsi, num, "")
}
c.JSON(200, resp.OkData(data))
}

View File

@@ -2,7 +2,6 @@ package service
import (
"fmt"
"strconv"
"strings"
"time"
@@ -176,18 +175,13 @@ func (r *UDMAuthUser) Delete(imsi, neId string) int64 {
// LoadData 重新加载从imsi开始num的数据
func (r *UDMAuthUser) LoadData(neId, imsi, num string) {
startIMSI, _ := strconv.ParseInt(imsi, 10, 64)
subNum, _ := strconv.ParseInt(num, 10, 64)
var i int64
for i = 0; i < subNum; i++ {
keyIMSI := fmt.Sprintf("%015d", startIMSI+i)
// 删除原数据
r.udmAuthRepository.Delete(keyIMSI, neId)
// 直接删除前缀的记录
index := len(imsi) - len(num) - 1
prefix := imsi[:index]
r.udmAuthRepository.DeletePrefixByIMSI(prefix, neId)
// 加载数据
arr := r.dataByRedis(keyIMSI, neId)
if len(arr) < 1 {
continue
}
arr := r.dataByRedis(prefix+"*", neId)
if len(arr) > 0 {
r.udmAuthRepository.Inserts(arr)
}
}

View File

@@ -16,13 +16,13 @@ import (
// 实例化服务层 UDMSubUser 结构体
var NewUDMSubUser = &UDMSubUser{
udmSubRepository: repository.NewUDMSub,
UDMExtendRepository: repository.NewUDMExtend,
udmExtendRepository: repository.NewUDMExtend,
}
// UDM签约信息 服务层处理
type UDMSubUser struct {
udmSubRepository *repository.UDMSubUser // UDM签约信息数据信息
UDMExtendRepository *repository.UDMExtend // UDM用户IMSI信息数据信息
udmExtendRepository *repository.UDMExtend // UDM用户IMSI信息数据信息
}
// dataByRedis UDM签约用户 db:0 中 udm-sd:*
@@ -182,7 +182,7 @@ func (r *UDMSubUser) ParseInfo(imsi, neId string, data map[string]string) model.
}
// 补充用户拓展信息
info := r.UDMExtendRepository.SelectByIMSIAndNeID(imsi, neId)
info := r.udmExtendRepository.SelectByIMSIAndNeID(imsi, neId)
if info.IMSI == imsi {
u.Remark = info.Remark
}
@@ -207,8 +207,8 @@ func (r *UDMSubUser) Insert(neId string, u model.UDMSubUser) int64 {
r.udmSubRepository.Delete(u.IMSI, neId)
// 新增到拓展信息
if u.Remark != "" {
r.UDMExtendRepository.Delete(u.IMSI, "%")
r.UDMExtendRepository.Inserts([]model.UDMExtend{{
r.udmExtendRepository.Delete(u.IMSI, "%")
r.udmExtendRepository.Inserts([]model.UDMExtend{{
IMSI: u.IMSI,
MSISDN: u.MSISDN,
NeId: u.NeId,
@@ -262,43 +262,44 @@ func (r *UDMSubUser) InsertData(neId, dataType string, data any) int64 {
// Delete 删除单个不重新加载
func (r *UDMSubUser) Delete(neId, imsi string) int64 {
// 删除拓展信息
r.UDMExtendRepository.Delete(imsi, neId)
r.udmExtendRepository.Delete(imsi, neId)
return r.udmSubRepository.Delete(imsi, neId)
}
// LoadData 重新加载从imsi开始num的数据
// remark不为空则新增到拓展信息删除标记为-(Deleted)-
func (r *UDMSubUser) LoadData(neId, imsi, num, remark string) {
startIMSI, _ := strconv.ParseInt(imsi, 10, 64)
subNum, _ := strconv.ParseInt(num, 10, 64)
var i int64
for i = 0; i < subNum; i++ {
keyIMSI := fmt.Sprintf("%015d", startIMSI+i)
// 删除原数据
r.udmSubRepository.Delete(keyIMSI, neId)
if remark == "-(Deleted)-" {
r.UDMExtendRepository.Delete(keyIMSI, "%")
}
// 加载数据,删除标记为-(Deleted)-加载为空不插入
arr := r.dataByRedis(keyIMSI, neId)
if len(arr) < 1 {
continue
}
r.udmSubRepository.Inserts(arr)
// 直接删除前缀的记录
index := len(imsi) - len(num) - 1
prefix := imsi[:index]
r.udmSubRepository.DeletePrefixByIMSI(prefix, neId)
// 加载数据
arr := r.dataByRedis(prefix+"*", neId)
if len(arr) > 0 {
// 拓展信息
if remark != "" {
startIMSI, _ := strconv.ParseInt(imsi, 10, 64)
endIMSI := startIMSI + subNum
uarr := make([]model.UDMExtend, 0, len(arr))
for _, v := range arr {
itemIMSI, err := strconv.ParseInt(v.IMSI, 10, 64)
if err != nil {
continue
}
// 只处理在范围内的IMSI
if itemIMSI >= startIMSI && itemIMSI < endIMSI {
uarr = append(uarr, model.UDMExtend{
NeId: v.NeId,
IMSI: v.IMSI,
MSISDN: v.MSISDN,
NeId: v.NeId,
Remark: remark,
})
r.udmExtendRepository.Delete(v.IMSI, neId)
}
r.UDMExtendRepository.Delete(keyIMSI, neId)
r.UDMExtendRepository.Inserts(uarr)
}
r.udmExtendRepository.Inserts(uarr)
}
r.udmSubRepository.Inserts(arr)
}
}

View File

@@ -2,7 +2,6 @@ package service
import (
"fmt"
"strconv"
"strings"
"time"
@@ -165,18 +164,13 @@ func (r UDMVOIPUser) Delete(username, neId string) int64 {
// LoadData 重新加载从username开始num的数据
func (r UDMVOIPUser) LoadData(neId, username, num string) {
startUserName, _ := strconv.ParseInt(username, 10, 64)
subNum, _ := strconv.ParseInt(num, 10, 64)
var i int64
for i = 0; i < subNum; i++ {
keyUserName := fmt.Sprintf("%d", startUserName+i)
// 删除原数据
r.udmVOIPRepository.Delete(keyUserName, neId)
// 直接删除前缀的记录
index := len(username) - len(num) - 1
prefix := username[:index]
r.udmVOIPRepository.DeletePrefixByUserName(prefix, neId)
// 加载数据
arr := r.dataByRedis(keyUserName, neId)
if len(arr) < 1 {
continue
}
arr := r.dataByRedis(prefix+"*", neId)
if len(arr) > 0 {
r.udmVOIPRepository.Inserts(arr)
}
}

View File

@@ -2,7 +2,6 @@ package service
import (
"fmt"
"strconv"
"strings"
"time"
@@ -187,21 +186,13 @@ func (r UDMVolteIMSUser) Delete(imsi, neId string) int64 {
// LoadData 重新加载从imsi开始num的数据
func (r UDMVolteIMSUser) LoadData(neId, imsiOrMsisdn, num string) {
startIMSIOrMsisdn, _ := strconv.ParseInt(imsiOrMsisdn, 10, 64)
subNum, _ := strconv.ParseInt(num, 10, 64)
var i int64
for i = 0; i < subNum; i++ {
keyIMSI := fmt.Sprintf("%015d", startIMSIOrMsisdn+i)
if !strings.HasPrefix(imsiOrMsisdn, "0") {
keyIMSI = fmt.Sprintf("%d", startIMSIOrMsisdn+i)
}
// 删除原数据
r.udmVolteIMSRepository.Delete(keyIMSI, neId)
// 直接删除前缀的记录
index := len(imsiOrMsisdn) - len(num) - 1
prefix := imsiOrMsisdn[:index]
r.udmVolteIMSRepository.DeletePrefixByIMSI(prefix, neId)
// 加载数据
arr := r.dataByRedis(keyIMSI+":*", neId)
if len(arr) < 1 {
continue
}
arr := r.dataByRedis(prefix+"*", neId)
if len(arr) > 0 {
r.udmVolteIMSRepository.Inserts(arr)
}
}