diff --git a/server/boot/src/main/resources/application.properties b/server/boot/src/main/resources/application.properties deleted file mode 100644 index d10670b8e2139adeea07ea704a198226b3859501..0000000000000000000000000000000000000000 --- a/server/boot/src/main/resources/application.properties +++ /dev/null @@ -1,10 +0,0 @@ -# Server port -server.port=7700 - -# MySQL host -mysql.host=${MYSQL_HOST:localhost:3306} -# Schema name -mysql.schema=${MYSQL_SCHEMA:torna} -# Make sure the account can run CREATE/ALTER sql. -mysql.username=${MYSQL_USERNAME:root} -mysql.password=${MYSQL_PASSWORD:root} diff --git a/server/server-api/src/main/java/cn/torna/api/open/SwaggerApi.java b/server/server-api/src/main/java/cn/torna/api/open/SwaggerApi.java index 02db61a2185e2e3b381156f1af0760c2557e2554..9a6f4fccbb08f6c7e6a04ecf7a66811b9dd521c5 100644 --- a/server/server-api/src/main/java/cn/torna/api/open/SwaggerApi.java +++ b/server/server-api/src/main/java/cn/torna/api/open/SwaggerApi.java @@ -2,13 +2,7 @@ package cn.torna.api.open; import cn.torna.api.bean.ApiUser; import cn.torna.api.bean.RequestContext; -import cn.torna.api.open.param.DebugEnvParam; -import cn.torna.api.open.param.DocParamPushParam; -import cn.torna.api.open.param.DocPushItemParam; -import cn.torna.api.open.param.DocPushParam; -import cn.torna.api.open.param.EnumInfoCreateParam; -import cn.torna.api.open.param.EnumItemCreateParam; -import cn.torna.api.open.param.HeaderParamPushParam; +import cn.torna.api.open.param.*; import cn.torna.common.bean.Booleans; import cn.torna.common.bean.HttpHelper; import cn.torna.common.bean.User; @@ -43,19 +37,12 @@ import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import java.io.IOException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; -import java.util.Set; +import java.util.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Function; import java.util.function.Predicate; import java.util.stream.Collectors; +import java.util.stream.Stream; /** * @author thc @@ -81,6 +68,7 @@ public class SwaggerApi { /** * 导入swagger文档 + * * @param importSwaggerV2DTO importSwaggerV2DTO */ public Module importSwagger(ImportSwaggerV2DTO importSwaggerV2DTO) { @@ -184,8 +172,9 @@ public class SwaggerApi { /** * OpenAPI转换成Torna推送文档参数 + * * @param pushUser 推送人 - * @param openAPI openAPI对象 + * @param openAPI openAPI对象 * @return 返回Torna需要的参数 */ private static DocPushParam convertDocInfo(String pushUser, OpenAPI openAPI) { @@ -200,6 +189,7 @@ public class SwaggerApi { /** * 构建调试环境 + * * @param openAPI openAPI * @return 返回调试环境,没有返回空List */ @@ -278,12 +268,12 @@ public class SwaggerApi { } return paths.entrySet() .stream() - .flatMap(entry-> buildItems(entry, openAPI).stream()) + .flatMap(entry -> buildItems(entry, openAPI).stream()) .collect(Collectors.toList()); } private static List buildItems(Map.Entry entry, OpenAPI openAPI) { - List items = new ArrayList<>(); + List items = new ArrayList<>(); String path = entry.getKey(); PathItem pathItem = entry.getValue(); Map operationMap = pathItem.readOperationsMap(); @@ -300,8 +290,8 @@ public class SwaggerApi { .deprecated(Optional.ofNullable(operation.getDeprecated()).orElse(false) ? "" : null) .orderIndex(threadLocal.get().getAndIncrement()) .headerParams(buildHeaderParamPushParams(operation)) - .pathParams(buildDocParamPushParams(operation, parameter -> Objects.equals("path", parameter.getIn()))) - .queryParams(buildDocParamPushParams(operation, parameter -> Objects.equals("query", parameter.getIn()))) + .pathParams(buildDocParamPushParams(openAPI, operation, parameter -> Objects.equals("path", parameter.getIn()))) + .queryParams(buildDocParamPushParams(openAPI, operation, parameter -> Objects.equals("query", parameter.getIn()))) .tag(CollectionUtils.isEmpty(operation.getTags()) ? "" : operation.getTags().get(0)) .build(); @@ -372,7 +362,7 @@ public class SwaggerApi { } } else { // 表单结构 - docParamPushParams = buildDocParamPushParams(operation, parameter -> "formData".equals(parameter.getIn())); + docParamPushParams = buildDocParamPushParams(openAPI, operation, parameter -> "formData".equals(parameter.getIn())); } return new RequestParamsWrapper(docParamPushParams, isRequestArray, contentType); } @@ -439,7 +429,7 @@ public class SwaggerApi { } // list对象,List if ("array".equals(type) && value.containsKey("items")) { - Map items = (Map)value.get("items"); + Map items = (Map) value.get("items"); Object itemRef = items.get("$ref"); if (itemRef != null) { children = buildObjectParam(String.valueOf(itemRef), openAPI); @@ -489,14 +479,14 @@ public class SwaggerApi { return enumInfoCreateParam; } - private static List buildDocParamPushParams(Operation operation, Predicate predicate) { + private static List buildDocParamPushParams(OpenAPI openAPI, Operation operation, Predicate predicate) { List parameters = operation.getParameters(); if (CollectionUtils.isEmpty(parameters)) { return null; } return parameters.stream() .filter(predicate) - .map(parameter -> { + .flatMap(parameter -> { DocParamPushParam param = DocParamPushParam.builder() .name(parameter.getName()) .type(getType(parameter)) @@ -507,16 +497,20 @@ public class SwaggerApi { .build(); Schema schema = parameter.getSchema(); if (schema != null) { + String $ref = schema.get$ref(); + String type = schema.getType(); // 如果是数组参数 - if ("array".equals(param.getType())) { + if ("array".equals(type)) { Schema items = schema.getItems(); String itemsType = items.getType(); - param.setType("array["+itemsType+"]"); + param.setType("array[" + itemsType + "]"); List list = items.getEnum(); setEnumDescription(list, param); + } else if ($ref != null) { + return buildObjectParam($ref, openAPI).stream(); } } - return param; + return Stream.of(param); }) .collect(Collectors.toList()); } @@ -568,7 +562,6 @@ public class SwaggerApi { } - private static String getMaxLength(Parameter parameter) { return Optional.ofNullable(parameter) .map(Parameter::getSchema) @@ -584,8 +577,7 @@ public class SwaggerApi { } /** - * - * @param $ref #/components/schemas/Order + * @param $ref #/components/schemas/Order * @param openAPI * @return */ @@ -595,7 +587,7 @@ public class SwaggerApi { String type = schema.getType(); if (type == null) { Map objectProperties = Optional.ofNullable(schema.getJsonSchema()).orElse(Collections.emptyMap()); - type = String.valueOf(objectProperties.getOrDefault("type", TYPE_OBJECT)); + type = String.valueOf(objectProperties.getOrDefault("type", TYPE_OBJECT)); } Map properties = getProperties(schema); return new JsonSchema(type, properties, schema); @@ -608,7 +600,7 @@ public class SwaggerApi { for (Map.Entry entry : properties.entrySet()) { Schema value = entry.getValue(); Map val = new LinkedHashMap<>(8); - putVal(val,"required", value.getRequired()); + putVal(val, "required", value.getRequired()); putVal(val, "format", value.getFormat()); putVal(val, "type", value.getType()); putVal(val, "description", value.getDescription());