package udmuser import ( "fmt" "net/http" "ems.agt/features/udm_user/model" "ems.agt/features/udm_user/service" "ems.agt/lib/core/file" mmlclient "ems.agt/lib/core/mml_client" "ems.agt/lib/core/utils/ctx" "ems.agt/lib/core/vo/result" "ems.agt/lib/dborm" "ems.agt/lib/log" "ems.agt/lib/services" "ems.agt/restagent/config" ) // UDM 用户信息接口添加到路由 func Routers() []services.RouterItem { // 实例化控制层 SysDictTypeApi 结构体 var apis = &UdmUserApi{ authUser: *service.NewServiceUdmAuthUser, subUser: *service.NewServiceUdmSubUser, } rs := [...]services.RouterItem{ // UDM签约用户 { Method: "GET", Pattern: "/auths", Handler: apis.UdmAuthUserList, Middleware: nil, //midware.Authorize(nil), }, { Method: "POST", Pattern: "/auth/getSave", Handler: apis.UdmAuthUserSave, Middleware: nil, //midware.Authorize(nil), }, { Method: "GET", Pattern: "/auth/{neId}/{imsi}", Handler: apis.UdmAuthUserInfo, Middleware: nil, //midware.Authorize(nil), }, { Method: "POST", Pattern: "/auth/export", Handler: apis.UdmAuthUserExport, Middleware: nil, //midware.Authorize(nil), }, // UDM签约用户 { Method: "GET", Pattern: "/subs", Handler: apis.UdmSubUserList, Middleware: nil, //midware.Authorize(nil), }, { Method: "POST", Pattern: "/sub/getSave", Handler: apis.UdmSubUserSave, Middleware: nil, //midware.Authorize(nil), }, { Method: "GET", Pattern: "/sub/{neId}/{imsi}", Handler: apis.UdmSubUserInfo, Middleware: nil, //midware.Authorize(nil), }, // 添加更多的 Router 对象... } // 生成两组前缀路由 rsPrefix := []services.RouterItem{} for _, v := range rs { path := "/udmUserManage/{apiVersion}" + v.Pattern // 固定前缀 v.Pattern = config.DefaultUriPrefix + path rsPrefix = append(rsPrefix, v) // 可配置 v.Pattern = config.UriPrefix + path rsPrefix = append(rsPrefix, v) } return rsPrefix } // NeInfoByUDM 网元信息 func NeInfoByUDM(neId string) (*dborm.NeInfo, error) { neInfo, err := dborm.XormGetNeInfo("UDM", neId) if err != nil { log.Error("dborm.XormGetNeInfo is failed:", err) return nil, err } return neInfo, nil } // UDM 用户 // // PATH /udmUserManage type UdmUserApi struct { authUser service.ServiceUdmAuthUser subUser service.ServiceUdmSubUser } // UDM鉴权用户 // // GET /auths func (s *UdmUserApi) UdmAuthUserList(w http.ResponseWriter, r *http.Request) { querys := ctx.QueryMap(r) data := s.authUser.Page(querys) ctx.JSON(w, 200, result.Ok(data)) } // UDM鉴权用户-获取全部保存数据库 // // POST /auth/getSave func (s *UdmUserApi) UdmAuthUserSave(w http.ResponseWriter, r *http.Request) { data := s.authUser.Save("") ctx.JSON(w, 200, result.OkData(data)) } // UDM鉴权用户-信息 // // GET /{neId}/{imsi} func (s *UdmUserApi) UdmAuthUserInfo(w http.ResponseWriter, r *http.Request) { neId := ctx.Param(r, "neId") imsi := ctx.Param(r, "imsi") if neId == "" || imsi == "" { ctx.JSON(w, 400, result.CodeMsg(400, "参数错误")) return } neInfo, err := NeInfoByUDM(neId) if err != nil { ctx.JSON(w, 200, result.ErrMsg(err.Error())) return } msg := fmt.Sprintf("dsp authdat:imsi=%s", imsi) // 发送MML data, err := mmlclient.MMLSendMsgToMap(neInfo.Ip, msg) if err != nil { ctx.JSON(w, 200, result.ErrMsg(err.Error())) return } ctx.JSON(w, 200, result.OkData(data)) } // UDM鉴权用户-导出 // // POST /auth/export func (s *UdmUserApi) UdmAuthUserExport(w http.ResponseWriter, r *http.Request) { list := s.authUser.List(model.UdmAuthUser{}) // 文件名 fileName := "OMC_AUTH_100.csv" filePath := "C:/AMP/Probject/ems_backend/restagent/OMC_AUTH_100.csv" // 转换数据 data := [][]string{} data = append(data, []string{"ID", "Msisdn", "Imsi", "Amf", "Status", "Ki", "AlgoIndex", "Opc"}) for _, v := range list { data = append(data, []string{v.ID, v.Msisdn, v.Imsi, v.Amf, v.Status, v.Ki, v.AlgoIndex, v.Opc}) } // 输出到文件 err := file.WriterCSVFile(data, filePath) if err != nil { ctx.JSON(w, 200, result.ErrMsg(err.Error())) return } ctx.FileAttachment(w, r, filePath, fileName) } // UDM签约用户 // // GET /subs func (s *UdmUserApi) UdmSubUserList(w http.ResponseWriter, r *http.Request) { querys := ctx.QueryMap(r) data := s.subUser.Page(querys) ctx.JSON(w, 200, result.Ok(data)) } // UDM签约用户-获取全部保存数据库 // // POST /sub/getSave func (s *UdmUserApi) UdmSubUserSave(w http.ResponseWriter, r *http.Request) { data := s.subUser.Save("") ctx.JSON(w, 200, result.OkData(data)) } // UDM签约用户-信息 // // GET /{neId}/{imsi} func (s *UdmUserApi) UdmSubUserInfo(w http.ResponseWriter, r *http.Request) { neId := ctx.Param(r, "neId") imsi := ctx.Param(r, "imsi") if neId == "" || imsi == "" { ctx.JSON(w, 400, result.CodeMsg(400, "参数错误")) return } neInfo, err := NeInfoByUDM(neId) if err != nil { ctx.JSON(w, 200, result.ErrMsg(err.Error())) return } msg := fmt.Sprintf("dsp udmuser:imsi=%s", imsi) // 发送MML data, err := mmlclient.MMLSendMsgToMap(neInfo.Ip, msg) if err != nil { ctx.JSON(w, 200, result.ErrMsg(err.Error())) return } ctx.JSON(w, 200, result.OkData(data)) }