diff --git a/api/desc/core/pcm-core.api b/api/desc/core/pcm-core.api index a340da14..6945ac8d 100644 --- a/api/desc/core/pcm-core.api +++ b/api/desc/core/pcm-core.api @@ -32,6 +32,23 @@ type ( } ) +type ( + HomeOverviewReq { + + } + HomeOverviewResp { + Code int `json:"code"` + Message string `json:"message"` + Data HomeOverviewData `json:"data"` + } + HomeOverviewData{ + AdaptSum int64 `json:"adaptSum"` + ClusterSum int64 `json:"clusterSum"` + StorageSum float32 `json:"storageSum"` + TaskSum int64 `json:"taskSum"` + } +) + type remoteResp { Code int `json:"code"` Message string `json:"message"` diff --git a/api/desc/pcm.api b/api/desc/pcm.api index 2c76692c..96c733f8 100644 --- a/api/desc/pcm.api +++ b/api/desc/pcm.api @@ -137,6 +137,10 @@ service pcm { @doc "Statistical task status" @handler countTaskStatus get /core/task/countTaskStatus () returns(TaskStatusResp) + + @doc "Home Page Overview" + @handler homeOverviewHandler + get /core/homeOverview (HomeOverviewReq) returns (HomeOverviewResp) } //hpc二级接口 diff --git a/api/internal/handler/core/homeoverviewhandler.go b/api/internal/handler/core/homeoverviewhandler.go new file mode 100644 index 00000000..3cf4ac59 --- /dev/null +++ b/api/internal/handler/core/homeoverviewhandler.go @@ -0,0 +1,28 @@ +package core + +import ( + "net/http" + + "github.com/zeromicro/go-zero/rest/httpx" + "gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/core" + "gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types" +) + +func HomeOverviewHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.HomeOverviewReq + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := core.NewHomeOverviewLogic(r.Context(), svcCtx) + resp, err := l.HomeOverview(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/api/internal/handler/routes.go b/api/internal/handler/routes.go index a68efc58..f8c0e650 100644 --- a/api/internal/handler/routes.go +++ b/api/internal/handler/routes.go @@ -165,6 +165,11 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) { Path: "/core/task/countTaskStatus", Handler: core.CountTaskStatusHandler(serverCtx), }, + { + Method: http.MethodGet, + Path: "/core/homeOverview", + Handler: core.HomeOverviewHandler(serverCtx), + }, }, rest.WithPrefix("/pcm/v1"), ) diff --git a/api/internal/logic/core/homeoverviewlogic.go b/api/internal/logic/core/homeoverviewlogic.go new file mode 100644 index 00000000..927a9f85 --- /dev/null +++ b/api/internal/logic/core/homeoverviewlogic.go @@ -0,0 +1,73 @@ +package core + +import ( + "context" + + "gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type HomeOverviewLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewHomeOverviewLogic(ctx context.Context, svcCtx *svc.ServiceContext) *HomeOverviewLogic { + return &HomeOverviewLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *HomeOverviewLogic) HomeOverview(req *types.HomeOverviewReq) (resp *types.HomeOverviewResp, err error) { + // todo: add your logic here and delete this line + resp = &types.HomeOverviewResp{} + var AdapterSum int // + var StorageSum float32 // + var ClusterSum int // + var TaskSum int // + //Task + sqlStrTask := "SELECT COUNT(*) FROM `task`" + txTask := l.svcCtx.DbEngin.Raw(sqlStrTask).Scan(&TaskSum) + if txTask.Error != nil { + logx.Error(err) + return nil, txTask.Error + } + + //Storage + sqlStrStorage := "SELECT SUM(t.storage_space) as storageSum FROM `t_storage_device` t" + txStorage := l.svcCtx.DbEngin.Raw(sqlStrStorage).Scan(&StorageSum) + if txTask.Error != nil { + logx.Error(err) + return nil, txStorage.Error + } + + //Cluster + sqlStrCluster := "SELECT COUNT(*) FROM `t_cluster`" + txCluster := l.svcCtx.DbEngin.Raw(sqlStrCluster).Scan(&ClusterSum) + if txTask.Error != nil { + logx.Error(err) + return nil, txCluster.Error + } + + //Adapter + sqlStrAdapter := "SELECT COUNT(*) FROM `t_adapter`" + txAdapter := l.svcCtx.DbEngin.Raw(sqlStrAdapter).Scan(&AdapterSum) + if txTask.Error != nil { + logx.Error(err) + return nil, txAdapter.Error + } + + resp.Data.TaskSum = int64(TaskSum) + resp.Data.StorageSum = StorageSum + resp.Data.AdaptSum = int64(AdapterSum) + resp.Data.ClusterSum = int64(ClusterSum) + + resp.Code = 200 + resp.Message = "Success" + return resp, nil +} diff --git a/api/internal/types/types.go b/api/internal/types/types.go index 59dd185d..e3bc446c 100644 --- a/api/internal/types/types.go +++ b/api/internal/types/types.go @@ -25,6 +25,22 @@ type CenterIndex struct { CenterType string `json:"centerType"` } +type HomeOverviewReq struct { +} + +type HomeOverviewResp struct { + Code int `json:"code"` + Message string `json:"message"` + Data HomeOverviewData `json:"data"` +} + +type HomeOverviewData struct { + AdaptSum int64 `json:"adaptSum"` + ClusterSum int64 `json:"clusterSum"` + StorageSum float32 `json:"storageSum"` + TaskSum int64 `json:"taskSum"` +} + type RemoteResp struct { Code int `json:"code"` Message string `json:"message"`