package service import ( "fmt" "strconv" "be.ems/features/udm_user/model" "be.ems/features/udm_user/repo" ) // 实例化服务层 ServiceUdmAuthUser 结构体 var NewServiceUdmAuthUser = &ServiceUdmAuthUser{ repoAuthUser: *repo.NewRepoUdmAuthUser, } // ServiceUdmAuthUser UDM鉴权用户 服务层处理 type ServiceUdmAuthUser struct { repoAuthUser repo.RepoUdmAuthUser } // Save UDM鉴权用户-获取全部保存数据库 func (r *ServiceUdmAuthUser) Save(neID string) int64 { var num int64 = 0 authArr := redisUdmAuthUserList() // 有数据才清空 if len(authArr) == 0 { return num } go r.repoAuthUser.ClearAndInsert(neID, authArr) return int64(len(authArr)) } // Page UDM签约用户-分页查询数据库 func (r *ServiceUdmAuthUser) Page(query map[string]any) map[string]any { return r.repoAuthUser.SelectPage(query) } // List UDM签约用户-查询数据库 func (r *ServiceUdmAuthUser) List(authUser model.UdmAuthUser) []model.UdmAuthUser { return r.repoAuthUser.SelectList(authUser) } // Insert UDM鉴权用户-新增单个 // imsi长度15,ki长度32,opc长度0或者32 func (r *ServiceUdmAuthUser) Insert(neID string, authUser model.UdmAuthUser) int64 { authUser.NeID = neID authUser.Status = "0" return r.repoAuthUser.Insert(authUser) } // Insert UDM鉴权用户-批量添加 func (r *ServiceUdmAuthUser) Inserts(neID string, authUser model.UdmAuthUser, num string) int64 { var arr []model.UdmAuthUser imsiVlen := len(authUser.Imsi) imsiV, err := strconv.Atoi(authUser.Imsi) if err != nil { return 0 } numV, err := strconv.Atoi(num) if err != nil { return 0 } authUser.NeID = neID authUser.Status = "0" for i := 0; i < numV; i++ { imsi := fmt.Sprint(imsiV + i) if len(imsi) < imsiVlen { imsi = fmt.Sprintf("%0*s", imsiVlen, imsi) } authUser.Imsi = imsi arr = append(arr, authUser) } return r.repoAuthUser.Inserts(arr) } // InsertCSV UDM鉴权用户-批量添加 func (r *ServiceUdmAuthUser) InsertCSV(neID string, data []map[string]string) int64 { var arr []model.UdmAuthUser for _, v := range data { var authUser model.UdmAuthUser authUser.NeID = neID 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["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) } // InsertTxt UDM鉴权用户-批量添加 func (r *ServiceUdmAuthUser) InsertTxt(neID string, data [][]string) int64 { var arr []model.UdmAuthUser for _, v := range data { if len(v) < 4 { continue } var authUser model.UdmAuthUser authUser.NeID = neID authUser.Status = "0" authUser.Imsi = v[0] authUser.Ki = v[1] authUser.AlgoIndex = v[2] authUser.Amf = v[3] if len(v) == 5 { authUser.Opc = v[4] } if authUser.Imsi == "" { continue } arr = append(arr, authUser) } return r.repoAuthUser.Inserts(arr) } // Insert UDM鉴权用户-修改更新 func (r *ServiceUdmAuthUser) Update(neID string, authUser model.UdmAuthUser) int64 { return r.repoAuthUser.Update(neID, authUser) } // Insert UDM鉴权用户-删除单个 func (r *ServiceUdmAuthUser) Delete(neID, imsi string) int64 { return r.repoAuthUser.Delete(neID, imsi) } // Insert UDM鉴权用户-删除范围 func (r *ServiceUdmAuthUser) Deletes(neID, imsi, num string) int64 { return r.repoAuthUser.Deletes(neID, imsi, num) }