fix: kpi support multi-tenant

This commit is contained in:
2024-06-21 19:32:58 +08:00
parent dde4b6f73e
commit 4f4b4ca579
3 changed files with 44 additions and 9 deletions

View File

@@ -1,6 +1,8 @@
package result package result
import ( import (
"fmt"
"be.ems/src/framework/constants/result" "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 := make(map[string]any)
args["code"] = result.CODE_ERROR args["code"] = result.CODE_ERROR
args["msg"] = msg args["msg"] = msg
return args 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 { func ErrData(data any) map[string]any {
args := make(map[string]any) args := make(map[string]any)

View File

@@ -1,7 +1,11 @@
package controller package controller
import ( import (
"fmt"
"be.ems/lib/core/datasource"
"be.ems/lib/core/utils/date" "be.ems/lib/core/utils/date"
"be.ems/lib/log"
"be.ems/src/framework/i18n" "be.ems/src/framework/i18n"
"be.ems/src/framework/utils/ctx" "be.ems/src/framework/utils/ctx"
"be.ems/src/framework/vo/result" "be.ems/src/framework/vo/result"
@@ -54,13 +58,33 @@ func (s *PerfKPIController) GoldKPI(c *gin.Context) {
return return
} }
// 查询网元获取IP if querys.NeID != "" {
neInfo := s.neInfoService.SelectNeInfoByNeTypeAndNeID(querys.NeType, querys.NeID) // 查询网元获取IP
if neInfo.NeId != querys.NeID || neInfo.IP == "" { neInfo := s.neInfoService.SelectNeInfoByNeTypeAndNeID(querys.NeType, querys.NeID)
c.JSON(200, result.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) if neInfo.NeId != querys.NeID || neInfo.IP == "" {
return 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) kpiData := s.perfKPIService.SelectGoldKPI(querys)

View File

@@ -12,8 +12,9 @@ type GoldKPITitle struct {
// GoldKPIQuery 黄金指标查询参数结构体 // GoldKPIQuery 黄金指标查询参数结构体
type GoldKPIQuery struct { type GoldKPIQuery struct {
NeType string `form:"neType" binding:"required"` NeType string `form:"neType" binding:"required"`
NeID string `form:"neId" binding:"required"` //NeID string `form:"neId" binding:"required"`
NeID string `form:"neId"`
StartTime string `form:"startTime" binding:"required"` StartTime string `form:"startTime" binding:"required"`
EndTime string `form:"endTime" binding:"required"` EndTime string `form:"endTime" binding:"required"`
Interval int64 `form:"interval" binding:"required"` Interval int64 `form:"interval" binding:"required"`