From 6c936d46b4fdc0f76adc3b44b37f1742c76692f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9A=AE=E5=85=89=EF=BC=9A=E5=9F=8E=E4=B8=AD=E5=9F=8E?= <806783409@qq.com> Date: Thu, 14 Feb 2019 22:38:18 +0800 Subject: [PATCH] =?UTF-8?q?dubbo=E6=96=87=E6=A1=A3=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=92=8C=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../doc/dubbo/controller/DubboController.java | 44 ++- .../doc/dubbo/controller/vo/DubboInfoVo.java | 32 ++ .../dubbo/framework/bean/DubboDocInfo.java | 20 +- .../doc/dubbo/framework/bean/DubboInfo.java | 8 - .../src/main/resources/doc-dubbo.html | 307 ++++++++++++++++-- .../webjars/doc-dubbo/css/doc-dubbo.css | 141 +------- .../webjars/doc-dubbo/css/doc-dubbo1.css | 144 ++++++++ .../resources/webjars/doc-dubbo/js/common.js | 5 +- .../webjars/doc-dubbo/js/doc-dubbo-tree.js | 82 +++-- .../resources/webjars/doc-dubbo/js/toast.js | 66 ++-- 10 files changed, 583 insertions(+), 266 deletions(-) create mode 100644 zyplayer-doc-dubbo/src/main/java/com/zyplayer/doc/dubbo/controller/vo/DubboInfoVo.java create mode 100644 zyplayer-doc-dubbo/src/main/resources/webjars/doc-dubbo/css/doc-dubbo1.css diff --git a/zyplayer-doc-dubbo/src/main/java/com/zyplayer/doc/dubbo/controller/DubboController.java b/zyplayer-doc-dubbo/src/main/java/com/zyplayer/doc/dubbo/controller/DubboController.java index d6019b94..b3081cbe 100644 --- a/zyplayer-doc-dubbo/src/main/java/com/zyplayer/doc/dubbo/controller/DubboController.java +++ b/zyplayer-doc-dubbo/src/main/java/com/zyplayer/doc/dubbo/controller/DubboController.java @@ -5,6 +5,7 @@ import com.alibaba.dubbo.rpc.service.GenericService; import com.alibaba.fastjson.JSON; import com.zyplayer.doc.core.json.DocResponseJson; import com.zyplayer.doc.dubbo.controller.param.DubboRequestParam; +import com.zyplayer.doc.dubbo.controller.vo.DubboInfoVo; import com.zyplayer.doc.dubbo.framework.bean.DubboDocInfo; import com.zyplayer.doc.dubbo.framework.bean.DubboInfo; import com.zyplayer.doc.dubbo.framework.bean.NacosDubboInfo; @@ -20,7 +21,7 @@ import org.apache.curator.retry.ExponentialBackoffRetry; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; -import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -55,7 +56,7 @@ public class DubboController { * @author 暮光:城中城 * @since 2019年2月10日 **/ - @GetMapping(value = "/reloadService") + @PostMapping(value = "/reloadService") public DocResponseJson loadService() throws Exception { List providerList; if (StringUtils.isBlank(zookeeperUrl)) { @@ -77,7 +78,7 @@ public class DubboController { * @author 暮光:城中城 * @since 2019年2月10日 **/ - @GetMapping(value = "/request") + @PostMapping(value = "/request") public DocResponseJson request(DubboRequestParam param) { DubboInfo.DubboNodeInfo dubboNodeInfo = new DubboInfo.DubboNodeInfo(); dubboNodeInfo.setIp(param.getIp()); @@ -101,22 +102,22 @@ public class DubboController { * @author 暮光:城中城 * @since 2019年2月10日 **/ - @GetMapping(value = "/getDocList") + @PostMapping(value = "/getDocList") public DocResponseJson getDocList() { String dubboServiceList = mgDubboStorageService.get(StorageKeys.DUBBO_SERVICE_LIST); String dubboServiceDoc = mgDubboStorageService.get(StorageKeys.DUBBO_SERVICE_DOC); if (StringUtils.isBlank(dubboServiceList)) { return DocResponseJson.ok(); } + DubboInfoVo dubboInfoVo = new DubboInfoVo(); List providerList = JSON.parseArray(dubboServiceList, DubboInfo.class); + dubboInfoVo.setServerList(providerList); if (StringUtils.isNotBlank(dubboServiceDoc)) { List docInfoList = JSON.parseArray(dubboServiceDoc, DubboDocInfo.class); - Map docInfoMap = docInfoList.stream().collect(Collectors.toMap(DubboDocInfo::getService, val -> val)); - for (DubboInfo dubboInfo : providerList) { - dubboInfo.setDocInfo(docInfoMap.get(dubboInfo.getInterfaceX())); - } + Map docInfoMap = docInfoList.stream().collect(Collectors.toMap(DubboDocInfo::getFunction, val -> val)); + dubboInfoVo.setDocMap(docInfoMap); } - return DocResponseJson.ok(providerList); + return DocResponseJson.ok(dubboInfoVo); } /** @@ -125,15 +126,16 @@ public class DubboController { * @author 暮光:城中城 * @since 2019年2月10日 **/ - @GetMapping(value = "/saveDoc") - public DocResponseJson saveDoc(DubboDocInfo param) { + @PostMapping(value = "/saveDoc") + public DocResponseJson saveDoc(DubboDocInfo param, String paramsJson) { String dubboServiceDoc = mgDubboStorageService.get(StorageKeys.DUBBO_SERVICE_DOC); Map docInfoMap = new HashMap<>(); if (StringUtils.isNotBlank(dubboServiceDoc)) { List docInfoList = JSON.parseArray(dubboServiceDoc, DubboDocInfo.class); - docInfoMap = docInfoList.stream().collect(Collectors.toMap(DubboDocInfo::getService, val -> val)); + docInfoMap = docInfoList.stream().collect(Collectors.toMap(DubboDocInfo::getFunction, val -> val)); } - DubboDocInfo dubboDocInfo = docInfoMap.get(param.getService()); + String function = param.getService() + "." + param.getMethod(); + DubboDocInfo dubboDocInfo = docInfoMap.get(function); if (dubboDocInfo != null) { Integer newVersion = Optional.ofNullable(param.getVersion()).orElse(1); Integer oldVersion = Optional.ofNullable(dubboDocInfo.getVersion()).orElse(1); @@ -141,13 +143,24 @@ public class DubboController { return DocResponseJson.warn("已有用户在您之前修改过文档,请刷新后再修改"); } param.setVersion(oldVersion + 1); + if (StringUtils.isEmpty(param.getExplain())) { + param.setExplain(dubboDocInfo.getExplain()); + } + if (StringUtils.isEmpty(param.getResult())) { + param.setResult(dubboDocInfo.getResult()); + } + param.setParams(dubboDocInfo.getParams()); } else { param.setVersion(1); } - docInfoMap.put(param.getService(), param); + if (StringUtils.isNotBlank(paramsJson)) { + param.setParams(JSON.parseArray(paramsJson, DubboDocInfo.DubboDocParam.class)); + } + param.setFunction(function); + docInfoMap.put(function, param); List docInfoList = new ArrayList<>(docInfoMap.values()); mgDubboStorageService.put(StorageKeys.DUBBO_SERVICE_DOC, JSON.toJSONString(docInfoList)); - return DocResponseJson.ok(); + return DocResponseJson.ok(param); } /** @@ -231,6 +244,7 @@ public class DubboController { dubboInfo.setNodeList(nodeList); providerList.add(dubboInfo); } + client.close(); return providerList; } } diff --git a/zyplayer-doc-dubbo/src/main/java/com/zyplayer/doc/dubbo/controller/vo/DubboInfoVo.java b/zyplayer-doc-dubbo/src/main/java/com/zyplayer/doc/dubbo/controller/vo/DubboInfoVo.java new file mode 100644 index 00000000..c760abe7 --- /dev/null +++ b/zyplayer-doc-dubbo/src/main/java/com/zyplayer/doc/dubbo/controller/vo/DubboInfoVo.java @@ -0,0 +1,32 @@ +package com.zyplayer.doc.dubbo.controller.vo; + +import com.zyplayer.doc.dubbo.framework.bean.DubboDocInfo; +import com.zyplayer.doc.dubbo.framework.bean.DubboInfo; + +import java.util.List; +import java.util.Map; + +/** + * @author 暮光:城中城 + * @since 2019年1月10日 + **/ +public class DubboInfoVo { + private List serverList; + private Map docMap; + + public List getServerList() { + return serverList; + } + + public void setServerList(List serverList) { + this.serverList = serverList; + } + + public Map getDocMap() { + return docMap; + } + + public void setDocMap(Map docMap) { + this.docMap = docMap; + } +} diff --git a/zyplayer-doc-dubbo/src/main/java/com/zyplayer/doc/dubbo/framework/bean/DubboDocInfo.java b/zyplayer-doc-dubbo/src/main/java/com/zyplayer/doc/dubbo/framework/bean/DubboDocInfo.java index 03e25609..6f48efd0 100644 --- a/zyplayer-doc-dubbo/src/main/java/com/zyplayer/doc/dubbo/framework/bean/DubboDocInfo.java +++ b/zyplayer-doc-dubbo/src/main/java/com/zyplayer/doc/dubbo/framework/bean/DubboDocInfo.java @@ -11,11 +11,13 @@ import java.util.List; public class DubboDocInfo { private String service; private String method; + private String function; private String explain; + private String result; private Integer version; private List params; - public class DubboDocParam { + public static class DubboDocParam { private String paramName; private String paramType; private String paramDesc; @@ -101,4 +103,20 @@ public class DubboDocInfo { public void setParams(List params) { this.params = params; } + + public String getFunction() { + return function; + } + + public void setFunction(String function) { + this.function = function; + } + + public String getResult() { + return result; + } + + public void setResult(String result) { + this.result = result; + } } diff --git a/zyplayer-doc-dubbo/src/main/java/com/zyplayer/doc/dubbo/framework/bean/DubboInfo.java b/zyplayer-doc-dubbo/src/main/java/com/zyplayer/doc/dubbo/framework/bean/DubboInfo.java index d728c36a..7d8b2387 100644 --- a/zyplayer-doc-dubbo/src/main/java/com/zyplayer/doc/dubbo/framework/bean/DubboInfo.java +++ b/zyplayer-doc-dubbo/src/main/java/com/zyplayer/doc/dubbo/framework/bean/DubboInfo.java @@ -11,7 +11,6 @@ import java.util.List; public class DubboInfo { @JSONField(name = "interface") private String interfaceX; - private DubboDocInfo docInfo; private List nodeList; public static class DubboNodeInfo { @@ -79,11 +78,4 @@ public class DubboInfo { this.interfaceX = interfaceX; } - public DubboDocInfo getDocInfo() { - return docInfo; - } - - public void setDocInfo(DubboDocInfo docInfo) { - this.docInfo = docInfo; - } } diff --git a/zyplayer-doc-dubbo/src/main/resources/doc-dubbo.html b/zyplayer-doc-dubbo/src/main/resources/doc-dubbo.html index c3179e38..2aff07b5 100644 --- a/zyplayer-doc-dubbo/src/main/resources/doc-dubbo.html +++ b/zyplayer-doc-dubbo/src/main/resources/doc-dubbo.html @@ -6,31 +6,40 @@ dubbo文档管理系统 +
- - 重新加载服务列表 - - - - - - 选项4 - 选项1 - - - - + +
+ zyplayer-doc-dubbo +
+
+
重新加载服务列表
+ + + + + + + + + + + + + + +
- +
+ 请先选择服务 +
+ {{dubboInfo.interface}} @@ -38,18 +47,90 @@ {{dubboInfo.method}} - +
+
{{dubboInfo.docInfo.explain}}编辑
+
+
+ + 取消 + 保存 +
+
+ + + + + + - + + + + + + + + + + + + 保存 + 添加 - +
+
{{dubboInfo.docInfo.result}}编辑
+
+
+ + 取消 + 保存 +
- 在线调试页面 +
+ 请先选择服务 +
+
+ + + + + 执行 + + + + + + + + + + + + + + + + + + + +
+
+
+
@@ -60,6 +141,8 @@ + +