diff --git a/src/main/java/com/cool/core/annotation/EpsField.java b/src/main/java/com/cool/core/annotation/EpsField.java index 4d3143b..1e59245 100644 --- a/src/main/java/com/cool/core/annotation/EpsField.java +++ b/src/main/java/com/cool/core/annotation/EpsField.java @@ -1,5 +1,7 @@ package com.cool.core.annotation; +import com.cool.core.enums.AdminComponentsEnum; + import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -8,5 +10,5 @@ import java.lang.annotation.Target; @Target({ElementType.FIELD, ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) public @interface EpsField { - String component() default "input"; + String component() default AdminComponentsEnum.INPUT; } diff --git a/src/main/java/com/cool/core/eps/CoolEps.java b/src/main/java/com/cool/core/eps/CoolEps.java index 19bfb52..cf9e3b9 100644 --- a/src/main/java/com/cool/core/eps/CoolEps.java +++ b/src/main/java/com/cool/core/eps/CoolEps.java @@ -11,6 +11,7 @@ import cn.hutool.extra.spring.SpringUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.cool.core.annotation.EpsField; +import com.cool.core.annotation.TokenIgnore; import com.cool.core.config.CustomOpenApiResource; import com.mybatisflex.annotation.Table; import com.tangzc.mybatisflex.autotable.annotation.ColumnDefine; @@ -90,10 +91,12 @@ public class CoolEps { private void urls() { Dict admin = Dict.create(); Dict app = Dict.create(); + ArrayList emptyList = new ArrayList<>(); Map map = requestMappingHandlerMapping.getHandlerMethods(); for (Map.Entry methodEntry : map.entrySet()) { RequestMappingInfo info = methodEntry.getKey(); HandlerMethod method = methodEntry.getValue(); + TokenIgnore tokenIgnore = method.getMethodAnnotation(TokenIgnore.class); String module = getModule(method); if (StrUtil.isNotEmpty(module)) { String entityName = getEntity(method.getBeanType()); @@ -126,17 +129,24 @@ public class CoolEps { } }); if (item != null) { - item.set("api", apis(prefix, methodPath, item.getBean("api"))); + item.set("api", apis(prefix, methodPath, item.getBean("api"), tokenIgnore)); } else { item = Dict.create(); item.set("controller", method.getBeanType().getSimpleName()); item.set("module", module); + item.set("info", Dict.create().set("type", + Dict.create() + .set("name", getLastPathSegment(prefix)) + .set("description", "") + )); + item.set("api", apis(prefix, methodPath, item.getBean("api"), tokenIgnore)); item.set("name", entityName); - item.set("api", new ArrayList()); - item.set("prefix", prefix); item.set("columns", entityInfo.get(entityName)); - item.set("menu", menuInfo.get( entityName ) ); - item.set("api", apis(prefix, methodPath, item.getBean("api"))); + item.set("pageQueryOp", Dict.create().set("keyWordLikeFields", emptyList) + .set("fieldEq", emptyList) + .set("fieldLike", emptyList)); + item.set("prefix", prefix); + item.set("menu", menuInfo.get(entityName)); urls.add(item); } if (type == 0) { @@ -152,6 +162,28 @@ public class CoolEps { this.app = app; } + /** + * 提取URL路径中的最后一个路径段 + * 示例:输入 "/api/getData" 返回 "getData" + */ + private String getLastPathSegment(String url) { + if (StrUtil.isBlank(url)) { + return ""; + } + + int queryIndex = url.indexOf('?'); + if (queryIndex != -1) { + url = url.substring(0, queryIndex); + } + + int slashIndex = url.lastIndexOf('/'); + if (slashIndex != -1 && slashIndex < url.length() - 1) { + return url.substring(slashIndex + 1); + } else { + return url; + } + } + /** * 设置所有的api @@ -161,13 +193,18 @@ public class CoolEps { * @param list api列表 * @return api列表 */ - private List apis(String prefix, String methodPath, List list) { + private List apis(String prefix, String methodPath, List list, TokenIgnore tokenIgnore) { + if (ObjUtil.isNull(list)) { + list = new ArrayList<>(); + } Dict item = Dict.create(); - item.set("method", ""); item.set("path", methodPath); - item.set("summary", ""); item.set("tag", ""); - item.set("dts", new Object()); + item.set("dts", Dict.create()); + item.set("ignoreToken", false); + if (tokenIgnore != null) { + item.set("ignoreToken", true); + } setSwaggerInfo(item, prefix + methodPath); list.add(item); return list; @@ -184,10 +221,8 @@ public class CoolEps { JSONObject urlInfo = paths.getJSONObject(url); String method = urlInfo.keySet().iterator().next(); JSONObject methodInfo = urlInfo.getJSONObject(method); - item.set("dts", methodInfo); item.set("method", method); item.set("summary", methodInfo.getStr("summary")); - item.set("description", methodInfo.get("description")); } /** @@ -351,6 +386,7 @@ public class CoolEps { dict.set("propertyName", field.getName()); dict.set("type", matchType(field.getType().getName())); dict.set("nullable", !columnInfo.notNull()); + dict.set("source", "a." + field.getName()); dictList.add(dict); } return dictList; diff --git a/src/main/java/com/cool/core/request/R.java b/src/main/java/com/cool/core/request/R.java index 66e2d6a..35ecd2a 100644 --- a/src/main/java/com/cool/core/request/R.java +++ b/src/main/java/com/cool/core/request/R.java @@ -65,7 +65,7 @@ public class R implements Serializable { } public static R ok(B data) { - return new R(1000 , "ok", data); + return new R(1000 , "success", data); } diff --git a/src/main/java/com/cool/modules/base/entity/sys/BaseSysUserEntity.java b/src/main/java/com/cool/modules/base/entity/sys/BaseSysUserEntity.java index fa5b5c0..f98a40d 100644 --- a/src/main/java/com/cool/modules/base/entity/sys/BaseSysUserEntity.java +++ b/src/main/java/com/cool/modules/base/entity/sys/BaseSysUserEntity.java @@ -1,6 +1,8 @@ package com.cool.modules.base.entity.sys; +import com.cool.core.annotation.EpsField; import com.cool.core.base.TenantEntity; +import com.cool.core.enums.AdminComponentsEnum; import com.mybatisflex.annotation.Column; import com.mybatisflex.annotation.Table; import com.tangzc.mybatisflex.autotable.annotation.ColumnDefine; @@ -41,6 +43,7 @@ public class BaseSysUserEntity extends TenantEntity { private String headImg; @ColumnDefine(comment = "手机号") + @EpsField(component = AdminComponentsEnum.TEXTAREA) private String phone; @ColumnDefine(comment = "邮箱")