Merge remote-tracking branch 'origin/main' into multi-tenant

This commit is contained in:
TsMask
2025-01-24 20:49:26 +08:00
66 changed files with 16618 additions and 196 deletions

View File

@@ -29,8 +29,8 @@ type ChartGraphController struct {
// @Tags chart
// @Accept json
// @Produce json
// @Success 200 {object} map[string]any "data"
// @Security ApiKeyAuth
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Get relationship graph group name
// @Description Get relationship graph group name
// @Router /chart/graph/groups [get]
@@ -46,10 +46,10 @@ func (s *ChartGraphController) GroupNames(c *gin.Context) {
// @Tags chart
// @Accept json
// @Produce json
// @Param group query string true "Group"
// @Param type query string true "Type oneof=node edge combo" Enums(node, edge, combo)
// @Success 200 {object} map[string]any "data"
// @Security ApiKeyAuth
// @Param group query string true "Group"
// @Param type query string true "Type" Enums(node, edge, combo)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Getting Relationship Map Data
// @Description Getting Relationship Map Data
// @Router /chart/graph [get]
@@ -75,9 +75,9 @@ func (s *ChartGraphController) Load(c *gin.Context) {
// @Tags chart
// @Accept json
// @Produce json
// @Param data body map[string]any true "{group:'',data:{nodes:[],edges:[],combos:[]}}"
// @Success 200 {object} map[string]any "data"
// @Security ApiKeyAuth
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Saving Relationship Diagram Data
// @Description Saving Relationship Diagram Data
// @Router /chart/graph/ [post]
@@ -117,12 +117,12 @@ func (s *ChartGraphController) Save(c *gin.Context) {
// @Tags chart
// @Accept json
// @Produce json
// @Param group path string true "Group"
// @Success 200 {object} map[string]any "data"
// @Security ApiKeyAuth
// @Param group path string true "Group"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Deleting Relationship Diagram Data
// @Description Deleting Relationship Diagram Data
// @Router /chart/graph/:group [delete]
// @Router /chart/graph/{group} [delete]
func (s *ChartGraphController) Delete(c *gin.Context) {
language := ctx.AcceptLanguage(c)
group := c.Param("group")

View File

@@ -33,6 +33,15 @@ type AccountController struct {
// 系统登录
//
// POST /login
//
// @Tags common/authorization
// @Accept json
// @Produce json
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Summary System Login
// @Description System Login
// @Router /login [post]
func (s *AccountController) Login(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var loginBody commonModel.LoginBody
@@ -89,6 +98,15 @@ func (s *AccountController) Login(c *gin.Context) {
// 登录用户信息
//
// GET /getInfo
//
// @Tags common/authorization
// @Accept json
// @Produce json
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Login User Information
// @Description Login User Information
// @Router /getInfo [get]
func (s *AccountController) Info(c *gin.Context) {
language := ctx.AcceptLanguage(c)
loginUser, err := ctx.LoginUser(c)
@@ -117,6 +135,15 @@ func (s *AccountController) Info(c *gin.Context) {
// 登录用户路由信息
//
// GET /getRouters
//
// @Tags common/authorization
// @Accept json
// @Produce json
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Login User Routing Information
// @Description Login User Routing Information
// @Router /getRouters [get]
func (s *AccountController) Router(c *gin.Context) {
userID := ctx.LoginUserToUserID(c)
@@ -143,6 +170,15 @@ func (s *AccountController) Router(c *gin.Context) {
// 系统登出
//
// POST /logout
//
// @Tags common/authorization
// @Accept json
// @Produce json
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary System Logout
// @Description System Logout
// @Router /logout [post]
func (s *AccountController) Logout(c *gin.Context) {
language := ctx.AcceptLanguage(c)
tokenStr := ctx.Authorization(c)

View File

@@ -32,6 +32,15 @@ type CaptchaController struct {
// 获取验证码
//
// GET /captchaImage
//
// @Tags common
// @Accept json
// @Produce json
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Get CAPTCHA
// @Description Get CAPTCHA
// @Router /captchaImage [get]
func (s *CaptchaController) Image(c *gin.Context) {
// 从数据库配置获取验证码开关 true开启false关闭
captchaEnabledStr := s.sysConfigService.SelectConfigValueByKey("sys.account.captchaEnabled")

View File

@@ -46,9 +46,17 @@ func (s *CommontController) I18n(c *gin.Context) {
})
}
// 系统可暴露的配置信息
// 系统的配置信息
//
// GET /sys-conf
//
// @Tags common
// @Accept json
// @Produce json
// @Success 200 {object} object "Response Results"
// @Summary Configuration information for the system
// @Description Configuration information for the system
// @Router /sys-conf [get]
func (s *CommontController) SysConfig(c *gin.Context) {
data := s.commontService.SystemConfigInfo()

View File

@@ -71,6 +71,17 @@ func (s *FileController) Download(c *gin.Context) {
// 上传文件
//
// POST /upload
//
// @Tags common/file
// @Accept multipart/form-data
// @Produce json
// @Param file formData file true "The file to upload."
// @Param subPath formData string true "subpath, eg: default or common" Enums(default, common)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Upload a file
// @Description Upload a file, interface param use <fileName>
// @Router /file/upload [post]
func (s *FileController) Upload(c *gin.Context) {
language := ctx.AcceptLanguage(c)
// 上传的文件
@@ -105,6 +116,16 @@ func (s *FileController) Upload(c *gin.Context) {
// 切片文件检查
//
// POST /chunkCheck
//
// @Tags common/file
// @Accept json
// @Produce json
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Slice file checking
// @Description Slice file checking
// @Router /file/chunkCheck [post]
func (s *FileController) ChunkCheck(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var body struct {
@@ -131,6 +152,16 @@ func (s *FileController) ChunkCheck(c *gin.Context) {
// 切片文件合并
//
// POST /chunkMerge
//
// @Tags common/file
// @Accept json
// @Produce json
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Slice file merge
// @Description Slice file merge
// @Router /file/chunkMerge [post]
func (s *FileController) ChunkMerge(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var body struct {
@@ -170,6 +201,18 @@ func (s *FileController) ChunkMerge(c *gin.Context) {
// 切片文件上传
//
// POST /chunkUpload
//
// @Tags common/file
// @Accept multipart/form-data
// @Produce json
// @Param file formData file true "The file to upload."
// @Param identifier formData string true "Slice Marker"
// @Param index formData string true "Slice No."
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Sliced file upload
// @Description Sliced file upload
// @Router /file/chunkUpload [post]
func (s *FileController) ChunkUpload(c *gin.Context) {
language := ctx.AcceptLanguage(c)
// 切片编号

View File

@@ -24,7 +24,7 @@ type IndexController struct{}
// @Tags common
// @Accept json
// @Produce json
// @Success 200 {object} map[string]any "data"
// @Success 200 {object} object "Response Results"
// @Summary Root Route
// @Description Root Route
// @Router / [get]

View File

@@ -24,6 +24,15 @@ type MonitorController struct {
// 资源监控信息加载
//
// GET /load
//
// @Tags monitor
// @Accept json
// @Produce json
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Resource monitoring information loading
// @Description Resource monitoring information loading
// @Router /monitor/load [get]
func (s *MonitorController) Load(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var querys struct {

View File

@@ -22,6 +22,15 @@ type SysCacheController struct{}
// Redis信息
//
// GET /
//
// @Tags monitor/cache
// @Accept json
// @Produce json
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Cache Service Information
// @Description Cache Service Information
// @Router /monitor/cache [get]
func (s *SysCacheController) Info(c *gin.Context) {
c.JSON(200, result.OkData(map[string]any{
"info": redis.Info(""),

View File

@@ -32,6 +32,15 @@ type SysUserOnlineController struct {
// 在线用户列表
//
// GET /list
//
// @Tags monitor/online
// @Accept json
// @Produce json
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary System Online User List
// @Description System Online User List
// @Router /monitor/online/list [get]
func (s *SysUserOnlineController) List(c *gin.Context) {
language := ctx.AcceptLanguage(c)
ipaddr := c.Query("ipaddr")

View File

@@ -22,6 +22,15 @@ type SystemInfoController struct {
// 服务器信息
//
// GET /
//
// @Tags monitor
// @Accept json
// @Produce json
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Server Information
// @Description Server Information
// @Router /monitor/system-info [get]
func (s *SystemInfoController) Info(c *gin.Context) {
data := map[string]any{
"cpu": s.systemInfogService.CPUInfo(),

View File

@@ -32,6 +32,20 @@ type PerfKPIController struct {
// 获取统计数据
//
// GET /data
//
// @Tags network_data/kpi
// @Accept json
// @Produce json
// @Param neType query string true "NE Type" Enums(IMS,AMF,AUSF,UDM,SMF,PCF,NSSF,NRF,UPF,MME,CBC,OMC,SGWC)
// @Param neId query string true "NE ID" default(001)
// @Param startTime query number true "Start time (timestamped milliseconds)" default(1737453599059)
// @Param endTime query number true "End time (timestamped milliseconds)" default(1737453599059)
// @Param interval query number true "interval" Enums(5,10,15,30,60,300,600,900,1800,3600)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Access to statistical data
// @Description Access to statistical data
// @Router /neData/kpi/data [get]
func (s *PerfKPIController) GoldKPI(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var querys model.GoldKPIQuery
@@ -84,6 +98,16 @@ func (s *PerfKPIController) GoldKPI(c *gin.Context) {
// 获取统计标题
//
// GET /title
//
// @Tags network_data/kpi
// @Accept json
// @Produce json
// @Param neType query string true "NE Type" Enums(IMS,AMF,AUSF,UDM,SMF,PCF,NSSF,NRF,UPF,MME,CBC,OMC,SGWC)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Get Statistical Headings
// @Description Get Statistical Headings
// @Router /neData/kpi/title [get]
func (s *PerfKPIController) Title(c *gin.Context) {
language := ctx.AcceptLanguage(c)
neType := c.Query("neType")

View File

@@ -39,6 +39,20 @@ type AMFController struct {
// UE会话列表
//
// GET /ue/list
//
// @Tags network_data/amf
// @Accept json
// @Produce json
// @Param neType query string true "NE Type only AMF" Enums(AMF)
// @Param neId query string true "NE ID" default(001)
// @Param imsi query string false "imsi"
// @Param pageNum query number true "pageNum" default(1)
// @Param pageSize query number true "pageSize" default(10)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UE Session List
// @Description UE Session List
// @Router /neData/amf/ue/list [get]
func (s *AMFController) UEList(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var querys model.UEEventAMFQuery
@@ -65,6 +79,16 @@ func (s *AMFController) UEList(c *gin.Context) {
// UE会话删除
//
// DELETE /ue/:ueIds
//
// @Tags network_data/amf
// @Accept json
// @Produce json
// @Param ueIds path string true "list data id, multiple separated by a , sign"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UE Session Deletion
// @Description UE Session Deletion
// @Router /neData/amf/ue/{ueIds} [delete]
func (s *AMFController) UERemove(c *gin.Context) {
language := ctx.AcceptLanguage(c)
ueIds := c.Param("ueIds")
@@ -91,6 +115,16 @@ func (s *AMFController) UERemove(c *gin.Context) {
// UE会话列表导出
//
// POST /ue/export
//
// @Tags network_data/amf
// @Accept json
// @Produce json
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UE Session List Export
// @Description UE Session List Export
// @Router /neData/amf/ue/export [post]
func (s *AMFController) UEExport(c *gin.Context) {
language := ctx.AcceptLanguage(c)
// 查询结果,根据查询条件结果,单页最大值限制
@@ -220,6 +254,17 @@ func (s *AMFController) UEExport(c *gin.Context) {
// 接入基站信息列表
//
// GET /nb/list
//
// @Tags network_data/amf
// @Accept json
// @Produce json
// @Param neId query string true "NE ID" default(001)
// @Param id query string false "Base Station ID"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Access Base Station Information List
// @Description Access Base Station Information List
// @Router /neData/amf/nb/list [get]
func (s *AMFController) NbInfoList(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var query struct {
@@ -253,6 +298,16 @@ func (s *AMFController) NbInfoList(c *gin.Context) {
// 接入基站状态信息列表
//
// GET /nb/list-cfg
//
// @Tags network_data/amf
// @Accept json
// @Produce json
// @Param neId query string true "NE ID" default(001)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Access to the base station status information list
// @Description Access to the base station status information list
// @Router /neData/amf/nb/list-cfg [get]
func (s *AMFController) NbStateList(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var query struct {

View File

@@ -40,6 +40,21 @@ type IMSController struct {
// CDR会话列表
//
// GET /cdr/list
//
// @Tags network_data/ims
// @Accept json
// @Produce json
// @Param neType query string true "NE Type only IMS" Enums(IMS)
// @Param neId query string true "NE ID" default(001)
// @Param callerParty query string false "callerParty"
// @Param calledParty query string false "calledParty"
// @Param pageNum query number true "pageNum" default(1)
// @Param pageSize query number true "pageSize" default(10)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary CDR Session List
// @Description CDR Session List
// @Router /neData/ims/cdr/list [get]
func (s *IMSController) CDRList(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var querys model.CDREventIMSQuery
@@ -66,6 +81,16 @@ func (s *IMSController) CDRList(c *gin.Context) {
// CDR会话删除
//
// DELETE /cdr/:cdrIds
//
// @Tags network_data/ims
// @Accept json
// @Produce json
// @Param cdrIds path string true "list data id, multiple separated by a , sign"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary CDR Session Delete
// @Description CDR Session Delete
// @Router /neData/ims/cdr/{cdrIds} [delete]
func (s *IMSController) CDRRemove(c *gin.Context) {
language := ctx.AcceptLanguage(c)
cdrIds := c.Param("cdrIds")
@@ -92,6 +117,16 @@ func (s *IMSController) CDRRemove(c *gin.Context) {
// CDR会话列表导出
//
// POST /cdr/export
//
// @Tags network_data/ims
// @Accept json
// @Produce json
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary CDR Session List Export
// @Description CDR Session List Export
// @Router /neData/ims/cdr/export [post]
func (s *IMSController) CDRExport(c *gin.Context) {
language := ctx.AcceptLanguage(c)
// 查询结果,根据查询条件结果,单页最大值限制
@@ -232,6 +267,16 @@ func (s *IMSController) CDRExport(c *gin.Context) {
// 在线会话用户数量
//
// GET /session/num
//
// @Tags network_data/ims
// @Accept json
// @Produce json
// @Param neId query string true "NE ID" default(001)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Number of online session users
// @Description Number of online session users
// @Router /neData/ims/session/num [get]
func (s *IMSController) UeSessionNum(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var query struct {
@@ -262,6 +307,18 @@ func (s *IMSController) UeSessionNum(c *gin.Context) {
// 在线会话用户列表信息
//
// GET /session/list
//
// @Tags network_data/ims
// @Accept json
// @Produce json
// @Param neId query string true "NE ID" default(001)
// @Param imsi query string false "imsi"
// @Param msisdn query string false "msisdn"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Online session user list information
// @Description Online session user list information
// @Router /neData/ims/session/list [get]
func (s *IMSController) UeSessionList(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var query struct {

View File

@@ -40,6 +40,20 @@ type MMEController struct {
// UE会话列表
//
// GET /ue/list
//
// @Tags network_data/mme
// @Accept json
// @Produce json
// @Param neType query string true "NE Type only MME" Enums(MME)
// @Param neId query string true "NE ID" default(001)
// @Param imsi query string false "imsi"
// @Param pageNum query number true "pageNum" default(1)
// @Param pageSize query number true "pageSize" default(10)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UE Session List
// @Description UE Session List
// @Router /neData/mme/ue/list [get]
func (s *MMEController) UEList(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var querys model.UEEventMMEQuery
@@ -66,6 +80,16 @@ func (s *MMEController) UEList(c *gin.Context) {
// UE会话删除
//
// DELETE /ue/:ueIds
//
// @Tags network_data/mme
// @Accept json
// @Produce json
// @Param ueIds path string true "list data id, multiple separated by a , sign"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UE Session Deletion
// @Description UE Session Deletion
// @Router /neData/mme/ue/{ueIds} [delete]
func (s *MMEController) UERemove(c *gin.Context) {
language := ctx.AcceptLanguage(c)
ueIds := c.Param("ueIds")
@@ -92,6 +116,16 @@ func (s *MMEController) UERemove(c *gin.Context) {
// UE会话列表导出
//
// POST /ue/export
//
// @Tags network_data/mme
// @Accept json
// @Produce json
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UE Session List Export
// @Description UE Session List Export
// @Router /neData/mme/ue/export [post]
func (s *MMEController) UEExport(c *gin.Context) {
language := ctx.AcceptLanguage(c)
// 查询结果,根据查询条件结果,单页最大值限制
@@ -210,6 +244,17 @@ func (s *MMEController) UEExport(c *gin.Context) {
// 接入基站信息列表
//
// GET /nb/list
//
// @Tags network_data/mme
// @Accept json
// @Produce json
// @Param neId query string true "NE ID" default(001)
// @Param id query string false "Base Station ID"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Access Base Station Information List
// @Description Access Base Station Information List
// @Router /neData/mme/nb/list [get]
func (s *MMEController) NbInfoList(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var query struct {
@@ -239,3 +284,43 @@ func (s *MMEController) NbInfoList(c *gin.Context) {
c.JSON(200, result.OkData(data))
}
// 接入基站状态信息列表
//
// GET /nb/list-cfg
//
// @Tags network_data/mme
// @Accept json
// @Produce json
// @Param neId query string true "NE ID" default(001)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Access to the base station status information list
// @Description Access to the base station status information list
// @Router /neData/mme/nb/list-cfg [get]
func (s *MMEController) NbStateList(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var query struct {
NeId string `form:"neId" binding:"required"`
}
if err := c.ShouldBindQuery(&query); err != nil {
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
return
}
// 查询网元信息
neInfo := s.neInfoService.SelectNeInfoByNeTypeAndNeID("MME", query.NeId)
if neInfo.NeId != query.NeId || neInfo.IP == "" {
c.JSON(200, result.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return
}
// 网元直连
data, err := neFetchlink.MMEEnbStateList(neInfo)
if err != nil {
c.JSON(200, result.ErrMsg(err.Error()))
return
}
c.JSON(200, result.OkData(data))
}

View File

@@ -24,7 +24,7 @@ var NewSGWC = &SGWCController{
// 网元SGWC
//
// PATH /SGWC
// PATH /sgwc
type SGWCController struct {
neInfoService *neService.NeInfo // 网元信息服务
cdrEventService *neDataService.CDREventSGWC // CDR会话事件服务
@@ -34,6 +34,21 @@ type SGWCController struct {
// CDR会话列表
//
// GET /cdr/list
//
// @Tags network_data/sgwc
// @Accept json
// @Produce json
// @Param neType query string true "NE Type only SGWC" Enums(SGWC)
// @Param neId query string true "NE ID" default(001)
// @Param imsi query string false "imsi"
// @Param msisdn query string false "msisdn"
// @Param pageNum query number true "pageNum" default(1)
// @Param pageSize query number true "pageSize" default(10)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary CDR Session List
// @Description CDR Session List
// @Router /neData/sgwc/cdr/list [get]
func (s *SGWCController) CDRList(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var querys model.CDREventSGWCQuery
@@ -58,6 +73,16 @@ func (s *SGWCController) CDRList(c *gin.Context) {
// CDR会话删除
//
// DELETE /cdr/:cdrIds
//
// @Tags network_data/sgwc
// @Accept json
// @Produce json
// @Param cdrIds path string true "list data id, multiple separated by a , sign"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary CDR Session Delete
// @Description CDR Session Delete
// @Router /neData/sgwc/cdr/{cdrIds} [delete]
func (s *SGWCController) CDRRemove(c *gin.Context) {
language := ctx.AcceptLanguage(c)
cdrIds := c.Param("cdrIds")
@@ -84,6 +109,16 @@ func (s *SGWCController) CDRRemove(c *gin.Context) {
// CDR会话列表导出
//
// POST /cdr/export
//
// @Tags network_data/sgwc
// @Accept json
// @Produce json
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary CDR Session List Export
// @Description CDR Session List Export
// @Router /neData/sgwc/cdr/export [post]
func (s *SGWCController) CDRExport(c *gin.Context) {
language := ctx.AcceptLanguage(c)
// 查询结果,根据查询条件结果,单页最大值限制

View File

@@ -40,6 +40,20 @@ type SMFController struct {
// CDR会话列表
//
// GET /cdr/list
//
// @Tags network_data/smf
// @Accept json
// @Produce json
// @Param neType query string true "NE Type only SMF" Enums(SMF)
// @Param neId query string true "NE ID" default(001)
// @Param subscriberID query string false "subscriberID is IMSI"
// @Param pageNum query number true "pageNum" default(1)
// @Param pageSize query number true "pageSize" default(10)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary CDR Session List
// @Description CDR Session List
// @Router /neData/smf/cdr/list [get]
func (s *SMFController) CDRList(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var querys model.CDREventSMFQuery
@@ -66,6 +80,16 @@ func (s *SMFController) CDRList(c *gin.Context) {
// CDR会话删除
//
// DELETE /cdr/:cdrIds
//
// @Tags network_data/smf
// @Accept json
// @Produce json
// @Param cdrIds path string true "list data id, multiple separated by a , sign"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary CDR Session Delete
// @Description CDR Session Delete
// @Router /neData/smf/cdr/{cdrIds} [delete]
func (s *SMFController) CDRRemove(c *gin.Context) {
language := ctx.AcceptLanguage(c)
cdrIds := c.Param("cdrIds")
@@ -92,6 +116,16 @@ func (s *SMFController) CDRRemove(c *gin.Context) {
// CDR会话列表导出
//
// POST /cdr/export
//
// @Tags network_data/smf
// @Accept json
// @Produce json
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary CDR Session List Export
// @Description CDR Session List Export
// @Router /neData/smf/cdr/export [post]
func (s *SMFController) CDRExport(c *gin.Context) {
language := ctx.AcceptLanguage(c)
// 查询结果,根据查询条件结果,单页最大值限制
@@ -329,6 +363,16 @@ func (s *SMFController) CDRExport(c *gin.Context) {
// 在线订阅用户数量
//
// GET /sub/num
//
// @Tags network_data/smf
// @Accept json
// @Produce json
// @Param neId query string true "NE ID" default(001)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Number of online session users
// @Description Number of online session users
// @Router /neData/smf/sub/num [get]
func (s *SMFController) SubUserNum(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var query struct {
@@ -359,6 +403,20 @@ func (s *SMFController) SubUserNum(c *gin.Context) {
// 在线订阅用户列表信息
//
// GET /sub/list
//
// @Tags network_data/smf
// @Accept json
// @Produce json
// @Param neId query string true "NE ID" default(001)
// @Param imsi query string false "imsi"
// @Param msisdn query string false "msisdn"
// @Param upstate query string false "upstate"
// @Param pageNum query string true "pageNum" default(50)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Online session user list information
// @Description Online session user list information
// @Router /neData/smf/session/list [get]
func (s *SMFController) SubUserList(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var query struct {

View File

@@ -39,6 +39,21 @@ type SMSCController struct {
// CDR会话列表
//
// GET /cdr/list
//
// @Tags network_data/smsc
// @Accept json
// @Produce json
// @Param neType query string true "NE Type only SMSC" Enums(SMSC)
// @Param neId query string true "NE ID" default(001)
// @Param callerParty query string false "callerParty"
// @Param calledParty query string false "calledParty"
// @Param pageNum query number true "pageNum" default(1)
// @Param pageSize query number true "pageSize" default(10)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary CDR Session List
// @Description CDR Session List
// @Router /neData/smsc/cdr/list [get]
func (s *SMSCController) CDRList(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var querys model.CDREventSMSCQuery
@@ -65,6 +80,16 @@ func (s *SMSCController) CDRList(c *gin.Context) {
// CDR会话删除
//
// DELETE /cdr/:cdrIds
//
// @Tags network_data/smsc
// @Accept json
// @Produce json
// @Param cdrIds path string true "list data id, multiple separated by a , sign"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary CDR Session Delete
// @Description CDR Session Delete
// @Router /neData/smsc/cdr/{cdrIds} [delete]
func (s *SMSCController) CDRRemove(c *gin.Context) {
language := ctx.AcceptLanguage(c)
cdrIds := c.Param("cdrIds")
@@ -91,6 +116,16 @@ func (s *SMSCController) CDRRemove(c *gin.Context) {
// CDR会话列表导出
//
// POST /cdr/export
//
// @Tags network_data/smsc
// @Accept json
// @Produce json
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary CDR Session List Export
// @Description CDR Session List Export
// @Router /neData/smsc/cdr/export [post]
func (s *SMSCController) CDRExport(c *gin.Context) {
language := ctx.AcceptLanguage(c)
// 查询结果,根据查询条件结果,单页最大值限制

View File

@@ -37,7 +37,17 @@ type UDMAuthController struct {
// UDM鉴权用户重载数据
//
// POST /resetData/:neId
// PUT /resetData/:neId
//
// @Tags network_data/udm/auth
// @Accept json
// @Produce json
// @Param neId path string true "NE ID" default(001)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Authentication User Reload Data
// @Description UDM Authentication User Reload Data
// @Router /neData/udm/auth/resetData/{neId} [put]
func (s *UDMAuthController) ResetData(c *gin.Context) {
language := ctx.AcceptLanguage(c)
neId := c.Param("neId")
@@ -53,6 +63,19 @@ func (s *UDMAuthController) ResetData(c *gin.Context) {
// UDM鉴权用户列表
//
// GET /list
//
// @Tags network_data/udm/auth
// @Accept json
// @Produce json
// @Param neId query string true "NE ID" default(001)
// @Param imsi query string false "IMSI"
// @Param pageNum query number true "pageNum" default(1)
// @Param pageSize query number true "pageSize" default(10)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Authentication User List
// @Description UDM Authentication User List
// @Router /neData/udm/auth/list [get]
func (s *UDMAuthController) List(c *gin.Context) {
querys := ctx.QueryMap(c)
data := s.udmAuthService.SelectPage(querys)
@@ -62,6 +85,17 @@ func (s *UDMAuthController) List(c *gin.Context) {
// UDM鉴权用户信息
//
// GET /:neId/:imsi
//
// @Tags network_data/udm/auth
// @Accept json
// @Produce json
// @Param neId path string true "NE ID" default(001)
// @Param value path string true "IMSI"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Authentication User Information
// @Description UDM Authentication User Information
// @Router /neData/udm/auth/{neId}/{value} [get]
func (s *UDMAuthController) Info(c *gin.Context) {
language := ctx.AcceptLanguage(c)
neId := c.Param("neId")
@@ -107,6 +141,17 @@ func (s *UDMAuthController) Info(c *gin.Context) {
// UDM鉴权用户新增
//
// POST /:neId
//
// @Tags network_data/udm/auth
// @Accept json
// @Produce json
// @Param neId path string true "NE ID" default(001)
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Authentication User Added
// @Description UDM Authentication User Added
// @Router /neData/udm/auth/{neId} [post]
func (s *UDMAuthController) Add(c *gin.Context) {
language := ctx.AcceptLanguage(c)
neId := c.Param("neId")
@@ -155,6 +200,18 @@ func (s *UDMAuthController) Add(c *gin.Context) {
// UDM鉴权用户批量新增
//
// POST /:neId/:num
//
// @Tags network_data/udm/auth
// @Accept json
// @Produce json
// @Param neId path string true "NE ID" default(001)
// @Param value path number true "Number includes starting imsi"
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Authentication User Batch Add
// @Description UDM Authentication User Batch Add
// @Router /neData/udm/auth/{neId}/{value} [post]
func (s *UDMAuthController) Adds(c *gin.Context) {
language := ctx.AcceptLanguage(c)
neId := c.Param("neId")
@@ -204,6 +261,17 @@ func (s *UDMAuthController) Adds(c *gin.Context) {
// UDM鉴权用户修改
//
// PUT /:neId
//
// @Tags network_data/udm/auth
// @Accept json
// @Produce json
// @Param neId path string true "NE ID" default(001)
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Authenticated User Modification
// @Description UDM Authenticated User Modification
// @Router /neData/udm/auth/{neId} [put]
func (s *UDMAuthController) Edit(c *gin.Context) {
language := ctx.AcceptLanguage(c)
neId := c.Param("neId")
@@ -252,6 +320,17 @@ func (s *UDMAuthController) Edit(c *gin.Context) {
// UDM鉴权用户删除
//
// DELETE /:neId/:imsi
//
// @Tags network_data/udm/auth
// @Accept json
// @Produce json
// @Param neId path string true "NE ID" default(001)
// @Param value path string true "IMSI, multiple separated by a , sign"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Authenticated User Deletion
// @Description UDM Authenticated User Deletion
// @Router /neData/udm/auth/{neId}/{value} [delete]
func (s *UDMAuthController) Remove(c *gin.Context) {
language := ctx.AcceptLanguage(c)
neId := c.Param("neId")
@@ -305,6 +384,18 @@ func (s *UDMAuthController) Remove(c *gin.Context) {
// UDM鉴权用户批量删除
//
// DELETE /:neId/:imsi/:num
//
// @Tags network_data/udm/auth
// @Accept json
// @Produce json
// @Param neId path string true "NE ID" default(001)
// @Param imsi path string true "IMSI"
// @Param num path number true "Number includes starting imsi"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Authentication User Batch Deletion
// @Description UDM Authentication User Batch Deletion
// @Router /neData/udm/auth/{neId}/{imsi}/{num} [delete]
func (s *UDMAuthController) Removes(c *gin.Context) {
language := ctx.AcceptLanguage(c)
neId := c.Param("neId")
@@ -347,6 +438,16 @@ func (s *UDMAuthController) Removes(c *gin.Context) {
// UDM鉴权用户导出
//
// POST /export
//
// @Tags network_data/udm/auth
// @Accept json
// @Produce json
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Authenticated User Export
// @Description UDM Authenticated User Export
// @Router /neData/udm/auth/export [post]
func (s *UDMAuthController) Export(c *gin.Context) {
language := ctx.AcceptLanguage(c)
// 查询结果,根据查询条件结果,单页最大值限制
@@ -426,13 +527,23 @@ func (s *UDMAuthController) Export(c *gin.Context) {
// UDM鉴权用户导入
//
// POST /import
//
// @Tags network_data/udm/auth
// @Accept json
// @Produce json
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Authenticated User Import
// @Description UDM Authenticated User Import
// @Router /neData/udm/auth/import [post]
func (s *UDMAuthController) Import(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var body struct {
NeId string `json:"neId" binding:"required"`
UploadPath string `json:"uploadPath" binding:"required"`
TypeVal string `json:"typeVal" binding:"required,oneof=default k4"`
TypeData any `json:"typeData"`
NeId string `json:"neId" binding:"required"` // 网元ID
UploadPath string `json:"uploadPath" binding:"required"` // 上传文件路径
TypeVal string `json:"typeVal" binding:"required,oneof=default k4"` // default: 默认导入方式, k4: k4类型导入方式
TypeData any `json:"typeData"` // k4类型的数据密钥
}
if err := c.ShouldBindBodyWith(&body, binding.JSON); err != nil {
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))

View File

@@ -36,7 +36,17 @@ type UDMSubController struct {
// UDM签约用户重载数据
//
// POST /resetData/:neId
// PUT /resetData/:neId
//
// @Tags network_data/udm/sub
// @Accept json
// @Produce json
// @Param neId path string true "NE ID" default(001)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Subscriber User Reload Data
// @Description UDM Subscriber User Reload Data
// @Router /neData/udm/sub/resetData/{neId} [put]
func (s *UDMSubController) ResetData(c *gin.Context) {
language := ctx.AcceptLanguage(c)
neId := c.Param("neId")
@@ -52,6 +62,20 @@ func (s *UDMSubController) ResetData(c *gin.Context) {
// UDM签约用户列表
//
// GET /list
//
// @Tags network_data/udm/sub
// @Accept json
// @Produce json
// @Param neId query string true "NE ID" default(001)
// @Param imsi query string false "IMSI"
// @Param msisdn query string false "Msisdn"
// @Param pageNum query number true "pageNum" default(1)
// @Param pageSize query number true "pageSize" default(10)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Subscriber User List
// @Description UDM Subscriber User List
// @Router /neData/udm/sub/list [get]
func (s *UDMSubController) List(c *gin.Context) {
querys := ctx.QueryMap(c)
// querys["userName"] = ctx.LoginUserToUserName(c)
@@ -72,6 +96,17 @@ func (s *UDMSubController) List(c *gin.Context) {
// UDM签约用户信息
//
// GET /:neId/:imsi
//
// @Tags network_data/udm/sub
// @Accept json
// @Produce json
// @Param neId path string true "NE ID" default(001)
// @Param value path string true "IMSI"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Subscriber User Information
// @Description UDM Subscriber User Information
// @Router /neData/udm/sub/{neId}/{value} [get]
func (s *UDMSubController) Info(c *gin.Context) {
language := ctx.AcceptLanguage(c)
neId := c.Param("neId")
@@ -117,6 +152,17 @@ func (s *UDMSubController) Info(c *gin.Context) {
// UDM签约用户新增
//
// POST /:neId
//
// @Tags network_data/udm/sub
// @Accept json
// @Produce json
// @Param neId path string true "NE ID" default(001)
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Subscriber User Added
// @Description UDM Subscriber User Added
// @Router /neData/udm/sub/{neId} [post]
func (s *UDMSubController) Add(c *gin.Context) {
language := ctx.AcceptLanguage(c)
neId := c.Param("neId")
@@ -166,6 +212,18 @@ func (s *UDMSubController) Add(c *gin.Context) {
// UDM签约用户批量新增
//
// POST /:neId/:num
//
// @Tags network_data/udm/sub
// @Accept json
// @Produce json
// @Param neId path string true "NE ID" default(001)
// @Param value path number true "Number includes starting imsi" default(1)
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Subscriber User Batch Add
// @Description UDM Subscriber User Batch Add
// @Router /neData/udm/sub/{neId}/{value} [post]
func (s *UDMSubController) Adds(c *gin.Context) {
language := ctx.AcceptLanguage(c)
neId := c.Param("neId")
@@ -218,6 +276,17 @@ func (s *UDMSubController) Adds(c *gin.Context) {
// UDM签约用户修改
//
// PUT /:neId
//
// @Tags network_data/udm/sub
// @Accept json
// @Produce json
// @Param neId path string true "NE ID" default(001)
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Subscriber User Modification
// @Description UDM Subscriber User Modification
// @Router /neData/udm/sub/{neId} [put]
func (s *UDMSubController) Edit(c *gin.Context) {
language := ctx.AcceptLanguage(c)
neId := c.Param("neId")
@@ -267,6 +336,17 @@ func (s *UDMSubController) Edit(c *gin.Context) {
// UDM签约用户删除
//
// DELETE /:neId/:imsi
//
// @Tags network_data/udm/sub
// @Accept json
// @Produce json
// @Param neId path string true "NE ID" default(001)
// @Param value path string true "IMSI, multiple separated by a , sign"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Subscriber User Deletion
// @Description UDM Subscriber User Deletion
// @Router /neData/udm/sub/{neId}/{value} [delete]
func (s *UDMSubController) Remove(c *gin.Context) {
language := ctx.AcceptLanguage(c)
neId := c.Param("neId")
@@ -320,6 +400,18 @@ func (s *UDMSubController) Remove(c *gin.Context) {
// UDM签约用户批量删除
//
// DELETE /:neId/:imsi/:num
//
// @Tags network_data/udm/sub
// @Accept json
// @Produce json
// @Param neId path string true "NE ID" default(001)
// @Param imsi path string true "IMSI"
// @Param num path number true "Number includes starting imsi"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Subscriber User Batch Deletion
// @Description UDM Subscriber User Batch Deletion
// @Router /neData/udm/sub/{neId}/{imsi}/{num} [delete]
func (s *UDMSubController) Removes(c *gin.Context) {
language := ctx.AcceptLanguage(c)
neId := c.Param("neId")
@@ -362,6 +454,16 @@ func (s *UDMSubController) Removes(c *gin.Context) {
// UDM签约用户导出
//
// POST /export
//
// @Tags network_data/udm/sub
// @Accept json
// @Produce json
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Subscriber User Export
// @Description UDM Subscriber User Export
// @Router /neData/udm/sub/export [post]
func (s *UDMSubController) Export(c *gin.Context) {
language := ctx.AcceptLanguage(c)
// 查询结果,根据查询条件结果,单页最大值限制
@@ -444,6 +546,16 @@ func (s *UDMSubController) Export(c *gin.Context) {
// UDM签约用户导入
//
// POST /import
//
// @Tags network_data/udm/sub
// @Accept json
// @Produce json
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Subscriber User Import
// @Description UDM Subscriber User Import
// @Router /neData/udm/sub/import [post]
func (s *UDMSubController) Import(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var body struct {

View File

@@ -27,11 +27,22 @@ type UPFController struct {
// 单位 比特(bit)
//
// GET /totalFlow
//
// @Tags network_data/upf
// @Accept json
// @Produce json
// @Param neId query string true "NE ID" default(001)
// @Param day query number true "Statistical time a few days before" Enums(0, 7, 30)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Total number of flows N3 upstream N6 downstream
// @Description Total number of flows N3 upstream N6 downstream
// @Router /neData/upf/totalFlow [get]
func (s *UPFController) TotalFlow(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var querys struct {
NeID string `form:"neId" binding:"required"`
Day int `form:"day" binding:"required"`
Day int `form:"day"`
}
if err := c.ShouldBindQuery(&querys); querys.Day < 0 || err != nil {
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))

View File

@@ -20,7 +20,7 @@ func (*CDREventIMS) TableName() string {
// CDREventIMSQuery CDR会话对象IMS查询参数结构体
type CDREventIMSQuery struct {
NeType string `json:"neType" form:"neType" binding:"required"` // 网元类型IMS
NeType string `json:"neType" form:"neType" binding:"required,oneof=IMS"` // 网元类型IMS
NeID string `json:"neId" form:"neId" binding:"required"`
RmUID string `json:"rmUID" form:"rmUID"`
RecordType string `json:"recordType" form:"recordType"` // 记录行为 MOC MTC MOSM MTSM

View File

@@ -21,7 +21,7 @@ func (*CDREventSMF) TableName() string {
// CDREventSMFQuery CDR会话对象SMF查询参数结构体
type CDREventSMFQuery struct {
NeType string `json:"neType" form:"neType" binding:"required"` // SMF
NeType string `json:"neType" form:"neType" binding:"required,oneof=SMF"` // 网元类型, 暂时支持SMF
NeID string `json:"neId" form:"neId" binding:"required"`
RmUID string `json:"rmUID" form:"rmUID"`
RecordType string `json:"recordType" form:"recordType"` // 暂时没用到

View File

@@ -20,7 +20,7 @@ func (*CDREventSMSC) TableName() string {
// CDREventSMSCQuery CDR会话对象SMSC查询参数结构体
type CDREventSMSCQuery struct {
NeType string `json:"neType" form:"neType" binding:"required"` // 网元类型SMSC
NeType string `json:"neType" form:"neType" binding:"required,oneof=SMSC"` // 网元类型, 暂时支持SMSC
NeID string `json:"neId" form:"neId" binding:"required"`
RmUID string `json:"rmUID" form:"rmUID"`
RecordType string `json:"recordType" form:"recordType"` // 记录行为 MOSM MTSM

View File

@@ -21,17 +21,18 @@ func (*UEEventAMF) TableName() string {
// UEEventAMFQuery UE会话对象AMF查询参数结构体
type UEEventAMFQuery struct {
NeType string `json:"neType" form:"neType" binding:"required"` // 网元类型, 暂时支持AMF
NeID string `json:"neId" form:"neId" binding:"required"`
RmUID string `json:"rmUID" form:"rmUID"`
EventType string `json:"eventType" form:"eventType"` // 事件类型 auth-result detach cm-state
IMSI string `json:"imsi" form:"imsi"` // imsi
StartTime string `json:"startTime" form:"startTime"`
EndTime string `json:"endTime" form:"endTime"`
NeType string `json:"neType" form:"neType" binding:"required,oneof=AMF"` // 网元类型, 暂时支持AMF
NeID string `json:"neId" form:"neId" binding:"required"`
RmUID string `json:"rmUID" form:"rmUID"`
EventType string `json:"eventType" form:"eventType"` // 事件类型 auth-result detach cm-state
IMSI string `json:"imsi" form:"imsi"` // imsi
StartTime string `json:"startTime" form:"startTime"`
EndTime string `json:"endTime" form:"endTime"`
SortField string `json:"sortField" form:"sortField" binding:"omitempty,oneof=timestamp"` // 排序字段,填写结果字段
SortOrder string `json:"sortOrder" form:"sortOrder" binding:"omitempty,oneof=asc desc"` // 排序升降序asc desc
PageNum int64 `json:"pageNum" form:"pageNum" binding:"required"`
PageSize int64 `json:"pageSize" form:"pageSize" binding:"required"`
TenantName string `json:"tenantName" form:"tenantName"`
UserName string `json:"userName" form:"userName"`
SortField string `json:"sortField" form:"sortField" binding:"omitempty,oneof=timestamp"` // 排序字段,填写结果字段
SortOrder string `json:"sortOrder" form:"sortOrder" binding:"omitempty,oneof=asc desc"` // 排序升降序asc desc
PageNum int64 `json:"pageNum" form:"pageNum" binding:"required"`
PageSize int64 `json:"pageSize" form:"pageSize" binding:"required"`
}

View File

@@ -10,8 +10,9 @@ type UEEventMME struct {
EventType string `json:"eventType" gorm:"column:event_type"` // 事件类型 auth-result detach cm-state
EventJSONStr string `json:"eventJSON" gorm:"column:event_json"`
CreatedAt string `json:"createdAt" gorm:"column:created_at;default:CURRENT_TIMESTAMP"`
TenantID string `json:"tenantID" gorm:"-"`
TenantName string `json:"tenantName" gorm:"-"`
TenantID string `json:"tenantID" gorm:"-"`
TenantName string `json:"tenantName" gorm:"-"`
}
// TableName 表名称
@@ -21,17 +22,18 @@ func (*UEEventMME) TableName() string {
// UEEventMMEQuery UE会话对象MME查询参数结构体
type UEEventMMEQuery struct {
NeType string `json:"neType" form:"neType" binding:"required"` // 网元类型, 暂时支持MME
NeID string `json:"neId" form:"neId" binding:"required"`
RmUID string `json:"rmUID" form:"rmUID"`
EventType string `json:"eventType" form:"eventType"` // 事件类型 auth-result detach cm-state
IMSI string `json:"imsi" form:"imsi"` // imsi
StartTime string `json:"startTime" form:"startTime"`
EndTime string `json:"endTime" form:"endTime"`
NeType string `json:"neType" form:"neType" binding:"required,oneof=MME"` // 网元类型, 暂时支持MME
NeID string `json:"neId" form:"neId" binding:"required"`
RmUID string `json:"rmUID" form:"rmUID"`
EventType string `json:"eventType" form:"eventType"` // 事件类型 auth-result detach cm-state
IMSI string `json:"imsi" form:"imsi"` // imsi
StartTime string `json:"startTime" form:"startTime"`
EndTime string `json:"endTime" form:"endTime"`
SortField string `json:"sortField" form:"sortField" binding:"omitempty,oneof=timestamp"` // 排序字段,填写结果字段
SortOrder string `json:"sortOrder" form:"sortOrder" binding:"omitempty,oneof=asc desc"` // 排序升降序asc desc
PageNum int64 `json:"pageNum" form:"pageNum" binding:"required"`
PageSize int64 `json:"pageSize" form:"pageSize" binding:"required"`
TenantName string `json:"tenantName" form:"tenantName"`
UserName string `json:"userName" form:"userName"`
SortField string `json:"sortField" form:"sortField" binding:"omitempty,oneof=timestamp"` // 排序字段,填写结果字段
SortOrder string `json:"sortOrder" form:"sortOrder" binding:"omitempty,oneof=asc desc"` // 排序升降序asc desc
PageNum int64 `json:"pageNum" form:"pageNum" binding:"required"`
PageSize int64 `json:"pageSize" form:"pageSize" binding:"required"`
}

View File

@@ -280,6 +280,10 @@ func Setup(router *gin.Engine) {
middleware.PreAuthorize(nil),
controller.NewMME.NbInfoList,
)
mmeGroup.GET("/nb/list-cfg",
middleware.PreAuthorize(nil),
controller.NewMME.NbStateList,
)
}
// 网元SGWC

View File

@@ -35,11 +35,11 @@ type NeActionController struct {
//
// POST /pushFile
//
// @Tags network_element
// @Tags network_element/action
// @Accept json
// @Produce json
// @Success 200 {object} map[string]any{} "data"
// @Security ApiKeyAuth
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Sending files from local to network elements
// @Description Sending files from local to network elements
// @Router /ne/action/pushFile [post]
@@ -100,6 +100,15 @@ func (s *NeActionController) PushFile(c *gin.Context) {
// 从网元到本地获取文件
//
// GET /pullFile
//
// @Tags network_element/action
// @Accept json
// @Produce json
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Getting files from the network element to the local
// @Description Getting files from the network element to the local
// @Router /ne/action/pullFile [get]
func (s *NeActionController) PullFile(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var querys struct {
@@ -159,6 +168,15 @@ func (s *NeActionController) PullFile(c *gin.Context) {
// 从网元到本地获取目录压缩为ZIP
//
// GET /pullDirZip
//
// @Tags network_element/action
// @Accept json
// @Produce json
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Get directories compressed to ZIP from the network element to the local area
// @Description Get directories compressed to ZIP from the network element to the local area
// @Router /ne/action/pullDirZip [get]
func (s *NeActionController) PullDirZip(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var querys struct {
@@ -226,6 +244,15 @@ func (s *NeActionController) PullDirZip(c *gin.Context) {
// 查看网元端文件内容
//
// GET /viewFile
//
// @Tags network_element/action
// @Accept json
// @Produce json
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Viewing the contents of a file on the network element side
// @Description Viewing the contents of a file on the network element side
// @Router /ne/action/viewFile [get]
func (s *NeActionController) ViewFile(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var querys struct {
@@ -269,6 +296,15 @@ func (s *NeActionController) ViewFile(c *gin.Context) {
// 网元端文件列表
//
// GET /files
//
// @Tags network_element/action
// @Accept json
// @Produce json
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary List of files on the network element side
// @Description List of files on the network element side
// @Router /ne/action/files [get]
func (s *NeActionController) Files(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var querys struct {
@@ -333,6 +369,15 @@ func (s *NeActionController) Files(c *gin.Context) {
// 网元服务操作
//
// PUT /service
//
// @Tags network_element/action
// @Accept json
// @Produce json
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Network element service operation
// @Description Network element service operation
// @Router /ne/action/service [put]
func (s *NeActionController) Service(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var body struct {

View File

@@ -157,6 +157,16 @@ func (s *NeConfigController) Remove(c *gin.Context) {
// 网元参数配置可用属性值列表指定网元类型全部无分页
//
// GET /list/:neType
//
// @Tags network_element/config
// @Accept json
// @Produce json
// @Param neType path string true "NE Type" Enums(IMS,AMF,AUSF,UDM,SMF,PCF,NSSF,NRF,UPF,MME,CBC,OMC,SGWC)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Network Element Parameter Configuration Available Attribute Values List Specify Network Element Type All Unpaged
// @Description Network Element Parameter Configuration Available Attribute Values List Specify Network Element Type All Unpaged
// @Router /ne/config/list/{neType} [get]
func (s *NeConfigController) ListByNeType(c *gin.Context) {
language := ctx.AcceptLanguage(c)
neType := c.Param("neType")
@@ -171,6 +181,18 @@ func (s *NeConfigController) ListByNeType(c *gin.Context) {
// 网元参数配置数据信息
//
// GET /data
//
// @Tags network_element/config
// @Accept json
// @Produce json
// @Param neType query string true "NE Type" Enums(IMS,AMF,AUSF,UDM,SMF,PCF,NSSF,NRF,UPF,MME,CBC,OMC,SGWC)
// @Param neId query string true "NE ID" default(001)
// @Param paramName query string true "Available attributes, based on querying the list of attributes"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Network Element Parameter Configuration Data Information
// @Description Network Element Parameter Configuration Data Information
// @Router /ne/config/data [get]
func (s *NeConfigController) DataInfo(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var query struct {
@@ -213,6 +235,16 @@ func (s *NeConfigController) DataInfo(c *gin.Context) {
// 网元参数配置数据修改
//
// PUT /data
//
// @Tags network_element/config
// @Accept json
// @Produce json
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Network element parameter configuration data modification
// @Description Network element parameter configuration data modification
// @Router /ne/config/data [put]
func (s *NeConfigController) DataEdit(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var body struct {
@@ -255,6 +287,16 @@ func (s *NeConfigController) DataEdit(c *gin.Context) {
// 网元参数配置数据新增array
//
// POST /data
//
// @Tags network_element/config
// @Accept json
// @Produce json
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Network element parameter configuration data added (array)
// @Description Network element parameter configuration data added (array)
// @Router /ne/config/data [post]
func (s *NeConfigController) DataAdd(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var body struct {
@@ -300,6 +342,19 @@ func (s *NeConfigController) DataAdd(c *gin.Context) {
// 网元参数配置数据删除array
//
// DELETE /data
//
// @Tags network_element/config
// @Accept json
// @Produce json
// @Param neType query string true "NE Type" Enums(IMS,AMF,AUSF,UDM,SMF,PCF,NSSF,NRF,UPF,MME,CBC,OMC,SGWC)
// @Param neId query string true "NE ID" default(001)
// @Param paramName query string true "Available attributes, based on querying the list of attributes"
// @Param loc query string true "Array index"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Network element parameter configuration data deletion (array)
// @Description Network element parameter configuration data deletion (array)
// @Router /ne/config/data [delete]
func (s *NeConfigController) DataRemove(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var query struct {

View File

@@ -171,6 +171,16 @@ func (s *NeHostController) Remove(c *gin.Context) {
// 网元主机测试连接
//
// POST /test
//
// @Tags network_element/host
// @Accept json
// @Produce json
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Network element host test connection
// @Description Network element host test connection
// @Router /ne/host/test [post]
func (s *NeHostController) Test(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var body model.NeHost
@@ -239,6 +249,16 @@ func (s *NeHostController) Test(c *gin.Context) {
// 网元主机发送命令
//
// POST /cmd
//
// @Tags network_element/host
// @Accept json
// @Produce json
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary The network element host sends the command
// @Description The network element host sends the command
// @Router /ne/host/cmd [post]
func (s *NeHostController) Cmd(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var body struct {
@@ -311,6 +331,16 @@ func (s *NeHostController) Cmd(c *gin.Context) {
// 网元主机SSH方式检查服务器环境
//
// POST /checkBySSH
//
// @Tags network_element/host
// @Accept json
// @Produce json
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Checking the server environment by SSH method of Net Element Hosting
// @Description Checking the server environment by SSH method of Net Element Hosting
// @Router /ne/host/checkBySSH [post]
func (s *NeHostController) CheckBySSH(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var body model.NeHost
@@ -402,6 +432,16 @@ func (s *NeHostController) CheckBySSH(c *gin.Context) {
// 网元主机SSH方式授权免密发送
//
// POST /authorizedBySSH
//
// @Tags network_element/host
// @Accept json
// @Produce json
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Network element host SSH method of authorization for password-free sending
// @Description Network element host SSH method of authorization for password-free sending
// @Router /ne/host/authorizedBySSH [post]
func (s *NeHostController) AuthorizedBySSH(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var body model.NeHost

View File

@@ -12,8 +12,8 @@ import (
neFetchlink "be.ems/src/modules/network_element/fetch_link"
"be.ems/src/modules/network_element/model"
neService "be.ems/src/modules/network_element/service"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
)
// 实例化控制层 NeInfoController 结构体
@@ -39,6 +39,17 @@ var mutex sync.Mutex
// 网元信息状态
//
// GET /state
//
// @Tags network_element/info
// @Accept json
// @Produce json
// @Param neType query string true "NE Type" Enums(IMS,AMF,AUSF,UDM,SMF,PCF,NSSF,NRF,UPF,MME,CBC,OMC,SGWC)
// @Param neId query string true "NE ID" default(001)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Network element information state
// @Description Network element information state
// @Router /ne/info/state [get]
func (s *NeInfoController) State(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var querys struct {
@@ -91,6 +102,17 @@ func (s *NeInfoController) State(c *gin.Context) {
// 网元neType和neID查询
//
// GET /byTypeAndID
//
// @Tags network_element/info
// @Accept json
// @Produce json
// @Param neType query string true "NE Type" Enums(IMS,AMF,AUSF,UDM,SMF,PCF,NSSF,NRF,UPF,MME,CBC,OMC,SGWC)
// @Param neId query string true "NE ID" default(001)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Network element neType and neID queries
// @Description Network element neType and neID queries
// @Router /ne/info/byTypeAndID [get]
func (s *NeInfoController) NeTypeAndID(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var querys struct {
@@ -113,6 +135,19 @@ func (s *NeInfoController) NeTypeAndID(c *gin.Context) {
// 网元信息列表全部无分页
//
// GET /listAll
//
// @Tags network_element/info
// @Accept json
// @Produce json
// @Param neType query string true "NE Type"
// @Param neId query string true "NE ID" default(001)
// @Param bandStatus query boolean true "With status information"
// @Param bandHost query boolean true "With host information"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary The list of network element information is all unpaginated
// @Description The list of network element information is all unpaginated
// @Router /ne/info/listAll [get]
func (s *NeInfoController) ListAll(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var querys struct {
@@ -163,7 +198,7 @@ func (s *NeInfoController) Para5GFileWrite(c *gin.Context) {
Content map[string]any `json:"content" binding:"required"` // 内容
SyncNE []string `json:"syncNe"` // 同步到网元
}
if err := c.ShouldBindBodyWith(&body, binding.JSON); err != nil {
if err := c.ShouldBindBodyWithJSON(&body); err != nil {
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
return
}
@@ -209,7 +244,7 @@ func (s *NeInfoController) OAMFileWrite(c *gin.Context) {
Content map[string]any `json:"content" binding:"required"` // 内容
Sync bool `json:"sync"` // 同步到网元
}
if err := c.ShouldBindBodyWith(&body, binding.JSON); err != nil {
if err := c.ShouldBindBodyWithJSON(&body); err != nil {
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
return
}
@@ -232,6 +267,20 @@ func (s *NeInfoController) OAMFileWrite(c *gin.Context) {
// 网元信息列表
//
// GET /list
//
// @Tags network_element/info
// @Accept json
// @Produce json
// @Param bandStatus query boolean false "The result carries the state of the network element"
// @Param neId query string false "NE ID"
// @Param neType query string false "Ne Type"
// @Param pageNum query number true "pageNum" default(1)
// @Param pageSize query number true "pageSize" default(10)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Network element information list
// @Description Network element information list
// @Router /ne/info/list [get]
func (s *NeInfoController) List(c *gin.Context) {
query := ctx.QueryMapString(c)
bandStatus := false
@@ -245,6 +294,16 @@ func (s *NeInfoController) List(c *gin.Context) {
// 网元信息
//
// GET /:infoId
//
// @Tags network_element/info
// @Accept json
// @Produce json
// @Param value path string true "Row ID"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Network element information
// @Description Network element information
// @Router /ne/info/{value} [get]
func (s *NeInfoController) Info(c *gin.Context) {
language := ctx.AcceptLanguage(c)
infoId := c.Param("infoId")
@@ -266,10 +325,20 @@ func (s *NeInfoController) Info(c *gin.Context) {
// 网元信息新增
//
// POST /
//
// @Tags network_element/info
// @Accept json
// @Produce json
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Network element information addition
// @Description Network element information addition
// @Router /ne/info [post]
func (s *NeInfoController) Add(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var body model.NeInfo
err := c.ShouldBindBodyWith(&body, binding.JSON)
err := c.ShouldBindBodyWithJSON(&body)
if err != nil || body.ID != "" {
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
return
@@ -344,10 +413,20 @@ func (s *NeInfoController) Add(c *gin.Context) {
// 网元信息修改
//
// PUT /
//
// @Tags network_element/info
// @Accept json
// @Produce json
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Network element information modification
// @Description Network element information modification
// @Router /ne/info [put]
func (s *NeInfoController) Edit(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var body model.NeInfo
err := c.ShouldBindBodyWith(&body, binding.JSON)
err := c.ShouldBindBodyWithJSON(&body)
if err != nil || body.ID == "" {
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
return
@@ -442,6 +521,16 @@ func (s *NeInfoController) Edit(c *gin.Context) {
// 网元信息删除
//
// DELETE /:infoIds
//
// @Tags network_element/info
// @Accept json
// @Produce json
// @Param value path string true "Row ID, multiple separated by a , sign"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Network element information deletion
// @Description Network element information deletion
// @Router /ne/info/{value} [delete]
func (s *NeInfoController) Remove(c *gin.Context) {
language := ctx.AcceptLanguage(c)
infoIds := c.Param("infoIds")

View File

@@ -3,14 +3,14 @@ package controller
import (
"fmt"
"github.com/gin-gonic/gin"
"be.ems/src/framework/i18n"
"be.ems/src/framework/utils/ctx"
"be.ems/src/framework/vo/result"
neFetchlink "be.ems/src/modules/network_element/fetch_link"
"be.ems/src/modules/network_element/model"
neService "be.ems/src/modules/network_element/service"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
)
// 实例化控制层 NeLicenseController 结构体
@@ -30,6 +30,17 @@ type NeLicenseController struct {
// 网元授权激活列表
//
// GET /list
//
// @Tags network_element/license
// @Accept json
// @Produce json
// @Param neType query string true "NE Type" Enums(IMS,AMF,AUSF,UDM,SMF,PCF,NSSF,NRF,UPF,MME,CBC,OMC,SGWC)
// @Param neId query string true "NE ID" default(001)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Net Element License Activation List
// @Description Net Element License Activation List
// @Router /ne/license/list [get]
func (s *NeLicenseController) List(c *gin.Context) {
querys := ctx.QueryMap(c)
data := s.neLicenseService.SelectPage(querys)
@@ -69,6 +80,17 @@ func (s *NeLicenseController) Info(c *gin.Context) {
// 网元neType和neID查询
//
// GET /byTypeAndID
//
// @Tags network_element/license
// @Accept json
// @Produce json
// @Param neType query string true "NE Type" Enums(IMS,AMF,AUSF,UDM,SMF,PCF,NSSF,NRF,UPF,MME,CBC,OMC,SGWC)
// @Param neId query string true "NE ID" default(001)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Network element neType and neID queries
// @Description Network element neType and neID queries
// @Router /ne/license/byTypeAndID [get]
func (s *NeLicenseController) NeTypeAndID(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var querys struct {
@@ -93,6 +115,17 @@ func (s *NeLicenseController) NeTypeAndID(c *gin.Context) {
// 网元授权激活授权申请码
//
// GET /code
//
// @Tags network_element/license
// @Accept json
// @Produce json
// @Param neType query string true "NE Type" Enums(IMS,AMF,AUSF,UDM,SMF,PCF,NSSF,NRF,UPF,MME,CBC,OMC,SGWC)
// @Param neId query string true "NE ID" default(001)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Network Element License Activation License Application Code
// @Description Network Element License Activation License Application Code
// @Router /ne/license/code [get]
func (s *NeLicenseController) Code(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var querys struct {
@@ -131,10 +164,20 @@ func (s *NeLicenseController) Code(c *gin.Context) {
// 网元授权激活授权文件替换
//
// POST /change
//
// @Tags network_element/license
// @Accept json
// @Produce json
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Network element authorization activation status
// @Description Network element authorization activation status
// @Router /ne/license/change [post]
func (s *NeLicenseController) Change(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var body model.NeLicense
err := c.ShouldBindBodyWith(&body, binding.JSON)
err := c.ShouldBindBodyWithJSON(&body)
if err != nil || body.LicensePath == "" {
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
return
@@ -172,6 +215,17 @@ func (s *NeLicenseController) Change(c *gin.Context) {
// 网元授权激活状态
//
// GET /state
//
// @Tags network_element/license
// @Accept json
// @Produce json
// @Param neType query string true "NE Type" Enums(IMS,AMF,AUSF,UDM,SMF,PCF,NSSF,NRF,UPF,MME,CBC,OMC,SGWC)
// @Param neId query string true "NE ID" default(001)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Network element authorization activation status
// @Description Network element authorization activation status
// @Router /ne/license/state [get]
func (s *NeLicenseController) State(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var querys struct {

View File

@@ -28,6 +28,17 @@ type NeSoftwareController struct {
// 网元软件包列表
//
// GET /list
//
// @Tags network_element/software
// @Accept json
// @Produce json
// @Param neType query string true "NE Type" Enums(IMS,AMF,AUSF,UDM,SMF,PCF,NSSF,NRF,UPF,MME,CBC,OMC,SGWC)
// @Param neId query string true "NE ID" default(001)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary List of Network Element Software Packages
// @Description List of Network Element Software Packages
// @Router /ne/software/list [get]
func (s *NeSoftwareController) List(c *gin.Context) {
querys := ctx.QueryMap(c)
data := s.neSoftwareService.SelectPage(querys)
@@ -164,6 +175,16 @@ func (s *NeSoftwareController) Remove(c *gin.Context) {
// 网元软件包设为网元新版本
//
// POST /newNeVersion
//
// @Tags network_element/software
// @Accept json
// @Produce json
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Net Element package set to Net Element new version
// @Description Net Element package set to Net Element new version
// @Router /ne/software/newNeVersion [post]
func (s *NeSoftwareController) NewNeVersion(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var body model.NeSoftware

View File

@@ -55,6 +55,16 @@ func (s *NeVersionController) Info(c *gin.Context) {
// 网元版本操作
//
// POST /operate
//
// @Tags network_element/version
// @Accept json
// @Produce json
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Network element version operation
// @Description Network element version operation
// @Router /ne/version/operate [post]
func (s *NeVersionController) Operate(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var body struct {

View File

@@ -63,16 +63,31 @@ func AMFGnbStateList(neInfo model.NeInfo) ([]map[string]any, error) {
resBytes, err := fetch.Get(neUrl, nil, 60_000)
if err != nil {
errStr := err.Error()
logger.Warnf("AMFNbInfoList Get \"%s\"", neUrl)
logger.Errorf("AMFNbInfoList %s", errStr)
logger.Warnf("AMFGnbStateList Get \"%s\"", neUrl)
logger.Errorf("AMFGnbStateList %s", errStr)
return nil, fmt.Errorf("NeService AMF API Error")
}
// 序列化结果 {"data":[{"name": "Gnb","address": "192.168.8.1","state": "INACTIVE"}]}
// 序列化结果
// {
// "data": [
// {
// "index": 1,
// "name": "Gnb",
// "address": "192.168.8.1",
// "position": "Area-B",
// "offTime": "2024-12-30T16:31:57+08:00",
// "onTime": "2024-12-30T15:41:59+08:00",
// "state": "OFF",
// "nbName": "SA",
// "ueNum": 1
// },
// ]
// }
var resData map[string]any
err = json.Unmarshal(resBytes, &resData)
if err != nil {
logger.Errorf("AMFNbInfoList Unmarshal %s", err.Error())
logger.Errorf("AMFGnbStateList Unmarshal %s", err.Error())
return nil, err
}

View File

@@ -10,7 +10,7 @@ import (
"be.ems/src/modules/network_element/model"
)
// MMENbInfoList AMF基站信息
// MMENbInfoList MME基站信息
//
// 查询参数 {"id":"7"}
//
@@ -32,7 +32,7 @@ func MMENbInfoList(neInfo model.NeInfo, data map[string]string) ([]map[string]an
errStr := err.Error()
logger.Warnf("MMENbInfoList Get \"%s\"", neUrl)
logger.Errorf("MMENbInfoList %s", errStr)
return nil, fmt.Errorf("NeService AMF API Error")
return nil, fmt.Errorf("NeService MME API Error")
}
// 序列化结果 {"data":[{"id":"7","name":"NR-SA-GNB","address":"192.168.5.100:60110","ueNum":0}]}
@@ -54,3 +54,52 @@ func MMENbInfoList(neInfo model.NeInfo, data map[string]string) ([]map[string]an
}
return []map[string]any{}, nil
}
// MMEEnbStateList MME基站状态信息对比配置项enbList
//
// 返回结果 []
func MMEEnbStateList(neInfo model.NeInfo) ([]map[string]any, error) {
neUrl := fmt.Sprintf("http://%s:%d/api/rest/ueManagement/v1/elementType/mme/objectType/nbState", neInfo.IP, neInfo.Port)
resBytes, err := fetch.Get(neUrl, nil, 60_000)
if err != nil {
errStr := err.Error()
logger.Warnf("MMEEnbStateList Get \"%s\"", neUrl)
logger.Errorf("MMEEnbStateList %s", errStr)
return nil, fmt.Errorf("NeService MME API Error")
}
// 序列化结果
// {
// "data": [
// {
// "index": 1,
// "name": "Enb",
// "address": "192.168.8.1",
// "position": "Area-B",
// "offTime": "2024-12-30T16:31:57+08:00",
// "onTime": "2024-12-30T15:41:59+08:00",
// "state": "OFF",
// "nbName": "SA",
// "ueNum": 1
// },
// ]
// }
var resData map[string]any
err = json.Unmarshal(resBytes, &resData)
if err != nil {
logger.Errorf("MMEEnbStateList Unmarshal %s", err.Error())
return nil, err
}
// 固定返回字段,方便前端解析
if v, ok := resData["data"]; ok && v != nil {
if arr := v.([]any); len(arr) > 0 {
result := make([]map[string]any, len(arr))
for i, item := range arr {
result[i] = item.(map[string]any)
}
return result, nil
}
}
return []map[string]any{}, nil
}

View File

@@ -61,7 +61,8 @@ func SMFSubInfoList(neInfo model.NeInfo, data map[string]string) (map[string]any
}
// 固定页数量50条
if v, ok := data["pageNum"]; ok && v != "" {
query = append(query, fmt.Sprintf("pageNum=%s", v))
pageNum := parse.Number(v)
query = append(query, fmt.Sprintf("pageNum=%d", pageNum))
}
if len(query) > 0 {

View File

@@ -34,6 +34,18 @@ type SysConfigController struct {
// 参数配置列表
//
// GET /list
//
// @Tags system/config
// @Accept json
// @Produce json
// @Param configName query string false "configName"
// @Param pageNum query number true "pageNum" default(1)
// @Param pageSize query number true "pageSize" default(10)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Config Information List
// @Description Config Information List
// @Router /system/config/list [get]
func (s *SysConfigController) List(c *gin.Context) {
language := ctx.AcceptLanguage(c)
querys := ctx.QueryMap(c)

View File

@@ -31,6 +31,19 @@ type SysDeptController struct {
// 部门列表
//
// GET /list
//
// @Tags system/dept
// @Accept json
// @Produce json
// @Param deptId query string false "deptId"
// @Param parentId query string false "parentId"
// @Param deptName query string false "deptName"
// @Param status query string false "status" Enums(0, 1)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Dept Information List
// @Description Dept Information List
// @Router /system/dept/list [get]
func (s *SysDeptController) List(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var querys struct {

View File

@@ -35,6 +35,18 @@ type SysDictDataController struct {
// 字典数据列表
//
// GET /list
//
// @Tags system/dict/data
// @Accept json
// @Produce json
// @Param dictLabel query string false "dictLabel"
// @Param pageNum query number true "pageNum" default(1)
// @Param pageSize query number true "pageSize" default(10)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Dictionary Data List
// @Description Dictionary Data List
// @Router /system/dict/data/list [get]
func (s *SysDictDataController) List(c *gin.Context) {
language := ctx.AcceptLanguage(c)
querys := ctx.QueryMap(c)

View File

@@ -34,6 +34,18 @@ type SysDictTypeController struct {
// 字典类型列表
//
// GET /list
//
// @Tags system/dict/type
// @Accept json
// @Produce json
// @Param dictName query string false "dictName"
// @Param pageNum query number true "pageNum" default(1)
// @Param pageSize query number true "pageSize" default(10)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Dictionary Type List
// @Description Dictionary Type List
// @Router /system/dict/type/list [get]
func (s *SysDictTypeController) List(c *gin.Context) {
language := ctx.AcceptLanguage(c)
querys := ctx.QueryMap(c)

View File

@@ -37,6 +37,18 @@ type SysLogLoginController struct {
// 系统登录日志列表
//
// GET /list
//
// @Tags system/log/login
// @Accept json
// @Produce json
// @Param userName query string false "userName"
// @Param pageNum query number true "pageNum" default(1)
// @Param pageSize query number true "pageSize" default(10)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary System Login Log List
// @Description System Login Log List
// @Router /system/log/login/list [get]
func (s *SysLogLoginController) List(c *gin.Context) {
querys := ctx.QueryMap(c)
dataScopeSQL := ctx.LoginUserToDataScopeSQL(c, "d", "u")

View File

@@ -35,6 +35,18 @@ type SysLogOperateController struct {
// 操作日志列表
//
// GET /list
//
// @Tags system/log/operate
// @Accept json
// @Produce json
// @Param title query string false "title"
// @Param pageNum query number true "pageNum" default(1)
// @Param pageSize query number true "pageSize" default(10)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary System Operation Log List
// @Description System Operation Log List
// @Router /system/log/operate/list [get]
func (s *SysLogOperateController) List(c *gin.Context) {
language := ctx.AcceptLanguage(c)
querys := ctx.QueryMap(c)

View File

@@ -32,6 +32,17 @@ type SysMenuController struct {
// 菜单列表
//
// GET /list
//
// @Tags system/menu
// @Accept json
// @Produce json
// @Param menuName query string false "menuName"
// @Param status query string false "status" Enums(0, 1)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Menu Information List
// @Description Menu Information List
// @Router /system/menu/list [get]
func (s *SysMenuController) List(c *gin.Context) {
language := ctx.AcceptLanguage(c)
query := model.SysMenu{}

View File

@@ -35,6 +35,18 @@ type SysPostController struct {
// 岗位列表
//
// GET /list
//
// @Tags system/post
// @Accept json
// @Produce json
// @Param postName query string false "postName"
// @Param pageNum query number true "pageNum" default(1)
// @Param pageSize query number true "pageSize" default(10)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Post Information List
// @Description Post Information List
// @Router /system/post/list [get]
func (s *SysPostController) List(c *gin.Context) {
language := ctx.AcceptLanguage(c)
querys := ctx.QueryMap(c)

View File

@@ -44,6 +44,15 @@ type SysProfileController struct {
// 个人信息
//
// GET /
//
// @Tags system/user/profile
// @Accept json
// @Produce json
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Personal Information
// @Description Personal Information
// @Router /system/user/profile [get]
func (s *SysProfileController) Info(c *gin.Context) {
language := ctx.AcceptLanguage(c)
loginUser, err := ctx.LoginUser(c)
@@ -86,6 +95,16 @@ func (s *SysProfileController) Info(c *gin.Context) {
// 个人信息修改
//
// PUT /
//
// @Tags system/user/profile
// @Accept json
// @Produce json
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Personal Information Modification
// @Description Personal Information Modification
// @Router /system/user/profile [put]
func (s *SysProfileController) UpdateProfile(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var body struct {
@@ -183,6 +202,16 @@ func (s *SysProfileController) UpdateProfile(c *gin.Context) {
// 个人重置密码
//
// PUT /updatePwd
//
// @Tags system/user/profile
// @Accept json
// @Produce json
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Personal Reset Password
// @Description Personal Reset Password
// @Router /system/user/profile/updatePwd [put]
func (s *SysProfileController) UpdatePwd(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var body struct {
@@ -249,6 +278,16 @@ func (s *SysProfileController) UpdatePwd(c *gin.Context) {
// 个人头像上传
//
// POST /avatar
//
// @Tags system/user/profile
// @Accept multipart/form-data
// @Produce json
// @Param file formData file true "The file to upload."
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Personal avatar upload
// @Description Personal avatar upload
// @Router /system/user/profile/avatar [post]
func (s *SysProfileController) Avatar(c *gin.Context) {
language := ctx.AcceptLanguage(c)
formFile, err := c.FormFile("file")

View File

@@ -41,6 +41,18 @@ type SysRoleController struct {
// 角色列表
//
// GET /list
//
// @Tags system/role
// @Accept json
// @Produce json
// @Param roleName query string false "roleName"
// @Param pageNum query number true "pageNum" default(1)
// @Param pageSize query number true "pageSize" default(10)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Role Information List
// @Description Role Information List
// @Router /system/role/list [get]
func (s *SysRoleController) List(c *gin.Context) {
language := ctx.AcceptLanguage(c)
querys := ctx.QueryMap(c)

View File

@@ -50,6 +50,18 @@ type SysUserController struct {
// 用户信息列表
//
// GET /list
//
// @Tags system/user
// @Accept json
// @Produce json
// @Param userName query string false "userName"
// @Param pageNum query number true "pageNum" default(1)
// @Param pageSize query number true "pageSize" default(10)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary User Information List
// @Description User Information List
// @Router /system/user/list [get]
func (s *SysUserController) List(c *gin.Context) {
querys := ctx.QueryMap(c)
dataScopeSQL := ctx.LoginUserToDataScopeSQL(c, "d", "u")

View File

@@ -34,6 +34,18 @@ type IPerfController struct {
// iperf 版本信息
//
// GET /v
//
// @Tags tool/iperf
// @Accept json
// @Produce json
// @Param neType query string true "NE Type" Enums(IMS,AMF,AUSF,UDM,SMF,PCF,NSSF,NRF,UPF,MME,CBC,OMC,SGWC)
// @Param neId query string true "NE ID" default(001)
// @Param version query string true "Version" Enums(V2, V3)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary iperf version information
// @Description iperf version information
// @Router /tool/iperf/v [get]
func (s *IPerfController) Version(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var query struct {
@@ -58,6 +70,16 @@ func (s *IPerfController) Version(c *gin.Context) {
// iperf 软件安装
//
// POST /i
//
// @Tags tool/iperf
// @Accept json
// @Produce json
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary iperf software installation
// @Description iperf software installation
// @Router /tool/iperf/i [post]
func (s *IPerfController) Install(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var body struct {
@@ -80,6 +102,20 @@ func (s *IPerfController) Install(c *gin.Context) {
// iperf 软件运行
//
// GET /run
//
// @Tags tool/iperf
// @Accept json
// @Produce json
// @Param neType query string true "NE Type" Enums(IMS,AMF,AUSF,UDM,SMF,PCF,NSSF,NRF,UPF,MME,CBC,OMC,SGWC)
// @Param neId query string true "NE ID" default(001)
// @Param cols query number false "Terminal line characters" default(120)
// @Param rows query number false "Terminal display lines" default(40)
// @Param access_token query string true "Authorization"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary (ws://) iperf software running
// @Description (ws://) iperf software running
// @Router /tool/iperf/run [get]
func (s *IPerfController) Run(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var query struct {

View File

@@ -34,6 +34,16 @@ type PingController struct {
// ping 基本信息运行
//
// POST /
//
// @Tags tool/ping
// @Accept json
// @Produce json
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Ping for Basic Information Running
// @Description Ping for Basic Information Running
// @Router /tool/ping [post]
func (s *PingController) Statistics(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var body model.Ping
@@ -53,6 +63,16 @@ func (s *PingController) Statistics(c *gin.Context) {
// ping 传统UNIX运行
//
// GET /
//
// @Tags tool/ping
// @Accept json
// @Produce json
// @Param access_token query string true "Authorization"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary (ws://) Ping for Local UNIX running
// @Description (ws://) Ping for Local UNIX running
// @Router /tool/ping [get]
func (s *PingController) StatisticsOn(c *gin.Context) {
language := ctx.AcceptLanguage(c)
// 登录用户信息
@@ -84,6 +104,17 @@ func (s *PingController) StatisticsOn(c *gin.Context) {
// ping 网元端版本信息
//
// GET /v
//
// @Tags tool/ping
// @Accept json
// @Produce json
// @Param neType query string true "NE Type" Enums(IMS,AMF,AUSF,UDM,SMF,PCF,NSSF,NRF,UPF,MME,CBC,OMC,SGWC)
// @Param neId query string true "NE ID" default(001)
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Ping for version information on the network element side
// @Description Ping for version information on the network element side
// @Router /tool/ping/v [get]
func (s *PingController) Version(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var query struct {
@@ -106,6 +137,20 @@ func (s *PingController) Version(c *gin.Context) {
// ping 网元端UNIX运行
//
// GET /run
//
// @Tags tool/ping
// @Accept json
// @Produce json
// @Param neType query string true "NE Type" Enums(IMS,AMF,AUSF,UDM,SMF,PCF,NSSF,NRF,UPF,MME,CBC,OMC,SGWC)
// @Param neId query string true "NE ID" default(001)
// @Param cols query number false "Terminal line characters" default(120)
// @Param rows query number false "Terminal display lines" default(40)
// @Param access_token query string true "Authorization"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary (ws://) Ping for UNIX runs on the network element side
// @Description (ws://) Ping for UNIX runs on the network element side
// @Router /tool/ping/run [get]
func (s *PingController) Run(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var query struct {

View File

@@ -4,16 +4,14 @@ import (
"be.ems/src/framework/i18n"
"be.ems/src/framework/utils/ctx"
"be.ems/src/framework/vo/result"
neService "be.ems/src/modules/network_element/service"
traceService "be.ems/src/modules/trace/service"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
)
// 实例化控制层 TCPdumpController 结构体
var NewTCPdump = &TCPdumpController{
tcpdumpService: traceService.NewTCPdump,
neInfoService: neService.NewNeInfo,
}
// 信令抓包
@@ -21,12 +19,21 @@ var NewTCPdump = &TCPdumpController{
// PATH /tcpdump
type TCPdumpController struct {
tcpdumpService *traceService.TCPdump // 信令抓包服务
neInfoService *neService.NeInfo // 网元信息服务
}
// 网元抓包PACP 开始
//
// POST /start
//
// @Tags trace/tcpdump
// @Accept json
// @Produce json
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Network Element Capture Packet PACP Start
// @Description Network Element Capture Packet PACP Start
// @Router /trace/tcpdump/start [post]
func (s *TCPdumpController) DumpStart(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var body struct {
@@ -34,7 +41,7 @@ func (s *TCPdumpController) DumpStart(c *gin.Context) {
NeId string `json:"neId" binding:"required"` // 网元ID
Cmd string `json:"cmd" binding:"required"` // 命令 "-n -s 0 -v"
}
err := c.ShouldBindBodyWith(&body, binding.JSON)
err := c.ShouldBindBodyWithJSON(&body)
if err != nil {
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
return
@@ -51,6 +58,16 @@ func (s *TCPdumpController) DumpStart(c *gin.Context) {
// 网元抓包PACP 结束
//
// POST /stop
//
// @Tags trace/tcpdump
// @Accept json
// @Produce json
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary Network Element Capture Packet PACP Stop
// @Description Network Element Capture Packet PACP Stop
// @Router /trace/tcpdump/stop [post]
func (s *TCPdumpController) DumpStop(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var body struct {
@@ -58,7 +75,7 @@ func (s *TCPdumpController) DumpStop(c *gin.Context) {
NeId string `json:"neId" binding:"required"` // 网元ID
TaskCode string `json:"taskCode" binding:"required"` // 任务码,停止任务并查看日志信息
}
err := c.ShouldBindBodyWith(&body, binding.JSON)
err := c.ShouldBindBodyWithJSON(&body)
if err != nil {
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
return
@@ -75,6 +92,16 @@ func (s *TCPdumpController) DumpStop(c *gin.Context) {
// UPF标准版内部抓包
//
// POST /upf
//
// @Tags trace/tcpdump
// @Accept json
// @Produce json
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UPF Standard Edition Internal Grab Bag
// @Description UPF Standard Edition Internal Grab Bag
// @Router /trace/tcpdump/upf [post]
func (s *TCPdumpController) UPFTrace(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var body struct {
@@ -82,7 +109,7 @@ func (s *TCPdumpController) UPFTrace(c *gin.Context) {
NeId string `json:"neId" binding:"required"` // 网元ID
Cmd string `json:"cmd" binding:"required"` // 命令
}
err := c.ShouldBindBodyWith(&body, binding.JSON)
err := c.ShouldBindBodyWithJSON(&body)
if err != nil {
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
return

View File

@@ -32,6 +32,15 @@ type WSController struct {
// WS 通用
//
// GET /?subGroupIDs=0
//
// @Tags ws
// @Accept json
// @Produce json
// @Param subGroupID query string false "Subscribe to message groups, multiple separated by commas"
// @Success 200 {object} object "Response Results"
// @Summary (ws://) Generic
// @Description (ws://) Generic
// @Router /ws [get]
func (s *WSController) WS(c *gin.Context) {
language := ctx.AcceptLanguage(c)

View File

@@ -17,6 +17,19 @@ import (
// ShellView 终端交互式文件内容查看
//
// GET /view
//
// @Tags ws
// @Accept json
// @Produce json
// @Param neType query string true "NE Type" Enums(IMS,AMF,AUSF,UDM,SMF,PCF,NSSF,NRF,UPF,MME,CBC,OMC,SGWC)
// @Param neId query string true "NE ID" default(001)
// @Param cols query number false "Terminal line characters" default(120)
// @Param rows query number false "Terminal display lines" default(40)
// @Param access_token query string true "Authorization"
// @Success 200 {object} object "Response Results"
// @Summary (ws://) Terminal Interactive File Content Viewing
// @Description (ws://) Terminal Interactive File Content Viewing
// @Router /ws/view [get]
func (s *WSController) ShellView(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var query struct {