合并api文档编辑页面,体验优化

This commit is contained in:
暮光:城中城
2021-12-14 22:29:07 +08:00
parent bca4ba34e1
commit ab92d6958b
58 changed files with 570 additions and 9849 deletions

View File

@@ -1,5 +1,6 @@
package com.zyplayer.doc.api.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.IdUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -13,6 +14,7 @@ import com.zyplayer.doc.data.config.security.DocUserDetails;
import com.zyplayer.doc.data.config.security.DocUserUtil;
import com.zyplayer.doc.data.repository.manage.entity.ApiDoc;
import com.zyplayer.doc.data.repository.manage.vo.ApiDocVo;
import com.zyplayer.doc.data.repository.support.consts.ApiAuthType;
import com.zyplayer.doc.data.service.manage.ApiDocService;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
@@ -76,7 +78,11 @@ public class ApiDocumentController {
if (!apiDocAuthJudgeService.haveDevelopAuth(apiDoc)) {
return DocResponseJson.warn("没有此文档的查看权限");
}
return DocResponseJson.ok(apiDoc);
ApiDocVo apiDocVo = new ApiDocVo();
BeanUtil.copyProperties(apiDoc, apiDocVo);
Integer authType = apiDocAuthJudgeService.haveManageAuth(apiDoc) ? ApiAuthType.MANAGE.getType() : ApiAuthType.DEVELOPER.getType();
apiDocVo.setAuthType(authType);
return DocResponseJson.ok(apiDocVo);
}
/**
@@ -116,7 +122,7 @@ public class ApiDocumentController {
String swaggerDomain = SwaggerDocUtil.getSwaggerResourceDomain(docUrl);
List<SwaggerResource> resourceList;
try {
String resourcesStr = swaggerHttpRequestService.requestSwaggerUrl(request, docUrl, swaggerDomain);
String resourcesStr = swaggerHttpRequestService.requestSwaggerUrl(request, 0L, docUrl, swaggerDomain);
resourceList = JSON.parseArray(resourcesStr, SwaggerResource.class);
} catch (Exception e) {
e.printStackTrace();
@@ -198,7 +204,7 @@ public class ApiDocumentController {
if (Objects.equals(apiDoc.getDocType(), 1)) {
try {
String docsDomain = SwaggerDocUtil.getV2ApiDocsDomain(apiDoc.getDocUrl());
String contentStr = swaggerHttpRequestService.requestSwaggerUrl(request, apiDoc.getDocUrl(), docsDomain);
String contentStr = swaggerHttpRequestService.requestSwaggerUrl(request, apiDoc.getId(), apiDoc.getDocUrl(), docsDomain);
return DocResponseJson.ok(contentStr);
} catch (Exception e) {
e.printStackTrace();

View File

@@ -21,6 +21,7 @@ import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
/**
* 全局参数控制器
@@ -46,11 +47,14 @@ public class ApiGlobalParamController {
*/
@ResponseBody
@PostMapping(value = "/list")
public ResponseJson<List<ApiGlobalParam>> list() {
public ResponseJson<List<ApiGlobalParam>> list(Long docId) {
Long docIdNew = Optional.ofNullable(docId).orElse(0L);
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
QueryWrapper<ApiGlobalParam> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("yn", 1);
queryWrapper.eq("create_user_id", currentUser.getUserId());
queryWrapper.eq("doc_id", docIdNew);
// 全局参数才按创建人来控制,文档的全局参数大家共用
queryWrapper.eq(docIdNew == 0, "create_user_id", currentUser.getUserId());
queryWrapper.orderByDesc("id");
List<ApiGlobalParam> globalParamList = apiGlobalParamService.list(queryWrapper);
return DocResponseJson.ok(globalParamList);
@@ -78,10 +82,13 @@ public class ApiGlobalParamController {
return DocResponseJson.warn("目标全局参数不存在");
}
}
globalParam.setDocId(Optional.ofNullable(globalParam.getDocId()).orElse(0L));
QueryWrapper<ApiGlobalParam> wrapper = new QueryWrapper<>();
wrapper.eq("yn", 1);
wrapper.eq("param_key", globalParam.getParamKey());
wrapper.eq("create_user_id", currentUser.getUserId());
wrapper.eq("doc_id", globalParam.getDocId());
// 全局参数才按创建人来控制,文档的全局参数大家共用
wrapper.eq(globalParam.getDocId() == 0, "create_user_id", currentUser.getUserId());
List<ApiGlobalParam> paramList = apiGlobalParamService.list(wrapper);
if (CollectionUtils.isNotEmpty(paramList)) {
if (paramList.size() > 1 || !Objects.equals(paramList.get(0).getId(), globalParam.getId())) {

View File

@@ -62,7 +62,7 @@ public class ApiShareDocumentController {
if (Objects.equals(apiDoc.getDocType(), 1)) {
try {
String docsDomain = SwaggerDocUtil.getV2ApiDocsDomain(apiDoc.getDocUrl());
String contentStr = swaggerHttpRequestService.requestSwaggerUrl(request, apiDoc.getDocUrl(), docsDomain);
String contentStr = swaggerHttpRequestService.requestSwaggerUrl(request, apiDoc.getId(), apiDoc.getDocUrl(), docsDomain);
return DocResponseJson.ok(contentStr);
} catch (Exception e) {
e.printStackTrace();

View File

@@ -9,7 +9,6 @@ import com.zyplayer.doc.data.service.manage.ApiDocService;
import com.zyplayer.doc.api.controller.vo.SwaggerResourceVo;
import com.zyplayer.doc.api.framework.utils.SwaggerDocUtil;
import com.zyplayer.doc.api.service.SwaggerHttpRequestService;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.util.MimeTypeUtils;
@@ -36,7 +35,7 @@ public class ApiSwaggerProxyController {
private static final String HAL_MEDIA_TYPE = "application/hal+json";
@Resource
private ApiDocService swaggerDocService;
private ApiDocService apiDocService;
@Resource
private SwaggerHttpRequestService swaggerHttpRequestService;
@@ -51,13 +50,13 @@ public class ApiSwaggerProxyController {
queryWrapper.in("doc_type", 1, 2);
queryWrapper.orderByAsc("id");
queryWrapper.select("id", "name", "rewrite_domain");
List<ApiDoc> docList = swaggerDocService.list(queryWrapper);
for (ApiDoc swaggerDoc : docList) {
List<ApiDoc> docList = apiDocService.list(queryWrapper);
for (ApiDoc apiDoc : docList) {
SwaggerResourceVo resource = new SwaggerResourceVo();
resource.setUrl("/v2/api-docs?id=" + swaggerDoc.getId());
resource.setName(swaggerDoc.getName());
resource.setUrl("/v2/api-docs?id=" + apiDoc.getId());
resource.setName(apiDoc.getName());
resource.setSwaggerVersion("2.0");
resource.setRewriteDomain(swaggerDoc.getRewriteDomain());
resource.setRewriteDomain(apiDoc.getRewriteDomain());
resourceList.add(resource);
}
return resourceList;
@@ -66,21 +65,21 @@ public class ApiSwaggerProxyController {
@ResponseBody
@RequestMapping(value = "/v2/api-docs", produces = {MimeTypeUtils.APPLICATION_JSON_VALUE, HAL_MEDIA_TYPE})
public ResponseEntity<Object> content(HttpServletRequest request, Long id) {
ApiDoc swaggerDoc = swaggerDocService.getById(id);
if (swaggerDoc == null || !Objects.equals(swaggerDoc.getOpenVisit(), 1)) {
ApiDoc apiDoc = apiDocService.getById(id);
if (apiDoc == null || !Objects.equals(apiDoc.getOpenVisit(), 1)) {
throw new ConfirmException("文档不存在");
}
if (Objects.equals(swaggerDoc.getDocType(), 1)) {
if (Objects.equals(apiDoc.getDocType(), 1)) {
try {
String docsDomain = SwaggerDocUtil.getV2ApiDocsDomain(swaggerDoc.getDocUrl());
String contentStr = swaggerHttpRequestService.requestSwaggerUrl(request, swaggerDoc.getDocUrl(), docsDomain);
String docsDomain = SwaggerDocUtil.getV2ApiDocsDomain(apiDoc.getDocUrl());
String contentStr = swaggerHttpRequestService.requestSwaggerUrl(request, apiDoc.getId(), apiDoc.getDocUrl(), docsDomain);
return new ResponseEntity<>(new Json(contentStr), HttpStatus.OK);
} catch (Exception e) {
e.printStackTrace();
return new ResponseEntity<>(DocResponseJson.warn("请求文档失败"), HttpStatus.OK);
}
}
return new ResponseEntity<>(new Json(swaggerDoc.getJsonContent()), HttpStatus.OK);
return new ResponseEntity<>(new Json(apiDoc.getJsonContent()), HttpStatus.OK);
}
@ResponseBody

View File

@@ -50,8 +50,8 @@ public class SwaggerHttpRequestService {
* @author 暮光:城中城
* @since 2021-11-04
*/
public String requestSwaggerUrl(HttpServletRequest request, String docUrl, String docDomain) {
List<ApiGlobalParam> globalParamList = apiGlobalParamService.getGlobalParamList();
public String requestSwaggerUrl(HttpServletRequest request, Long docId, String docUrl, String docDomain) {
List<ApiGlobalParam> globalParamList = apiGlobalParamService.getGlobalParamList(docId);
Map<String, Object> globalFormParamMap = globalParamList.stream().filter(item -> Objects.equals(item.getParamType(), 1))
.collect(Collectors.toMap(ApiGlobalParam::getParamKey, ApiGlobalParam::getParamValue, (val1, val2) -> val1));
Map<String, String> globalHeaderParamMap = globalParamList.stream().filter(item -> Objects.equals(item.getParamType(), 2))