From 2b0bedd2637ae1487c347e74e1d98151b41324c2 Mon Sep 17 00:00:00 2001 From: EightMonth Date: Fri, 27 Dec 2024 14:23:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84openapi=EF=BC=8C=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=E8=BF=87=E6=9C=9Fsql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/jeecg/config/shiro/ShiroConfig.java | 2 +- .../openapi/controller/OpenApiController.java | 47 ++++++++++++++----- .../modules/openapi/entity/OpenApiAuth.java | 5 ++ .../jeecg/modules/openapi/sql/open_api.sql | 1 - .../modules/openapi/sql/open_api_auth.sql | 1 - .../modules/openapi/sql/open_api_header.sql | 0 .../modules/openapi/sql/open_api_param.sql | 0 .../openapi/sql/open_api_permission.sql | 1 - .../modules/openapi/sql/open_api_record.sql | 4 -- 9 files changed, 41 insertions(+), 20 deletions(-) delete mode 100644 jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/sql/open_api.sql delete mode 100644 jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/sql/open_api_auth.sql delete mode 100644 jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/sql/open_api_header.sql delete mode 100644 jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/sql/open_api_param.sql delete mode 100644 jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/sql/open_api_permission.sql delete mode 100644 jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/sql/open_api_record.sql diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java index 77b4faf0..02d1fb9a 100644 --- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java +++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java @@ -180,7 +180,7 @@ public class ShiroConfig { // 企业微信证书排除 filterChainDefinitionMap.put("/WW_verify*", "anon"); - filterChainDefinitionMap.put("/openapi/**", "anon"); + filterChainDefinitionMap.put("/openapi/call/**", "anon"); // 添加自己的过滤器并且取名为jwt Map filterMap = new HashMap(1); diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/controller/OpenApiController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/controller/OpenApiController.java index 3ce3e2af..4d8fcbc2 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/controller/OpenApiController.java +++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/controller/OpenApiController.java @@ -10,21 +10,30 @@ import org.jeecg.common.api.vo.Result; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.util.JwtUtil; import org.jeecg.modules.openapi.entity.OpenApi; +import org.jeecg.modules.openapi.entity.OpenApiAuth; import org.jeecg.modules.openapi.entity.OpenApiHeader; import org.jeecg.modules.openapi.entity.OpenApiParam; import org.jeecg.modules.openapi.generator.PathGenerator; +import org.jeecg.modules.openapi.service.OpenApiAuthService; import org.jeecg.modules.openapi.service.OpenApiHeaderService; import org.jeecg.modules.openapi.service.OpenApiParamService; import org.jeecg.modules.openapi.service.OpenApiService; +import org.jeecg.modules.system.entity.SysUser; +import org.jeecg.modules.system.service.ISysUserService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.CommandLineRunner; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.client.RestTemplate; -import springfox.documentation.schema.*; +import springfox.documentation.schema.Model; +import springfox.documentation.schema.ModelProperty; +import springfox.documentation.schema.ModelRef; +import springfox.documentation.schema.ModelReference; import springfox.documentation.service.*; import springfox.documentation.spring.web.DocumentationCache; @@ -36,7 +45,7 @@ import java.util.*; */ @RestController @RequestMapping("/openapi") -public class OpenApiController extends JeecgController { +public class OpenApiController extends JeecgController implements CommandLineRunner { @Autowired private RestTemplate restTemplate; @@ -48,6 +57,10 @@ public class OpenApiController extends JeecgController private DocumentationCache documentationCache; @Autowired private TypeResolver typeResolver; + @Autowired + private ISysUserService sysUserService; + @Autowired + private OpenApiAuthService openApiAuthService; /** * 分页列表查询 @@ -177,6 +190,12 @@ public class OpenApiController extends JeecgController httpHeaders.put(header.getHeaderKey(), Lists.newArrayList(request.getHeader(header.getHeaderKey()))); } + String appkey = request.getHeader("appkey"); + OpenApiAuth openApiAuth = openApiAuthService.getByAppkey(appkey); + SysUser systemUser = sysUserService.getById(openApiAuth.getSystemUserId()); + String token = JwtUtil.sign(systemUser.getUsername(), systemUser.getPassword()); + httpHeaders.put("X-Access-Token", Lists.newArrayList(token)); + HttpEntity httpEntity = new HttpEntity<>(json, httpHeaders); return restTemplate.exchange(url, HttpMethod.resolve(method), httpEntity, Result.class, request.getParameterMap()).getBody(); @@ -218,8 +237,8 @@ public class OpenApiController extends JeecgController List subTypes = new ArrayList<>(); subTypes.add(stringModelRef); - Model bodyModel = new Model("path_body", "body", mapResolvedType, "java.util.HashMap", propertyMap, "请求体结构", "", "", subTypes, null, null); - ModelRef bodyRef = new ModelRef("bodyModel", "bodyModel", null, null, "path_body"); + Model bodyModel = new Model("path_body", "bodyModel", mapResolvedType, "java.util.HashMap", propertyMap, "请求体结构", "", "", subTypes, null, null); + ModelRef bodyRef = new ModelRef("bodyModel", "path_body", null, null,true, "path_body"); Set responseMessages = documentation.getApiListings().get("login-controller").get(0).getApis().get(2).getOperations().get(0).getResponseMessages(); @@ -229,7 +248,7 @@ public class OpenApiController extends JeecgController // path-->请求参数的获取:@PathVariable() // body-->请求参数的获取:@RequestBody() // form(不常用) - Parameter body = new Parameter("body", + Parameter body = new Parameter("bodyModel", "请求体", "", true, @@ -329,7 +348,11 @@ public class OpenApiController extends JeecgController return r; } - public void resetOpenapiSwagger() { + /** + * resetOpenapiSwagger + */ + @Override + public void run(String... args) throws Exception { List openapis = service.list(); Documentation documentation = documentationCache.documentationByGroup("default"); List apis = new ArrayList<>(); @@ -418,11 +441,11 @@ public class OpenApiController extends JeecgController parameters.add(parameter); } - Operation operation = new Operation(HttpMethod.resolve("GET"), - "模拟第一个openapi接口", - "模拟第一个openapi接口", + Operation operation = new Operation(HttpMethod.resolve(openapi.getRequestMethod()), + openapi.getName(), + openapi.getName(), modelRef, - "abcUsingGET", + openapi.getName()+"Using"+openapi.getRequestMethod(), 0, tags, produces, consumes, new LinkedHashSet<>(), new ArrayList<>(), @@ -436,7 +459,7 @@ public class OpenApiController extends JeecgController operations.add(operation); ApiDescription apiDescription = new ApiDescription("openapi", - "/jeecg-boot/openapi/call/abc", "openapi", operations, false); + "/jeecg-boot/openapi/call/"+openapi.getRequestUrl(), openapi.getName(), operations, false); List apiList = new ArrayList<>(); apiList.add(apiDescription); @@ -446,7 +469,7 @@ public class OpenApiController extends JeecgController ApiListing api = new ApiListing("1.0", "/", - "/openapi/call/abc", + "/openapi/call/"+openapi.getRequestUrl(), produces, consumes, "", new HashSet<>(), new ArrayList<>(), apiList, responseModel, "abc", 0, apiTags); diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/entity/OpenApiAuth.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/entity/OpenApiAuth.java index cbf28d3e..15a7c9a0 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/entity/OpenApiAuth.java +++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/entity/OpenApiAuth.java @@ -41,6 +41,11 @@ public class OpenApiAuth implements Serializable { */ private String sk; + /** + * 系统用户ID + */ + private String systemUserId; + /** * 创建人 */ diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/sql/open_api.sql b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/sql/open_api.sql deleted file mode 100644 index 3de4e3ed..00000000 --- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/sql/open_api.sql +++ /dev/null @@ -1 +0,0 @@ -INSERT INTO `open_api` (`id`, `name`, `request_method`, `request_url`, `black_list`, `body`, `origin_url`, `status`, `del_flag`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES ('1870486348755324929', '示例接口', 'GET', 'UrTk8CTk', NULL, NULL, 'http://localhost:8080/jeecg-boot/openapi/demo/index', 1, 0, NULL, '2024-12-21 23:07:52', NULL, NULL); diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/sql/open_api_auth.sql b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/sql/open_api_auth.sql deleted file mode 100644 index 50d4e064..00000000 --- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/sql/open_api_auth.sql +++ /dev/null @@ -1 +0,0 @@ -INSERT INTO `open_api_auth` (`id`, `name`, `ak`, `sk`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES ('1870484839812517890', 'openuser', 'ak-eAU25mrMxhtaZsyS', 'rjxMqB6YyUXpSHAz4DCIz8vZ5aozQQiV', NULL, '2024-12-21 23:01:52', NULL, NULL); diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/sql/open_api_header.sql b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/sql/open_api_header.sql deleted file mode 100644 index e69de29b..00000000 diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/sql/open_api_param.sql b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/sql/open_api_param.sql deleted file mode 100644 index e69de29b..00000000 diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/sql/open_api_permission.sql b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/sql/open_api_permission.sql deleted file mode 100644 index a993e02f..00000000 --- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/sql/open_api_permission.sql +++ /dev/null @@ -1 +0,0 @@ -INSERT INTO `open_api_permission` (`id`, `api_id`, `api_auth_id`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES ('1870491556923179010', '1870486348755324929', '1870484839812517890', NULL, '2024-12-21 23:28:34', NULL, NULL); diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/sql/open_api_record.sql b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/sql/open_api_record.sql deleted file mode 100644 index 8b5f2e06..00000000 --- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/sql/open_api_record.sql +++ /dev/null @@ -1,4 +0,0 @@ -INSERT INTO `open_api_record` (`id`, `api_id`, `call_auth_id`, `call_time`, `used_time`, `response_time`) VALUES ('1870491654130368513', '1870486348755324929', '1870484839812517890', '2024-12-21 23:28:57', 184, '2024-12-21 23:28:57'); -INSERT INTO `open_api_record` (`id`, `api_id`, `call_auth_id`, `call_time`, `used_time`, `response_time`) VALUES ('1870492694183542786', '1870486348755324929', '1870484839812517890', '2024-12-21 23:31:04', 120717, '2024-12-21 23:33:05'); -INSERT INTO `open_api_record` (`id`, `api_id`, `call_auth_id`, `call_time`, `used_time`, `response_time`) VALUES ('1870493301040680961', '1870486348755324929', '1870484839812517890', '2024-12-21 23:35:26', 3865, '2024-12-21 23:35:30'); -INSERT INTO `open_api_record` (`id`, `api_id`, `call_auth_id`, `call_time`, `used_time`, `response_time`) VALUES ('1870493334939045889', '1870486348755324929', '1870484839812517890', '2024-12-21 23:35:38', 82, '2024-12-21 23:35:38');