219 lines
5.2 KiB
Go
219 lines
5.2 KiB
Go
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))
|
|
}
|