diff --git a/src/modules/rdb/http/router.go b/src/modules/rdb/http/router.go index 17aebdfeb82aa32e8b327614444bd29ecbdf961c..2e77ca9447113b2face0a3f7ed5dd91724d962c3 100644 --- a/src/modules/rdb/http/router.go +++ b/src/modules/rdb/http/router.go @@ -172,6 +172,7 @@ func Config(r *gin.Engine) { v1.GET("/node/:id", nodeGet) v1.GET("/node/:id/projs", v1treeUntilProjectGetsByNid) v1.GET("/tree/projs", v1TreeUntilProjectGets) + v1.GET("/tree", v1TreeUntilTypGets) // 外部系统推送一些操作日志过来,RDB统一存储,实际用MQ会更好一些 v1.POST("/resoplogs", v1OperationLogResPost) diff --git a/src/modules/rdb/http/router_tree.go b/src/modules/rdb/http/router_tree.go index b268426483b8dce30abe1f53abeadd4722b9ce68..fee286e4343bfb0fdcbf6088860d1e77b5cfadc6 100644 --- a/src/modules/rdb/http/router_tree.go +++ b/src/modules/rdb/http/router_tree.go @@ -160,6 +160,35 @@ func v1TreeUntilProjectGets(c *gin.Context) { renderData(c, oks, err) } +func v1TreeUntilTypGets(c *gin.Context) { + username := queryStr(c, "username") + cate := queryStr(c, "cate") + onlyCate := queryInt(c, "onlyCate", 0) + pid := queryInt64(c, "pid", -1) + user, err := models.UserGet("username=?", username) + dangerous(err) + + oks, err := models.TreeUntilTypGetByUser(user, cate) + dangerous(err) + + var ret []models.Node + for _, node := range oks { + //指定了父节点,不是想要的父节点 + if pid != -1 && node.Pid != pid { + continue + } + + //指定了节点类型,不是想要的节点类型 + if onlyCate != 0 && node.Cate != cate { + continue + } + + ret = append(ret, node) + } + + renderData(c, ret, err) +} + // 这个方法,展示的树只到organization func treeUntilOrganizationGets(c *gin.Context) { me := loginUser(c)