自建API接口开发
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
package com.zyplayer.doc.api.controller;
|
||||
|
||||
|
||||
import com.zyplayer.doc.core.annotation.AuthMan;
|
||||
import com.zyplayer.doc.core.json.DocResponseJson;
|
||||
import com.zyplayer.doc.core.json.ResponseJson;
|
||||
import com.zyplayer.doc.data.repository.manage.entity.ApiCustomFolder;
|
||||
import com.zyplayer.doc.data.service.manage.ApiCustomFolderService;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
@@ -19,6 +21,7 @@ import javax.annotation.Resource;
|
||||
* @author 暮光:城中城
|
||||
* @since 2021-12-22
|
||||
*/
|
||||
@AuthMan
|
||||
@Controller
|
||||
@RequestMapping("/api-custom-folder")
|
||||
public class ApiCustomFolderController {
|
||||
@@ -27,15 +30,18 @@ public class ApiCustomFolderController {
|
||||
ApiCustomFolderService apiCustomFolderService;
|
||||
|
||||
/**
|
||||
* 获取所有的文档地址
|
||||
* 1. 新增文件夹
|
||||
* 2. 修改文件夹名称说明等
|
||||
* 3. 修改父文件夹
|
||||
*
|
||||
* @return 文档内容
|
||||
* @author 暮光:城中城
|
||||
* @since 2021年10月16日
|
||||
* @since 2021年12月22日
|
||||
*/
|
||||
@ResponseBody
|
||||
@PostMapping(value = "/add")
|
||||
public ResponseJson<Object> add(Long docId, Long parentFolderId) {
|
||||
public ResponseJson<Object> add(ApiCustomFolder apiCustomFolder) {
|
||||
apiCustomFolderService.addFolder(apiCustomFolder);
|
||||
return DocResponseJson.ok();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,16 @@
|
||||
package com.zyplayer.doc.api.controller;
|
||||
|
||||
|
||||
import com.zyplayer.doc.core.json.DocResponseJson;
|
||||
import com.zyplayer.doc.core.json.ResponseJson;
|
||||
import com.zyplayer.doc.data.repository.manage.entity.ApiCustomRequest;
|
||||
import com.zyplayer.doc.data.service.manage.ApiCustomRequestService;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -13,7 +21,25 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
||||
* @since 2021-12-22
|
||||
*/
|
||||
@Controller
|
||||
@RequestMapping("/api-custom")
|
||||
@RequestMapping("/api-custom-request")
|
||||
public class ApiCustomRequestController {
|
||||
|
||||
|
||||
@Resource
|
||||
ApiCustomRequestService apiCustomRequestService;
|
||||
|
||||
/**
|
||||
* 1. 新增接口
|
||||
* 2. 修改接口名等
|
||||
* 3. 修改父文件夹
|
||||
*
|
||||
* @return 文档内容
|
||||
* @author 暮光:城中城
|
||||
* @since 2021年12月22日
|
||||
*/
|
||||
@ResponseBody
|
||||
@PostMapping(value = "/add")
|
||||
public ResponseJson<Object> add(ApiCustomRequest apiCustomRequest) {
|
||||
apiCustomRequestService.addRequest(apiCustomRequest);
|
||||
return DocResponseJson.ok();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.zyplayer.doc.api.controller;
|
||||
|
||||
import com.zyplayer.doc.api.controller.vo.DocUserAuthVo;
|
||||
import com.zyplayer.doc.api.service.ApiDocAuthJudgeService;
|
||||
import com.zyplayer.doc.core.annotation.AuthMan;
|
||||
import com.zyplayer.doc.core.json.DocResponseJson;
|
||||
import com.zyplayer.doc.core.json.ResponseJson;
|
||||
@@ -11,6 +10,7 @@ import com.zyplayer.doc.data.repository.manage.entity.*;
|
||||
import com.zyplayer.doc.data.repository.support.consts.ApiAuthType;
|
||||
import com.zyplayer.doc.data.repository.support.consts.DocSysModuleType;
|
||||
import com.zyplayer.doc.data.repository.support.consts.DocSysType;
|
||||
import com.zyplayer.doc.data.service.common.ApiDocAuthJudgeService;
|
||||
import com.zyplayer.doc.data.service.manage.ApiDocService;
|
||||
import com.zyplayer.doc.data.service.manage.AuthInfoService;
|
||||
import com.zyplayer.doc.data.service.manage.UserAuthService;
|
||||
|
||||
@@ -5,7 +5,6 @@ import cn.hutool.core.util.IdUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.zyplayer.doc.api.framework.utils.SwaggerDocUtil;
|
||||
import com.zyplayer.doc.api.service.ApiDocAuthJudgeService;
|
||||
import com.zyplayer.doc.api.service.SwaggerHttpRequestService;
|
||||
import com.zyplayer.doc.core.annotation.AuthMan;
|
||||
import com.zyplayer.doc.core.json.DocResponseJson;
|
||||
@@ -16,6 +15,7 @@ import com.zyplayer.doc.data.repository.manage.entity.ApiDoc;
|
||||
import com.zyplayer.doc.data.repository.manage.vo.ApiCustomVo;
|
||||
import com.zyplayer.doc.data.repository.manage.vo.ApiDocVo;
|
||||
import com.zyplayer.doc.data.repository.support.consts.ApiAuthType;
|
||||
import com.zyplayer.doc.data.service.common.ApiDocAuthJudgeService;
|
||||
import com.zyplayer.doc.data.service.manage.ApiCustomRequestService;
|
||||
import com.zyplayer.doc.data.service.manage.ApiDocService;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
@@ -221,7 +221,7 @@ public class ApiDocumentController {
|
||||
return DocResponseJson.ok(apiDoc.getJsonContent());
|
||||
}
|
||||
if (Objects.equals(apiDoc.getDocType(), 5)) {
|
||||
List<ApiCustomVo> customVoList = apiCustomRequestService.buildCustomApiList(apiDoc.getId());
|
||||
List<ApiCustomVo> customVoList = apiCustomRequestService.buildCustomApiList(apiDoc);
|
||||
return DocResponseJson.ok(customVoList);
|
||||
}
|
||||
return DocResponseJson.warn("暂不支持的文档类型");
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.zyplayer.doc.api.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.zyplayer.doc.api.service.ApiDocAuthJudgeService;
|
||||
import com.zyplayer.doc.core.annotation.AuthMan;
|
||||
import com.zyplayer.doc.core.json.DocResponseJson;
|
||||
import com.zyplayer.doc.core.json.ResponseJson;
|
||||
@@ -9,6 +8,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.entity.ApiGlobalParam;
|
||||
import com.zyplayer.doc.data.service.common.ApiDocAuthJudgeService;
|
||||
import com.zyplayer.doc.data.service.manage.ApiGlobalParamService;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
@@ -6,6 +6,8 @@ import com.zyplayer.doc.core.json.ResponseJson;
|
||||
import com.zyplayer.doc.api.controller.param.ProxyRequestParam;
|
||||
import com.zyplayer.doc.api.controller.vo.ProxyRequestResultVo;
|
||||
import com.zyplayer.doc.api.service.SwaggerHttpRequestService;
|
||||
import com.zyplayer.doc.data.repository.manage.entity.ApiCustomRequest;
|
||||
import com.zyplayer.doc.data.service.manage.ApiCustomRequestService;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
@@ -32,6 +34,8 @@ import java.util.Map;
|
||||
public class ApiPoxyRequestController {
|
||||
private static Logger logger = LoggerFactory.getLogger(ApiPoxyRequestController.class);
|
||||
|
||||
@Resource
|
||||
ApiCustomRequestService apiCustomRequestService;
|
||||
@Resource
|
||||
private SwaggerHttpRequestService swaggerHttpRequestService;
|
||||
|
||||
@@ -45,6 +49,18 @@ public class ApiPoxyRequestController {
|
||||
@ResponseBody
|
||||
@PostMapping(value = "/request")
|
||||
public ResponseJson<ProxyRequestResultVo> request(HttpServletRequest request, ProxyRequestParam requestParam) {
|
||||
// 自建接口时保存信息
|
||||
if (requestParam.getCustomRequestId() != null) {
|
||||
ApiCustomRequest apiCustomRequest = new ApiCustomRequest();
|
||||
apiCustomRequest.setId(requestParam.getCustomRequestId());
|
||||
apiCustomRequest.setDocId(requestParam.getDocId());
|
||||
apiCustomRequest.setApiUrl(requestParam.getUrl());
|
||||
apiCustomRequest.setFormData(requestParam.getFormParam());
|
||||
apiCustomRequest.setBodyData(requestParam.getBodyParam());
|
||||
apiCustomRequest.setHeaderData(requestParam.getHeaderParam());
|
||||
apiCustomRequest.setCookieData(requestParam.getCookieParam());
|
||||
apiCustomRequestService.addRequest(apiCustomRequest);
|
||||
}
|
||||
ProxyRequestResultVo requestResult = swaggerHttpRequestService.proxyRequest(request, requestParam);
|
||||
return DocResponseJson.ok(requestResult);
|
||||
}
|
||||
|
||||
@@ -11,6 +11,8 @@ import java.util.List;
|
||||
* @since 2021-11-04
|
||||
*/
|
||||
public class ProxyRequestParam {
|
||||
private Long docId;
|
||||
private Long customRequestId;
|
||||
private String url;
|
||||
private String host;
|
||||
private String method;
|
||||
@@ -108,4 +110,20 @@ public class ProxyRequestParam {
|
||||
public void setHost(String host) {
|
||||
this.host = host;
|
||||
}
|
||||
|
||||
public Long getCustomRequestId() {
|
||||
return customRequestId;
|
||||
}
|
||||
|
||||
public void setCustomRequestId(Long customRequestId) {
|
||||
this.customRequestId = customRequestId;
|
||||
}
|
||||
|
||||
public Long getDocId() {
|
||||
return docId;
|
||||
}
|
||||
|
||||
public void setDocId(Long docId) {
|
||||
this.docId = docId;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,99 +0,0 @@
|
||||
package com.zyplayer.doc.api.service;
|
||||
|
||||
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.entity.AuthInfo;
|
||||
import com.zyplayer.doc.data.repository.manage.entity.UserAuth;
|
||||
import com.zyplayer.doc.data.repository.support.consts.ApiAuthType;
|
||||
import com.zyplayer.doc.data.repository.support.consts.DocSysModuleType;
|
||||
import com.zyplayer.doc.data.repository.support.consts.DocSysType;
|
||||
import com.zyplayer.doc.data.service.manage.ApiDocService;
|
||||
import com.zyplayer.doc.data.service.manage.AuthInfoService;
|
||||
import com.zyplayer.doc.data.service.manage.UserAuthService;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 判断文档权限
|
||||
*
|
||||
* @author 暮光:城中城
|
||||
* @since 2021-12-12
|
||||
*/
|
||||
@Service
|
||||
public class ApiDocAuthJudgeService {
|
||||
|
||||
@Resource
|
||||
UserAuthService userAuthService;
|
||||
@Resource
|
||||
AuthInfoService authInfoService;
|
||||
@Resource
|
||||
ApiDocService apiDocService;
|
||||
|
||||
/**
|
||||
* 判断当前用户是否有管理员权限
|
||||
*
|
||||
* @author 暮光:城中城
|
||||
* @since 2021-12-12
|
||||
*/
|
||||
public boolean haveManageAuth(Long docId) {
|
||||
ApiDoc apiDoc = apiDocService.getById(docId);
|
||||
return haveManageAuth(apiDoc);
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断当前用户是否有管理员权限
|
||||
*
|
||||
* @author 暮光:城中城
|
||||
* @since 2021-12-12
|
||||
*/
|
||||
public boolean haveManageAuth(ApiDoc apiDoc) {
|
||||
if (apiDoc == null) {
|
||||
return false;
|
||||
}
|
||||
// 创建者
|
||||
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
|
||||
if (Objects.equals(apiDoc.getCreateUserId(), currentUser.getUserId())) {
|
||||
return true;
|
||||
}
|
||||
// 管理员
|
||||
AuthInfo authInfo = authInfoService.getByCode(ApiAuthType.MANAGE.getCode());
|
||||
List<UserAuth> userModuleAuthList = userAuthService.getUserModuleAuthList(currentUser.getUserId(), DocSysType.API.getType(), DocSysModuleType.Api.DOC.getType(), apiDoc.getId());
|
||||
return userModuleAuthList.stream().anyMatch(auth -> Objects.equals(auth.getAuthId(), authInfo.getId()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断当前用户是否有查看权限
|
||||
*
|
||||
* @author 暮光:城中城
|
||||
* @since 2021-12-12
|
||||
*/
|
||||
public boolean haveDevelopAuth(Long docId) {
|
||||
ApiDoc apiDoc = apiDocService.getById(docId);
|
||||
return haveDevelopAuth(apiDoc);
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断当前用户是否有查看权限
|
||||
*
|
||||
* @author 暮光:城中城
|
||||
* @since 2021-12-12
|
||||
*/
|
||||
public boolean haveDevelopAuth(ApiDoc apiDoc) {
|
||||
if (apiDoc == null) {
|
||||
return false;
|
||||
}
|
||||
// 创建者
|
||||
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
|
||||
if (Objects.equals(apiDoc.getCreateUserId(), currentUser.getUserId())) {
|
||||
return true;
|
||||
}
|
||||
// 开发人员,存在则说明肯定是管理员或开发人员
|
||||
List<UserAuth> userModuleAuthList = userAuthService.getUserModuleAuthList(currentUser.getUserId(), DocSysType.API.getType(), DocSysModuleType.Api.DOC.getType(), apiDoc.getId());
|
||||
return CollectionUtils.isNotEmpty(userModuleAuthList);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user