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
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)

View File

@@ -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)

View File

@@ -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"`