diff --git a/src/framework/vo/result/result.go b/src/framework/vo/result/result.go index 7ff154ff..95310127 100644 --- a/src/framework/vo/result/result.go +++ b/src/framework/vo/result/result.go @@ -1,6 +1,8 @@ package result import ( + "fmt" + "be.ems/src/framework/constants/result" ) @@ -54,13 +56,21 @@ func Err(v map[string]any) map[string]any { } // 响应失败结果信息 -func ErrMsg(msg string) map[string]any { +func ErrMsg(msg string, fmt ...any) map[string]any { args := make(map[string]any) args["code"] = result.CODE_ERROR args["msg"] = msg return args } +// 响应失败结果信息 +func ErrMsgFmt(msg string, args ...any) map[string]any { + argv := make(map[string]any) + argv["code"] = result.CODE_ERROR + argv["msg"] = fmt.Sprintf(msg, args...) + return argv +} + // 响应失败结果数据 func ErrData(data any) map[string]any { args := make(map[string]any) diff --git a/src/modules/network_data/controller/perf_kpi.go b/src/modules/network_data/controller/perf_kpi.go index fe231d55..ad457a2f 100644 --- a/src/modules/network_data/controller/perf_kpi.go +++ b/src/modules/network_data/controller/perf_kpi.go @@ -1,7 +1,11 @@ package controller import ( + "fmt" + + "be.ems/lib/core/datasource" "be.ems/lib/core/utils/date" + "be.ems/lib/log" "be.ems/src/framework/i18n" "be.ems/src/framework/utils/ctx" "be.ems/src/framework/vo/result" @@ -54,13 +58,33 @@ func (s *PerfKPIController) GoldKPI(c *gin.Context) { return } - // 查询网元获取IP - neInfo := s.neInfoService.SelectNeInfoByNeTypeAndNeID(querys.NeType, querys.NeID) - if neInfo.NeId != querys.NeID || neInfo.IP == "" { - c.JSON(200, result.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) - return + if querys.NeID != "" { + // 查询网元获取IP + neInfo := s.neInfoService.SelectNeInfoByNeTypeAndNeID(querys.NeType, querys.NeID) + if neInfo.NeId != querys.NeID || neInfo.IP == "" { + c.JSON(200, result.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) + return + } + querys.RmUID = neInfo.RmUID + log.Tracef("neInfo.RmUID=%s", neInfo.RmUID) + } else { // tenant, useName -> tenantID + var userName, rmUID string + userName = ctx.LoginUserToUserName(c) + // multi-tenancy, useName->tenantID->UPF.001(NEType.NEID)->rmUID + selectSQL := fmt.Sprintf(`SELECT rm_uid FROM ne_info n WHERE CONCAT(n.ne_type,'.',n.ne_id) = + (SELECT t.tenancy_key FROM sys_tenant t WHERE t.status='1' AND t.tenancy_type='NE' AND t.parent_id = + (SELECT u.tenant_id FROM sys_user u WHERE u.user_name='%s'))`, userName) + _, err := datasource.DefaultDB().SQL(selectSQL).Cols("rm_uid").Get(&rmUID) + if err != nil { + c.JSON(200, result.ErrMsgFmt("DB Get error: %s", err.Error())) + return + } else if rmUID == "" { + c.JSON(200, result.ErrMsgFmt("NOT FOUND target NE")) + return + } + querys.RmUID = rmUID + log.Tracef("rmUID=%s", rmUID) } - querys.RmUID = neInfo.RmUID // 查询数据 kpiData := s.perfKPIService.SelectGoldKPI(querys) diff --git a/src/modules/network_data/model/perf_kpi.go b/src/modules/network_data/model/perf_kpi.go index 108d81f2..4e099dd4 100644 --- a/src/modules/network_data/model/perf_kpi.go +++ b/src/modules/network_data/model/perf_kpi.go @@ -12,8 +12,9 @@ type GoldKPITitle struct { // GoldKPIQuery 黄金指标查询参数结构体 type GoldKPIQuery struct { - NeType string `form:"neType" binding:"required"` - NeID string `form:"neId" binding:"required"` + NeType string `form:"neType" binding:"required"` + //NeID string `form:"neId" binding:"required"` + NeID string `form:"neId"` StartTime string `form:"startTime" binding:"required"` EndTime string `form:"endTime" binding:"required"` Interval int64 `form:"interval" binding:"required"`