1
0

marge: 合并代码

This commit is contained in:
TsMask
2023-11-13 18:28:13 +08:00
parent 6caf373ab5
commit 21a5e210eb
77 changed files with 1001 additions and 664 deletions

View File

@@ -77,7 +77,7 @@ type DatabaseClient struct {
var DbClient DatabaseClient
func InitDbClient(dbType, dbUser, dbPassword, dbHost, dbPort, dbName string) error {
DbClient.dbUrl = fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=true&loc=Local",
DbClient.dbUrl = fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=true&loc=Local",
dbUser, dbPassword, dbHost, dbPort, dbName)
DbClient.dbType = dbType
DbClient.dbConnMaxLifetime = 0
@@ -86,7 +86,7 @@ func InitDbClient(dbType, dbUser, dbPassword, dbHost, dbPort, dbName string) err
if log.GetLevel() == log.LOG_TRACE {
DbClient.IsShowSQL = true
}
log.Debugf("dbType:%s dbUrl:%s:******@tcp(%s:%s)/%s??charset=utf8&parseTime=true&loc=Local",
log.Debugf("dbType:%s dbUrl:%s:******@tcp(%s:%s)/%s??charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=true&loc=Local",
dbType, dbUser, dbHost, dbPort, dbName)
var err error

View File

@@ -129,7 +129,7 @@ type DatabaseClient struct {
var DbClient DatabaseClient
func InitDbClient(dbType, dbUser, dbPassword, dbHost, dbPort, dbName string) error {
DbClient.dbUrl = fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=true&loc=Local",
DbClient.dbUrl = fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=true&loc=Local",
dbUser, dbPassword, dbHost, dbPort, dbName)
DbClient.dbType = dbType
DbClient.dbConnMaxLifetime = 0
@@ -138,7 +138,7 @@ func InitDbClient(dbType, dbUser, dbPassword, dbHost, dbPort, dbName string) err
if log.GetLevel() == log.LOG_TRACE {
DbClient.IsShowSQL = true
}
log.Debugf("dbType:%s dbUrl:%s:******@tcp(%s:%s)/%s??charset=utf8&parseTime=true&loc=Local",
log.Debugf("dbType:%s dbUrl:%s:******@tcp(%s:%s)/%s??charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=true&loc=Local",
dbType, dbUser, dbHost, dbPort, dbName)
var err error
@@ -159,9 +159,9 @@ func InitDbClient(dbType, dbUser, dbPassword, dbHost, dbPort, dbName string) err
}
func XormConnectDatabase(dbType, dbUser, dbPassword, dbHost, dbPort, dbName string) (*xorm.Engine, error) {
sqlStr := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=true&loc=Local",
sqlStr := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=true&loc=Local",
dbUser, dbPassword, dbHost, dbPort, dbName)
log.Debugf("dbType:%s Connect to:%s:******@tcp(%s:%s)/%s?charset=utf8&parseTime=true&loc=Local",
log.Debugf("dbType:%s Connect to:%s:******@tcp(%s:%s)/%s?charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=true&loc=Local",
dbType, dbUser, dbHost, dbPort, dbName)
var err error
xEngine, err = xorm.NewEngine(dbType, sqlStr) //1、Create xorm engine

View File

@@ -51,7 +51,7 @@ var DbClient DatabaseClient
// }
func InitDbClient(dbType, dbUser, dbPassword, dbHost, dbPort, dbName string) error {
DbClient.dbUrl = fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=true&loc=Local",
DbClient.dbUrl = fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=true&loc=Local",
dbUser, dbPassword, dbHost, dbPort, dbName)
DbClient.dbType = dbType
DbClient.dbConnMaxLifetime = 0
@@ -60,7 +60,7 @@ func InitDbClient(dbType, dbUser, dbPassword, dbHost, dbPort, dbName string) err
if log.GetLevel() == log.LOG_TRACE {
DbClient.IsShowSQL = true
}
log.Debugf("dbType:%s dbUrl:%s:******@tcp(%s:%s)/%s??charset=utf8&parseTime=true&loc=Local",
log.Debugf("dbType:%s dbUrl:%s:******@tcp(%s:%s)/%s??charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=true&loc=Local",
dbType, dbUser, dbHost, dbPort, dbName)
var err error

View File

@@ -94,7 +94,7 @@ type DatabaseClient struct {
var DbClient DatabaseClient
func InitDbClient(dbType, dbUser, dbPassword, dbHost, dbPort, dbName string) error {
DbClient.dbUrl = fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=true&loc=Local",
DbClient.dbUrl = fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=true&loc=Local",
dbUser, dbPassword, dbHost, dbPort, dbName)
DbClient.dbType = dbType
DbClient.dbConnMaxLifetime = 0
@@ -103,7 +103,7 @@ func InitDbClient(dbType, dbUser, dbPassword, dbHost, dbPort, dbName string) err
if log.GetLevel() == log.LOG_TRACE {
DbClient.IsShowSQL = true
}
log.Debugf("dbType:%s dbUrl:%s:******@tcp(%s:%s)/%s??charset=utf8&parseTime=true&loc=Local",
log.Debugf("dbType:%s dbUrl:%s:******@tcp(%s:%s)/%s??charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=true&loc=Local",
dbType, dbUser, dbHost, dbPort, dbName)
var err error
@@ -124,9 +124,9 @@ func InitDbClient(dbType, dbUser, dbPassword, dbHost, dbPort, dbName string) err
}
func XormConnectDatabase(dbType, dbUser, dbPassword, dbHost, dbPort, dbName string) (*xorm.Engine, error) {
sqlStr := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=true&loc=Local",
sqlStr := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=true&loc=Local",
dbUser, dbPassword, dbHost, dbPort, dbName)
log.Debugf("dbType:%s Connect to:%s:******@tcp(%s:%s)/%s?charset=utf8&parseTime=true&loc=Local",
log.Debugf("dbType:%s Connect to:%s:******@tcp(%s:%s)/%s?charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=true&loc=Local",
dbType, dbUser, dbHost, dbPort, dbName)
var err error
xEngine, err = xorm.NewEngine(dbType, sqlStr) //1、Create xorm engine

View File

@@ -52,7 +52,7 @@ var dbConfig = config.GetYamlConfig().Database
func DatabaseWhoreBackup() {
// MySQL数据库连接信息
sqlStr := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=true&loc=Local",
sqlStr := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=true&loc=Local",
dbConfig.User, dbConfig.Password, dbConfig.Host, dbConfig.Port, dbConfig.Name)
db, err := sql.Open("mysql", sqlStr)
if err != nil {
@@ -91,7 +91,7 @@ func DatabaseWhoreBackup() {
func DatabaseIncrementalBackup() {
// MySQL数据库连接信息
sqlStr := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=true&loc=Local",
sqlStr := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=true&loc=Local",
dbConfig.User, dbConfig.Password, dbConfig.Host, dbConfig.Port, dbConfig.Name)
db, err := sql.Open("mysql", sqlStr)
if err != nil {

View File

@@ -92,12 +92,12 @@ func (r *ServiceSysConfig) DeleteConfigByIds(configIds []string) (int64, error)
// 检查是否存在
configs := r.sysConfigRepository.SelectConfigByIds(configIds)
if len(configs) <= 0 {
return 0, errors.New("没有权限访问参数配置数据!")
return 0, errors.New("does not have permission to access parameter configuration data")
}
for _, config := range configs {
// 检查是否为内置参数
if config.ConfigType == "Y" {
return 0, errors.New(config.ConfigID + " 配置参数属于内置参数,禁止删除!")
return 0, errors.New(config.ConfigID + " Configuration parameters are built-in parameters and their deletion is prohibited!")
}
// 清除缓存
r.clearConfigCache(config.ConfigKey)
@@ -106,7 +106,7 @@ func (r *ServiceSysConfig) DeleteConfigByIds(configIds []string) (int64, error)
rows := r.sysConfigRepository.DeleteConfigByIds(configIds)
return rows, nil
}
return 0, errors.New("删除参数配置信息失败!")
return 0, errors.New("failed to delete parameter configuration information")
}
// ResetConfigCache 重置参数缓存数据

View File

@@ -78,7 +78,7 @@ func (r *ServiceSysDictData) DeleteDictDataByCodes(dictCodes []string) (int64, e
// 检查是否存在
dictDatas := r.sysDictDataRepository.SelectDictDataByCodes(dictCodes)
if len(dictDatas) <= 0 {
return 0, errors.New("没有权限访问字典编码数据!")
return 0, errors.New("does not have permission to access dictionary-encoded data")
}
if len(dictDatas) == len(dictCodes) {
for _, v := range dictDatas {
@@ -89,7 +89,7 @@ func (r *ServiceSysDictData) DeleteDictDataByCodes(dictCodes []string) (int64, e
rows := r.sysDictDataRepository.DeleteDictDataByCodes(dictCodes)
return rows, nil
}
return 0, errors.New("删除字典数据信息失败!")
return 0, errors.New("failed to delete dictionary data information")
}
// InsertDictData 新增字典数据信息

View File

@@ -108,13 +108,13 @@ func (r *ServiceSysDictType) DeleteDictTypeByIDs(dictIDs []string) (int64, error
// 检查是否存在
dictTypes := r.sysDictTypeRepository.SelectDictTypeByIDs(dictIDs)
if len(dictTypes) <= 0 {
return 0, errors.New("没有权限访问字典类型数据!")
return 0, errors.New("no permission to access dictionary type data")
}
for _, v := range dictTypes {
// 字典类型下级含有数据
useCount := r.sysDictDataRepository.CountDictDataByType(v.DictType)
if useCount > 0 {
msg := fmt.Sprintf("%s】存在字典数据,不能删除", v.DictName)
msg := fmt.Sprintf("[%s] Dictionary data exists and cannot be deleted. ", v.DictName)
return 0, errors.New(msg)
}
// 清除缓存
@@ -124,7 +124,7 @@ func (r *ServiceSysDictType) DeleteDictTypeByIDs(dictIDs []string) (int64, error
rows := r.sysDictTypeRepository.DeleteDictTypeByIDs(dictIDs)
return rows, nil
}
return 0, errors.New("删除字典数据信息失败!")
return 0, errors.New("failed to delete dictionary data information")
}
// ResetDictCache 重置字典缓存数据

View File

@@ -97,17 +97,17 @@ func (r *ServiceSysRole) DeleteRoleByIds(roleIds []string) (int64, error) {
// 检查是否存在
roles := r.sysRoleRepository.SelectRoleByIds(roleIds)
if len(roles) <= 0 {
return 0, errors.New("没有权限访问角色数据!")
return 0, errors.New("no permission to access role data")
}
for _, role := range roles {
// 检查是否为已删除
if role.DelFlag == "1" {
return 0, errors.New(role.RoleID + " 角色信息已经删除!")
return 0, errors.New(role.RoleID + " The character information has been deleted")
}
// 检查分配用户
userCount := r.sysUserRoleRepository.CountUserRoleByRoleId(role.RoleID)
if userCount > 0 {
msg := fmt.Sprintf("%s】已分配给用户,不能删除", role.RoleName)
msg := fmt.Sprintf("[%s] has been assigned to a user and cannot be deleted", role.RoleName)
return 0, errors.New(msg)
}
}
@@ -117,7 +117,7 @@ func (r *ServiceSysRole) DeleteRoleByIds(roleIds []string) (int64, error) {
rows := r.sysRoleRepository.DeleteRoleByIds(roleIds)
return rows, nil
}
return 0, errors.New("删除角色信息失败!")
return 0, errors.New("failed to delete role information")
}
// CheckUniqueRoleName 校验角色名称是否唯一

View File

@@ -103,7 +103,7 @@ func (r *ServiceSysUser) DeleteUserByIds(userIds []string) (int64, error) {
// 检查是否存在
users := r.sysUserRepository.SelectUserByIds(userIds)
if len(users) <= 0 {
return 0, errors.New("没有权限访问用户数据!")
return 0, errors.New("no permission to access user data")
}
if len(users) == len(userIds) {
// 删除用户与角色关联
@@ -113,7 +113,7 @@ func (r *ServiceSysUser) DeleteUserByIds(userIds []string) (int64, error) {
rows := r.sysUserRepository.DeleteUserByIds(userIds)
return rows, nil
}
return 0, errors.New("删除用户信息失败!")
return 0, errors.New("failed to delete user information")
}
// CheckUniqueUserName 校验用户名称是否唯一

View File

@@ -104,7 +104,7 @@ func Routers() []services.RouterItem {
Method: "POST",
Pattern: "/subSave/{neId}",
Handler: apis.UdmSubUserSave,
Middleware: midware.LogOperate(collectlogs.OptionNew("UDM contracted users", collectlogs.BUSINESS_TYPE_INSERT)),
Middleware: midware.LogOperate(collectlogs.OptionNew("UDM Contracted User", collectlogs.BUSINESS_TYPE_INSERT)),
},
{
Method: "GET",
@@ -116,55 +116,55 @@ func Routers() []services.RouterItem {
Method: "POST",
Pattern: "/sub/{neId}",
Handler: apis.UdmSubUserAdd,
Middleware: midware.LogOperate(collectlogs.OptionNew("UDM contracted users", collectlogs.BUSINESS_TYPE_INSERT)),
Middleware: midware.LogOperate(collectlogs.OptionNew("UDM Contracted User", collectlogs.BUSINESS_TYPE_INSERT)),
},
{
Method: "POST",
Pattern: "/sub/{neId}/{num}",
Handler: apis.UdmSubUserAdds,
Middleware: midware.LogOperate(collectlogs.OptionNew("UDM contracted users", collectlogs.BUSINESS_TYPE_INSERT)),
Middleware: midware.LogOperate(collectlogs.OptionNew("UDM Contracted User", collectlogs.BUSINESS_TYPE_INSERT)),
},
{
Method: "PUT",
Pattern: "/sub/{neId}",
Handler: apis.UdmSubUserEdit,
Middleware: midware.LogOperate(collectlogs.OptionNew("UDM contracted users", collectlogs.BUSINESS_TYPE_UPDATE)),
Middleware: midware.LogOperate(collectlogs.OptionNew("UDM Contracted User", collectlogs.BUSINESS_TYPE_UPDATE)),
},
{
Method: "PUT",
Pattern: "/sub4gIP/{neId}",
Handler: apis.UdmSubUser4GIP,
Middleware: midware.LogOperate(collectlogs.OptionNew("UDM contracted users", collectlogs.BUSINESS_TYPE_UPDATE)),
Middleware: midware.LogOperate(collectlogs.OptionNew("UDM Contracted User", collectlogs.BUSINESS_TYPE_UPDATE)),
},
{
Method: "PUT",
Pattern: "/subSmData/{neId}",
Handler: apis.UdmSubUserSmData,
Middleware: midware.LogOperate(collectlogs.OptionNew("UDM contracted users", collectlogs.BUSINESS_TYPE_UPDATE)),
Middleware: midware.LogOperate(collectlogs.OptionNew("UDM Contracted User", collectlogs.BUSINESS_TYPE_UPDATE)),
},
{
Method: "DELETE",
Pattern: "/sub/{neId}/{imsi}",
Handler: apis.UdmSubUserRemove,
Middleware: midware.LogOperate(collectlogs.OptionNew("UDM contracted users", collectlogs.BUSINESS_TYPE_DELETE)),
Middleware: midware.LogOperate(collectlogs.OptionNew("UDM Contracted User", collectlogs.BUSINESS_TYPE_DELETE)),
},
{
Method: "DELETE",
Pattern: "/sub/{neId}/{imsi}/{num}",
Handler: apis.UdmSubUserRemoves,
Middleware: midware.LogOperate(collectlogs.OptionNew("UDM contracted users", collectlogs.BUSINESS_TYPE_DELETE)),
Middleware: midware.LogOperate(collectlogs.OptionNew("UDM Contracted User", collectlogs.BUSINESS_TYPE_DELETE)),
},
{
Method: "POST",
Pattern: "/subExport",
Handler: apis.UdmSubUserExport,
Middleware: midware.LogOperate(collectlogs.OptionNew("UDM contracted users", collectlogs.BUSINESS_TYPE_EXPORT)),
Middleware: midware.LogOperate(collectlogs.OptionNew("UDM Contracted User", collectlogs.BUSINESS_TYPE_EXPORT)),
},
{
Method: "POST",
Pattern: "/subImport/{neId}",
Handler: apis.UdmSubUserImport,
Middleware: midware.LogOperate(collectlogs.OptionNew("UDM contracted users", collectlogs.BUSINESS_TYPE_IMPORT)),
Middleware: midware.LogOperate(collectlogs.OptionNew("UDM Contracted User", collectlogs.BUSINESS_TYPE_IMPORT)),
},
// 添加更多的 Router 对象...
}
@@ -344,7 +344,7 @@ func (s *UdmUserApi) UdmAuthUserAdds(w http.ResponseWriter, r *http.Request) {
return
}
msg := fmt.Sprintf("bad authdat:start_imsi=%s,sub_num=%s,ki=%s,amf=%s,algo=%s", body.Imsi, num, body.Ki, body.Amf, body.AlgoIndex)
msg := fmt.Sprintf("bad authdat:start_imsi=%s,sub_num=%s,ki=%s,amf=%s,algo=%s,opc=%s", body.Imsi, num, body.Ki, body.Amf, body.AlgoIndex, body.Opc)
// 发送MML
data, err := mmlclient.MMLSendMsgToString(neInfo.Ip, msg)
@@ -511,9 +511,9 @@ func (s *UdmUserApi) UdmAuthUserExport(w http.ResponseWriter, r *http.Request) {
if body.Type == "csv" {
// 转换数据
data := [][]string{}
data = append(data, []string{"imsi", "ki", "amf", "algo", "opc"})
data = append(data, []string{"imsi", "ki", "algo", "amf", "opc"})
for _, v := range list {
data = append(data, []string{v.Imsi, v.Ki, v.Amf, v.AlgoIndex, v.Opc})
data = append(data, []string{v.Imsi, v.Ki, v.AlgoIndex, v.Amf, v.Opc})
}
// 输出到文件
err := file.WriterCSVFile(data, filePath)
@@ -527,7 +527,7 @@ func (s *UdmUserApi) UdmAuthUserExport(w http.ResponseWriter, r *http.Request) {
// 转换数据
data := [][]string{}
for _, v := range list {
data = append(data, []string{v.Imsi, v.Ki, v.Amf, v.AlgoIndex, v.Opc})
data = append(data, []string{v.Imsi, v.Ki, v.AlgoIndex, v.Amf, v.Opc})
}
// 输出到文件
err = file.WriterTxtFile(data, filePath)
@@ -661,40 +661,48 @@ func (s *UdmUserApi) UdmSubUserInfo(w http.ResponseWriter, r *http.Request) {
return
}
// 查询数据库是否存在并存入
// 解析返回的数据
cnType, _ := strconv.ParseInt(data["CNType"][:4], 0, 64)
rat, _ := strconv.ParseInt(data["RAT"][:4], 0, 64)
msisdn := data["MSISDN"]
imsMsisdnLen := strings.Index(msisdn, ",")
if imsMsisdnLen != -1 {
msisdn = msisdn[:imsMsisdnLen]
}
userInfo := model.UdmSubUser{
Imsi: imsi,
Msisdn: msisdn,
Ambr: data["AMBR"],
Arfb: data["AreaForbidden"],
Cn: fmt.Sprint(cnType),
SmData: data["SM-Data(snssai+dnn[1..n])"],
Sar: data["ServiceAreaRestriction"],
Nssai: data["NSSAI"],
SmfSel: data["Smf-Selection"],
Rat: fmt.Sprint(rat),
}
// 1,64,24,65,def_eps,1,2,010200000000,-
if v, ok := data["EPS-Data"]; ok {
userInfo.EpsDat = v
arr := strings.Split(v, ",")
userInfo.EpsFlag = arr[0]
userInfo.EpsOdb = arr[1]
userInfo.HplmnOdb = arr[2]
userInfo.Ard = arr[3]
userInfo.Epstpl = arr[4]
userInfo.ContextId = arr[5]
userInfo.ApnContext = arr[7]
userInfo.StaticIp = arr[8]
}
// 查询数据库是否存在并存入更新
neId = ""
var userInfo model.UdmSubUser
list := s.subUser.List(model.UdmSubUser{NeID: neId, Imsi: imsi})
if len(list) > 0 {
userInfo = list[0]
listItme := list[0]
userInfo.ID = listItme.ID
s.subUser.Update(neId, userInfo)
} else {
cnType, _ := strconv.ParseInt(data["CNType"][:4], 0, 64)
rat, _ := strconv.ParseInt(data["RAT"][:4], 0, 64)
userInfo := model.UdmSubUser{
Imsi: imsi,
Msisdn: data["MSISDN"],
Ambr: data["AMBR"],
Arfb: data["AreaForbidden"],
Cn: fmt.Sprint(cnType),
SmData: data["SM-Data(snssai+dnn[1..n])"],
Sar: data["ServiceAreaRestriction"],
Nssai: data["NSSAI"],
SmfSel: data["Smf-Selection"],
Rat: fmt.Sprint(rat),
}
// 1,64,24,65,def_eps,1,2,010200000000,-
if v, ok := data["EPS-Data"]; ok {
userInfo.EpsDat = v
arr := strings.Split(v, ",")
userInfo.EpsFlag = arr[0]
userInfo.EpsOdb = arr[1]
userInfo.HplmnOdb = arr[2]
userInfo.Ard = arr[3]
userInfo.Epstpl = arr[4]
userInfo.ContextId = arr[5]
userInfo.ApnContext = arr[7]
userInfo.StaticIp = arr[8]
}
s.subUser.Insert(neId, userInfo)
}
ctx.JSON(w, 200, result.OkData(userInfo))
@@ -1102,9 +1110,10 @@ func (s *UdmUserApi) UdmSubUserExport(w http.ResponseWriter, r *http.Request) {
if body.Type == "csv" {
// 转换数据
data := [][]string{}
data = append(data, []string{"imsi", "msisdn", "ambr", "arfb", "sar", "rat", "cn", "smf_sel", "sm_dat", "eps_dat"})
data = append(data, []string{"imsi", "msisdn", "ambr", "nssai", "arfb", "sar", "rat", "cn", "smf_sel", "sm_dat", "eps_dat"})
for _, v := range list {
data = append(data, []string{v.Imsi, v.Msisdn, v.Ambr, v.Arfb, v.Sar, v.Rat, v.Cn, v.SmfSel, v.SmData, v.EpsDat})
epsDat := fmt.Sprintf("%s,%s,%s,%s,%s,%s,%s,%s", v.EpsFlag, v.EpsOdb, v.HplmnOdb, v.Ard, v.Epstpl, v.ContextId, v.ApnContext, v.StaticIp)
data = append(data, []string{v.Imsi, v.Msisdn, v.Ambr, v.Nssai, v.Arfb, v.Sar, v.Rat, v.Cn, v.SmfSel, v.SmData, epsDat})
}
// 输出到文件
err = file.WriterCSVFile(data, filePath)
@@ -1118,7 +1127,8 @@ func (s *UdmUserApi) UdmSubUserExport(w http.ResponseWriter, r *http.Request) {
// 转换数据
data := [][]string{}
for _, v := range list {
data = append(data, []string{v.Imsi, v.Msisdn, v.Ambr, v.Arfb, v.Sar, v.Rat, v.Cn, v.SmfSel, v.SmData, v.EpsDat})
epsDat := fmt.Sprintf("%s,%s,%s,%s,%s,%s,%s,%s", v.EpsFlag, v.EpsOdb, v.HplmnOdb, v.Ard, v.Epstpl, v.ContextId, v.ApnContext, v.StaticIp)
data = append(data, []string{v.Imsi, v.Msisdn, v.Ambr, v.Nssai, v.Arfb, v.Sar, v.Rat, v.Cn, v.SmfSel, v.SmData, epsDat})
}
// 输出到文件
err = file.WriterTxtFile(data, filePath)

View File

@@ -144,7 +144,7 @@ func (r *RepoUdmAuthUser) SelectList(auth model.UdmAuthUser) []model.UdmAuthUser
}
// 查询数据
querySql := r.selectSql + whereSql
querySql := r.selectSql + whereSql + " order by imsi asc "
results, err := datasource.RawDB("", querySql, params)
if err != nil {
log.Errorf("query err => %v", err)
@@ -210,6 +210,7 @@ func (r *RepoUdmAuthUser) Inserts(authUsers []model.UdmAuthUser) int64 {
// 调用 InsertMulti 函数将批量数据插入数据库
results, err := datasource.DefaultDB().Table("u_auth_user").InsertMulti(batch)
if err != nil {
log.Errorf("Insert err => %v", err)
continue
}
num += results
@@ -267,7 +268,7 @@ func (r *RepoUdmAuthUser) Deletes(neID, imsi, num string) int64 {
return 0
}
results, err := datasource.DefaultDB().Table("u_auth_user").Where("imsi >= ? and imsi <= ? and ne_id = ?", imsiV, imsiV+numV, neID).Delete()
results, err := datasource.DefaultDB().Table("u_auth_user").Where("imsi >= ? and imsi < ? and ne_id = ?", imsiV, imsiV+numV, neID).Delete()
if err != nil {
return results
}

View File

@@ -166,7 +166,7 @@ func (r *RepoUdmSubUser) SelectList(auth model.UdmSubUser) []model.UdmSubUser {
}
// 查询数据
querySql := r.selectSql + whereSql
querySql := r.selectSql + whereSql + " order by imsi asc "
results, err := datasource.RawDB("", querySql, params)
if err != nil {
log.Errorf("query err => %v", err)
@@ -220,6 +220,7 @@ func (r *RepoUdmSubUser) ClearAndInsert(neID string, subArr []model.UdmSubUser)
func (r *RepoUdmSubUser) Insert(subUser model.UdmSubUser) int64 {
results, err := datasource.DefaultDB().Table("u_sub_user").Insert(subUser)
if err != nil {
log.Errorf("Insert err => %v", err)
return results
}
return results
@@ -240,6 +241,7 @@ func (r *RepoUdmSubUser) Inserts(subUser []model.UdmSubUser) int64 {
// 调用 InsertMulti 函数将批量数据插入数据库
results, err := datasource.DefaultDB().Table("u_sub_user").InsertMulti(batch)
if err != nil {
log.Errorf("Insert err => %v", err)
continue
}
num += results
@@ -266,6 +268,7 @@ func (r *RepoUdmSubUser) Insert4G(neID string, subUser model.UdmSubUser) int64 {
results, err := datasource.DefaultDB().Table("u_sub_user").Insert(subUser)
if err == nil {
log.Errorf("Insert err => %v", err)
insertNum += results
}
}
@@ -336,6 +339,7 @@ func (r *RepoUdmSubUser) Update(neID string, authUser model.UdmSubUser) int64 {
results, err := datasource.DefaultDB().Table("u_sub_user").Where("imsi = ? and ne_id = ?", user.Imsi, user.NeID).Update(user)
if err != nil {
log.Errorf("Update err => %v", err)
return 0
}
return results
@@ -373,6 +377,7 @@ func (r *RepoUdmSubUser) Update4GIP(neID string, subUser model.UdmSubUser) int64
// 更新
results, err := datasource.DefaultDB().Table("u_sub_user").Update(user)
if err == nil {
log.Errorf("Update err => %v", err)
insertNum += results
}
}
@@ -406,6 +411,7 @@ func (r *RepoUdmSubUser) UpdateSmData(neID string, subUser model.UdmSubUser) int
// 更新
results, err := datasource.DefaultDB().Table("u_sub_user").Update(user)
if err == nil {
log.Errorf("Update err => %v", err)
insertNum += results
}
}
@@ -417,6 +423,7 @@ func (r *RepoUdmSubUser) UpdateSmData(neID string, subUser model.UdmSubUser) int
func (r *RepoUdmSubUser) Delete(neID, imsi string) int64 {
results, err := datasource.DefaultDB().Table("u_sub_user").Where("imsi = ? and ne_id = ?", imsi, neID).Delete()
if err != nil {
log.Errorf("Delete err => %v", err)
return results
}
return results
@@ -434,8 +441,9 @@ func (r *RepoUdmSubUser) Deletes(neID, imsi, num string) int64 {
return 0
}
results, err := datasource.DefaultDB().Table("u_sub_user").Where("imsi >= ? and imsi <= ? and ne_id = ?", imsiV, imsiV+numV, neID).Delete()
results, err := datasource.DefaultDB().Table("u_sub_user").Where("imsi >= ? and imsi < ? and ne_id = ?", imsiV, imsiV+numV, neID).Delete()
if err != nil {
log.Errorf("Delete err => %v", err)
return results
}
return results

View File

@@ -37,6 +37,12 @@ func redisUdmAuthUserList() []model.UdmAuthUser {
continue
}
// 跳过-号数据
imsi := key[5:]
if strings.Contains(imsi, "-") {
continue
}
status := "0"
if _, ok := m["auth_success"]; ok {
status = "1"
@@ -46,7 +52,7 @@ func redisUdmAuthUserList() []model.UdmAuthUser {
amf = strings.Replace(v, "\r\n", "", 1)
}
a := model.UdmAuthUser{
Imsi: key[5:],
Imsi: imsi,
Amf: amf,
Status: status,
Ki: m["ki"],
@@ -73,7 +79,7 @@ func redisUdmSubUserList() []model.UdmSubUser {
a := model.UdmSubUser{
Imsi: key[7:],
Msisdn: strings.TrimPrefix(m["gpsi"], "86"),
Msisdn: m["gpsi"], // 46003550072 strings.TrimPrefix(m["gpsi"], "86"),
SmfSel: m["smf-sel"],
SmData: m["sm-dat"], // 1-000001&cmnet&ims&3gnet
}
@@ -90,8 +96,12 @@ func redisUdmSubUserList() []model.UdmSubUser {
}
// 1,64,24,65,def_eps,1,2,010200000000,-
if v, ok := m["eps-dat"]; ok {
a.EpsDat = v
arr := strings.Split(v, ",")
// 跳过非常规数据
if len(arr) > 9 {
continue
}
a.EpsDat = v
a.EpsFlag = arr[0]
a.EpsOdb = arr[1]
a.HplmnOdb = arr[2]
@@ -99,6 +109,7 @@ func redisUdmSubUserList() []model.UdmSubUser {
a.Epstpl = arr[4]
a.ContextId = arr[5]
a.ApnContext = arr[7]
// [6] 是不要的,导入和导出不用
a.StaticIp = arr[8]
}

View File

@@ -44,7 +44,7 @@ func (r *ServiceUdmAuthUser) List(authUser model.UdmAuthUser) []model.UdmAuthUse
// imsi长度15ki长度32opc长度0或者32
func (r *ServiceUdmAuthUser) Insert(neID string, authUser model.UdmAuthUser) int64 {
authUser.NeID = neID
authUser.Status = "1"
authUser.Status = "0"
return r.repoAuthUser.Insert(authUser)
}
@@ -64,7 +64,7 @@ func (r *ServiceUdmAuthUser) Inserts(neID string, authUser model.UdmAuthUser, nu
}
authUser.NeID = neID
authUser.Status = "1"
authUser.Status = "0"
for i := 0; i < numV; i++ {
imsi := fmt.Sprint(imsiV + i)
if len(imsi) < imsiVlen {
@@ -83,22 +83,26 @@ func (r *ServiceUdmAuthUser) InsertCSV(neID string, data []map[string]string) in
for _, v := range data {
var authUser model.UdmAuthUser
authUser.NeID = neID
authUser.Status = "1"
authUser.Status = "0"
if s, ok := v["imsi"]; ok {
authUser.Imsi = s
}
if s, ok := v["ki"]; ok {
authUser.Ki = s
}
if s, ok := v["amf"]; ok {
authUser.Amf = s
}
if s, ok := v["algo"]; ok {
authUser.AlgoIndex = s
}
if s, ok := v["amf"]; ok {
authUser.Amf = s
}
if s, ok := v["opc"]; ok {
authUser.Opc = s
}
if authUser.Imsi == "" {
continue
}
arr = append(arr, authUser)
}
return r.repoAuthUser.Inserts(arr)
@@ -113,7 +117,7 @@ func (r *ServiceUdmAuthUser) InsertTxt(neID string, data [][]string) int64 {
}
var authUser model.UdmAuthUser
authUser.NeID = neID
authUser.Status = "1"
authUser.Status = "0"
authUser.Imsi = v[0]
authUser.Ki = v[1]
authUser.AlgoIndex = v[2]
@@ -121,6 +125,10 @@ func (r *ServiceUdmAuthUser) InsertTxt(neID string, data [][]string) int64 {
if len(v) == 5 {
authUser.Opc = v[4]
}
if authUser.Imsi == "" {
continue
}
arr = append(arr, authUser)
}

View File

@@ -83,7 +83,7 @@ func (r *ServiceUdmSubUser) Inserts(neID string, subUser model.UdmSubUser, num s
subUser.Imsi = imsi
// IP会自动递增
if subUser.StaticIp != "" {
if len(subUser.StaticIp) > 5 {
parts := strings.Split(subUser.StaticIp, ".")
lastPart := parts[3]
lastNum, _ := strconv.Atoi(lastPart)
@@ -93,6 +93,9 @@ func (r *ServiceUdmSubUser) Inserts(neID string, subUser model.UdmSubUser, num s
newIP := strings.Join(parts, ".")
subUser.StaticIp = newIP
}
subUser.EpsDat = fmt.Sprintf("%s,%s,%s,%s,%s,%s,2,%s,%s", subUser.EpsFlag, subUser.EpsOdb, subUser.HplmnOdb, subUser.Ard, subUser.Epstpl, subUser.ContextId, subUser.ApnContext, subUser.StaticIp)
arr = append(arr, subUser)
}
@@ -132,11 +135,26 @@ func (r *ServiceUdmSubUser) InsertCSV(neID string, data []map[string]string) int
if s, ok := v["smf_sel"]; ok {
subUser.SmfSel = s
}
if s, ok := v["sm_data"]; ok {
if s, ok := v["sm_dat"]; ok {
subUser.SmData = s
}
if s, ok := v["eps_dat"]; ok {
subUser.EpsDat = s
arr := strings.Split(s, ",")
if len(arr) == 8 {
subUser.EpsFlag = arr[0]
subUser.EpsOdb = arr[1]
subUser.HplmnOdb = arr[2]
subUser.Ard = arr[3]
subUser.Epstpl = arr[4]
subUser.ContextId = arr[5]
subUser.ApnContext = arr[6]
subUser.StaticIp = arr[7]
}
}
if subUser.Imsi == "" {
continue
}
arr = append(arr, subUser)
}
@@ -162,8 +180,20 @@ func (r *ServiceUdmSubUser) InsertTxt(neID string, data [][]string) int64 {
subUser.Cn = v[7]
subUser.SmfSel = v[8]
subUser.SmData = v[9]
if len(v) == 11 {
subUser.EpsDat = v[10]
if len(v) > 17 {
subUser.EpsFlag = v[10]
subUser.EpsOdb = v[11]
subUser.HplmnOdb = v[12]
subUser.Ard = v[13]
subUser.Epstpl = v[14]
subUser.ContextId = v[15]
subUser.ApnContext = v[16]
subUser.StaticIp = v[17]
subUser.EpsDat = strings.Join(v[10:], ",")
}
if subUser.Imsi == "" {
continue
}
arr = append(arr, subUser)
}