合并api文档编辑页面,体验优化
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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())) {
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user