From ee0013fc18899823fab2fce70e04b9a7d38d0f09 Mon Sep 17 00:00:00 2001 From: zhangjian <178459446@qq.com> Date: Wed, 12 Jul 2023 09:01:18 +0800 Subject: [PATCH] 12 --- .../nebula/graph/base/BaseGraphSerice.java | 13 +++++++++++++ .../application/nebula/graph/base/GqlTemplate.java | 2 ++ .../graph/conrtroller/NebulaOperateController.java | 14 ++++++++++++++ .../application/nebula/graph/query/NebulaQo.java | 4 ++++ 4 files changed, 33 insertions(+) diff --git a/api/src/main/java/com/wx/application/nebula/graph/base/BaseGraphSerice.java b/api/src/main/java/com/wx/application/nebula/graph/base/BaseGraphSerice.java index adf1e66..75c4a10 100644 --- a/api/src/main/java/com/wx/application/nebula/graph/base/BaseGraphSerice.java +++ b/api/src/main/java/com/wx/application/nebula/graph/base/BaseGraphSerice.java @@ -730,6 +730,19 @@ public class BaseGraphSerice { return ResultSetUtils.printResultPath(resultSet); } + /** + * 根据明确关系查询一个节点的周边一层节点关系 + * @param nQ + * @return + */ + public NebulaModel findOnePathById(final String space,final String vid, List relations) { + final String fmtVid = StrUtil.format("\"{}\"", vid); + final String rl = StringUtils.join(relations, "|"); + final String fmtrl = StrUtil.format("[r:{}]", rl); + final String nGql = StrUtil.format(GqlTemplate.WITHRELATIONBYID, fmtrl, fmtVid); + ResultSet resultSet = executeGql(space, nGql); + return ResultSetUtils.printResultPath(resultSet); + } /** * 查询一个头节点和尾结点的关系 diff --git a/api/src/main/java/com/wx/application/nebula/graph/base/GqlTemplate.java b/api/src/main/java/com/wx/application/nebula/graph/base/GqlTemplate.java index d71fca3..4fffa35 100644 --- a/api/src/main/java/com/wx/application/nebula/graph/base/GqlTemplate.java +++ b/api/src/main/java/com/wx/application/nebula/graph/base/GqlTemplate.java @@ -49,6 +49,8 @@ public interface GqlTemplate { final static String ONERELATIONBYID = "MATCH p=(n1)-->(n2) where id(n1)=={} RETURN p"; + final static String WITHRELATIONBYID = "MATCH p=(n1)-{}->(n2) where id(n1)=={} RETURN p"; + final static String ONERELATIONBYSRCIDANDDCTID = "MATCH p=(n1)-->(n2) where id(n1)=={} and id(n2)=={} RETURN p"; final static String PAGING =" | limit {},{}"; diff --git a/api/src/main/java/com/wx/application/nebula/graph/conrtroller/NebulaOperateController.java b/api/src/main/java/com/wx/application/nebula/graph/conrtroller/NebulaOperateController.java index 187f661..ad92a8a 100644 --- a/api/src/main/java/com/wx/application/nebula/graph/conrtroller/NebulaOperateController.java +++ b/api/src/main/java/com/wx/application/nebula/graph/conrtroller/NebulaOperateController.java @@ -382,6 +382,20 @@ public class NebulaOperateController extends BaseController { return success(nebulaOperateService.findOnePathById(space, vid)); } + + /** + * 查询一个节点和明确的关系查询周边一层节点关系 + * @param nQ + * @return + */ + @PostMapping(value = "/findonepathbyidwithrelation/{space}/{vid}") + public ResponseData findOnePathById(@PathVariable("space") String space, + @PathVariable("vid") String vid, + @RequestBody NebulaQo nebulaQo) { + return success(nebulaOperateService.findOnePathById(space, vid, nebulaQo.getRelations())); + } + + /** * 查询一个头节点和尾结点的关系 * @param nQ diff --git a/api/src/main/java/com/wx/application/nebula/graph/query/NebulaQo.java b/api/src/main/java/com/wx/application/nebula/graph/query/NebulaQo.java index 4c3ac27..784b720 100644 --- a/api/src/main/java/com/wx/application/nebula/graph/query/NebulaQo.java +++ b/api/src/main/java/com/wx/application/nebula/graph/query/NebulaQo.java @@ -1,5 +1,7 @@ package com.wx.application.nebula.graph.query; +import java.util.List; + import lombok.Data; @Data @@ -18,5 +20,7 @@ public class NebulaQo { private Integer page = 1; private Integer pageSize = 200; + + private List relations; }