Skip to content
This repository was archived by the owner on May 27, 2025. It is now read-only.

Commit 01ac413

Browse files
authored
Merge pull request #41 from humpback/develop-0.0.1
Develop 0.0.1
2 parents 34e329f + 44c31b1 commit 01ac413

File tree

136 files changed

+5592
-3429
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

136 files changed

+5592
-3429
lines changed

backend/api/api.go

Lines changed: 65 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,88 +1,90 @@
11
package api
22

33
import (
4-
"context"
5-
"fmt"
6-
"log/slog"
7-
"net/http"
8-
9-
"humpback/api/handle"
10-
"humpback/api/middleware"
11-
"humpback/api/static"
12-
"humpback/config"
13-
"humpback/types"
14-
15-
"github.com/gin-gonic/gin"
4+
"context"
5+
"fmt"
6+
"log/slog"
7+
"net/http"
8+
9+
"humpback/api/handle"
10+
"humpback/api/middleware"
11+
"humpback/api/static"
12+
"humpback/config"
13+
"humpback/types"
14+
15+
"github.com/gin-gonic/gin"
1616
)
1717

1818
type Router struct {
19-
engine *gin.Engine
20-
httpSrv *http.Server
19+
engine *gin.Engine
20+
httpSrv *http.Server
2121
}
2222

2323
func InitRouter(nodeCh chan types.NodeSimpleInfo, serviceCh chan types.ServiceChangeInfo) *Router {
24-
gin.SetMode(gin.ReleaseMode)
25-
gin.Default()
26-
r := &Router{engine: gin.New()}
27-
r.setMiddleware(nodeCh, serviceCh)
28-
r.setRoute()
29-
return r
24+
gin.SetMode(gin.ReleaseMode)
25+
gin.Default()
26+
r := &Router{engine: gin.New()}
27+
r.setMiddleware(nodeCh, serviceCh)
28+
r.setRoute()
29+
return r
3030
}
3131

3232
func (api *Router) Start() {
33-
go func() {
34-
listeningAddress := fmt.Sprintf("%s:%s", config.NodeArgs().HostIp, config.NodeArgs().SitePort)
35-
slog.Info("[Api] Listening...", "Address", listeningAddress)
36-
api.httpSrv = &http.Server{
37-
Addr: listeningAddress,
38-
Handler: api.engine,
39-
}
40-
if err := api.httpSrv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
41-
slog.Error(fmt.Sprintf("[Api] Listening %s failed: %s", listeningAddress, err))
42-
}
43-
}()
33+
go func() {
34+
listeningAddress := fmt.Sprintf("%s:%s", config.NodeArgs().HostIp, config.NodeArgs().SitePort)
35+
slog.Info("[Site Api] Listening...", "Address", listeningAddress)
36+
api.httpSrv = &http.Server{
37+
Addr: listeningAddress,
38+
Handler: api.engine,
39+
}
40+
if err := api.httpSrv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
41+
slog.Error("[Site Api] Listening failed", "Address", listeningAddress, "Error", err)
42+
}
43+
}()
4444
}
4545

4646
func (api *Router) Close(c context.Context) error {
47-
return api.httpSrv.Shutdown(c)
47+
return api.httpSrv.Shutdown(c)
4848
}
4949

5050
func (api *Router) setMiddleware(nodeCh chan types.NodeSimpleInfo, serviceCh chan types.ServiceChangeInfo) {
51-
api.engine.Use(middleware.Log(), middleware.CorsCheck(), middleware.HandleError(), middleware.SetEventChannel(nodeCh, serviceCh))
51+
api.engine.Use(middleware.Log(), middleware.CorsCheck(), middleware.HandleError(), middleware.SetEventChannel(nodeCh, serviceCh))
5252
}
5353

5454
func (api *Router) setRoute() {
55-
var routes = map[string]map[string][]any{
56-
"/webapi": {
57-
"/common": {handle.RouteCommon},
58-
"/user": {handle.RouteUser},
59-
"/team": {middleware.CheckLogin(), handle.RouteTeam},
60-
"/config": {middleware.CheckLogin(), handle.RouteConfig},
61-
"/registry": {middleware.CheckLogin(), handle.RouteRegistry},
62-
"/node": {middleware.CheckLogin(), handle.RouteNodes},
63-
"/group": {middleware.CheckLogin(), handle.RouteGroup},
64-
"/group/:groupId/service": {middleware.CheckLogin(), middleware.CheckInGroup(), handle.RouteService},
65-
"/group/:groupId/node": {middleware.CheckLogin(), middleware.CheckInGroup(), handle.RouteGroupNode},
66-
"/group/:groupId/container": {middleware.CheckLogin(), middleware.CheckInGroup(), handle.RouteGroupContainer},
67-
},
68-
}
69-
70-
for group, list := range routes {
71-
for path, fList := range list {
72-
routerGroup := api.engine.Group(fmt.Sprintf("%s%s", group, path), parseSliceAnyToSliceFunc(fList[:len(fList)-1])...)
73-
groupFunc := fList[len(fList)-1].(func(*gin.RouterGroup))
74-
groupFunc(routerGroup)
75-
}
76-
}
77-
api.engine.NoRoute(static.Web)
55+
var routes = map[string]map[string][]any{
56+
"/webapi": {
57+
"/common": {handle.RouteCommon},
58+
"/user": {handle.RouteUser},
59+
"/team": {middleware.CheckLogin(), handle.RouteTeam},
60+
"/config": {middleware.CheckLogin(), handle.RouteConfig},
61+
"/registry": {middleware.CheckLogin(), handle.RouteRegistry},
62+
"/node": {middleware.CheckLogin(), handle.RouteNodes},
63+
"/group": {middleware.CheckLogin(), handle.RouteGroup},
64+
"/group/:groupId/service": {middleware.CheckLogin(), middleware.CheckInGroup(), handle.RouteService},
65+
"/group/:groupId/node": {middleware.CheckLogin(), middleware.CheckInGroup(), handle.RouteGroupNode},
66+
"/statistics-count": {middleware.CheckLogin(), handle.RouteStatisticsCount},
67+
"/activity": {middleware.CheckLogin(), handle.RouteActivity},
68+
"/dashboard": {middleware.CheckLogin(), handle.RouteDashboard},
69+
},
70+
}
71+
72+
for group, list := range routes {
73+
for path, fList := range list {
74+
routerGroup := api.engine.Group(fmt.Sprintf("%s%s", group, path), parseSliceAnyToSliceFunc(fList[:len(fList)-1])...)
75+
groupFunc := fList[len(fList)-1].(func(*gin.RouterGroup))
76+
groupFunc(routerGroup)
77+
}
78+
}
79+
api.engine.NoRoute(static.Web)
7880
}
7981

8082
func parseSliceAnyToSliceFunc(functions []any) []gin.HandlerFunc {
81-
result := make([]gin.HandlerFunc, 0)
82-
for _, f := range functions {
83-
if fun, ok := f.(gin.HandlerFunc); ok {
84-
result = append(result, fun)
85-
}
86-
}
87-
return result
83+
result := make([]gin.HandlerFunc, 0)
84+
for _, f := range functions {
85+
if fun, ok := f.(gin.HandlerFunc); ok {
86+
result = append(result, fun)
87+
}
88+
}
89+
return result
8890
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package handle
2+
3+
import (
4+
"net/http"
5+
6+
"github.com/gin-gonic/gin"
7+
"humpback/api/handle/models"
8+
"humpback/api/middleware"
9+
"humpback/internal/controller"
10+
)
11+
12+
func RouteActivity(router *gin.RouterGroup) {
13+
router.POST("/query", activityQuery)
14+
router.POST("/all/query", activityAllQuery)
15+
}
16+
17+
func activityQuery(c *gin.Context) {
18+
body := new(models.ActivityQueryReqInfo)
19+
if !middleware.BindAndCheckBody(c, body) {
20+
return
21+
}
22+
body.UserInfo = middleware.GetUserInfo(c)
23+
result, err := controller.ActivityQuery(body)
24+
if err != nil {
25+
middleware.AbortErr(c, err)
26+
return
27+
}
28+
c.JSON(http.StatusOK, result)
29+
}
30+
31+
func activityAllQuery(c *gin.Context) {
32+
body := new(models.ActivityAllQueryReqInfo)
33+
if !middleware.BindAndCheckBody(c, body) {
34+
return
35+
}
36+
body.UserInfo = middleware.GetUserInfo(c)
37+
result, err := controller.ActivityAllQuery(body)
38+
if err != nil {
39+
middleware.AbortErr(c, err)
40+
return
41+
}
42+
c.JSON(http.StatusOK, result)
43+
}

backend/api/handle/handle_config.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ func configCreate(c *gin.Context) {
2323
if !middleware.BindAndCheckBody(c, body) {
2424
return
2525
}
26-
id, err := controller.ConfigCreate(body)
26+
userInfo := middleware.GetUserInfo(c)
27+
id, err := controller.ConfigCreate(userInfo, body)
2728
if err != nil {
2829
middleware.AbortErr(c, err)
2930
return
@@ -36,7 +37,8 @@ func configUpdate(c *gin.Context) {
3637
if !middleware.BindAndCheckBody(c, body) {
3738
return
3839
}
39-
id, err := controller.ConfigUpdate(body)
40+
userInfo := middleware.GetUserInfo(c)
41+
id, err := controller.ConfigUpdate(userInfo, body)
4042
if err != nil {
4143
middleware.AbortErr(c, err)
4244
return
@@ -69,7 +71,8 @@ func configQuery(c *gin.Context) {
6971

7072
func configDelete(c *gin.Context) {
7173
id := c.Param("id")
72-
if err := controller.ConfigDelete(id); err != nil {
74+
userInfo := middleware.GetUserInfo(c)
75+
if err := controller.ConfigDelete(userInfo, id); err != nil {
7376
middleware.AbortErr(c, err)
7477
return
7578
}

backend/api/handle/handle_container.go

Lines changed: 0 additions & 67 deletions
This file was deleted.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package handle
2+
3+
import (
4+
"net/http"
5+
6+
"github.com/gin-gonic/gin"
7+
"humpback/api/middleware"
8+
"humpback/internal/controller"
9+
)
10+
11+
func RouteDashboard(router *gin.RouterGroup) {
12+
router.GET("/resource-statistics", dashboardResourceStatistics)
13+
}
14+
15+
func dashboardResourceStatistics(c *gin.Context) {
16+
userInfo := middleware.GetUserInfo(c)
17+
result, err := controller.DashboardResourceStatistics(userInfo)
18+
if err != nil {
19+
middleware.AbortErr(c, err)
20+
return
21+
}
22+
c.JSON(http.StatusOK, result)
23+
}

backend/api/handle/handle_group.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ func groupCreate(c *gin.Context) {
2424
if !middleware.BindAndCheckBody(c, body) {
2525
return
2626
}
27-
id, err := controller.GroupCreate(body)
27+
userInfo := middleware.GetUserInfo(c)
28+
id, err := controller.GroupCreate(userInfo, body)
2829
if err != nil {
2930
middleware.AbortErr(c, err)
3031
return
@@ -83,7 +84,8 @@ func groupQuery(c *gin.Context) {
8384

8485
func groupDelete(c *gin.Context) {
8586
id := c.Param("groupId")
86-
if err := controller.GroupDelete(middleware.GetServiceChangeChannel(c), id); err != nil {
87+
userInfo := middleware.GetUserInfo(c)
88+
if err := controller.GroupDelete(userInfo, middleware.GetServiceChangeChannel(c), id); err != nil {
8789
middleware.AbortErr(c, err)
8890
return
8991
}

0 commit comments

Comments
 (0)