dubbo文档操作接口和页面

This commit is contained in:
暮光:城中城
2019-02-14 22:38:18 +08:00
parent e42ad1b3eb
commit 6c936d46b4
10 changed files with 583 additions and 266 deletions

View File

@@ -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<DubboInfo> 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<DubboInfo> providerList = JSON.parseArray(dubboServiceList, DubboInfo.class);
dubboInfoVo.setServerList(providerList);
if (StringUtils.isNotBlank(dubboServiceDoc)) {
List<DubboDocInfo> docInfoList = JSON.parseArray(dubboServiceDoc, DubboDocInfo.class);
Map<String, DubboDocInfo> docInfoMap = docInfoList.stream().collect(Collectors.toMap(DubboDocInfo::getService, val -> val));
for (DubboInfo dubboInfo : providerList) {
dubboInfo.setDocInfo(docInfoMap.get(dubboInfo.getInterfaceX()));
}
Map<String, DubboDocInfo> 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<String, DubboDocInfo> docInfoMap = new HashMap<>();
if (StringUtils.isNotBlank(dubboServiceDoc)) {
List<DubboDocInfo> 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<DubboDocInfo> 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;
}
}

View File

@@ -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<DubboInfo> serverList;
private Map<String, DubboDocInfo> docMap;
public List<DubboInfo> getServerList() {
return serverList;
}
public void setServerList(List<DubboInfo> serverList) {
this.serverList = serverList;
}
public Map<String, DubboDocInfo> getDocMap() {
return docMap;
}
public void setDocMap(Map<String, DubboDocInfo> docMap) {
this.docMap = docMap;
}
}

View File

@@ -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<DubboDocParam> 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<DubboDocParam> 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;
}
}

View File

@@ -11,7 +11,6 @@ import java.util.List;
public class DubboInfo {
@JSONField(name = "interface")
private String interfaceX;
private DubboDocInfo docInfo;
private List<DubboNodeInfo> 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;
}
}