|
@@ -9,11 +9,16 @@ import com.sweetfish.source.PageFlipper;
|
|
|
import com.sweetfish.util.ClassesUtils;
|
|
import com.sweetfish.util.ClassesUtils;
|
|
|
import com.sweetfish.util.Comment;
|
|
import com.sweetfish.util.Comment;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
+import org.dom4j.Document;
|
|
|
|
|
+import org.dom4j.Element;
|
|
|
|
|
+import org.dom4j.io.SAXReader;
|
|
|
|
|
|
|
|
|
|
+import java.io.File;
|
|
|
import java.lang.reflect.Field;
|
|
import java.lang.reflect.Field;
|
|
|
import java.lang.reflect.Method;
|
|
import java.lang.reflect.Method;
|
|
|
import java.lang.reflect.Modifier;
|
|
import java.lang.reflect.Modifier;
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
|
|
+import java.util.Arrays;
|
|
|
import java.util.LinkedList;
|
|
import java.util.LinkedList;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
|
|
@@ -23,13 +28,18 @@ import java.util.List;
|
|
|
public class TAppDoc {
|
|
public class TAppDoc {
|
|
|
|
|
|
|
|
// private static String SPACE8 = " ";
|
|
// private static String SPACE8 = " ";
|
|
|
- private static String SPACE8 = " ";
|
|
|
|
|
- private static String SPACE16 = SPACE8 + SPACE8;
|
|
|
|
|
- private static String SPACE24 = SPACE16 + SPACE8;
|
|
|
|
|
|
|
+ private static final String SPACE8 = " ";
|
|
|
|
|
+ private static final String SPACE16 = SPACE8 + SPACE8;
|
|
|
|
|
+ private static final String SPACE24 = SPACE16 + SPACE8;
|
|
|
|
|
|
|
|
private String appName;
|
|
private String appName;
|
|
|
|
|
+
|
|
|
|
|
+ private String appHome;
|
|
|
|
|
+
|
|
|
private Application application;
|
|
private Application application;
|
|
|
- private List<TAppModule> moduleList = new ArrayList<>();
|
|
|
|
|
|
|
+ private final List<TAppModule> moduleList = new ArrayList<>();
|
|
|
|
|
+
|
|
|
|
|
+ private static final String[] simpleParamType = {"Integer", "Long", "Double", "Float", "Boolean", "String"};
|
|
|
|
|
|
|
|
public String getAppName() {
|
|
public String getAppName() {
|
|
|
return appName;
|
|
return appName;
|
|
@@ -44,6 +54,11 @@ public class TAppDoc {
|
|
|
return this;
|
|
return this;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ public TAppDoc appHome(String appHome) {
|
|
|
|
|
+ this.appHome = appHome;
|
|
|
|
|
+ return this;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
public void addModule(TAppModule module) {
|
|
public void addModule(TAppModule module) {
|
|
|
this.moduleList.add(module);
|
|
this.moduleList.add(module);
|
|
|
}
|
|
}
|
|
@@ -57,7 +72,8 @@ public class TAppDoc {
|
|
|
HttpServer server = node.getServer();
|
|
HttpServer server = node.getServer();
|
|
|
|
|
|
|
|
for (HttpServlet servlet : server.getPrepareServlet().getServlets()) {
|
|
for (HttpServlet servlet : server.getPrepareServlet().getServlets()) {
|
|
|
- if (!(servlet instanceof HttpServlet)) continue;
|
|
|
|
|
|
|
+
|
|
|
|
|
+ if (servlet == null) continue;
|
|
|
if (servlet.getClass() == ApiDocServlet.class) continue;
|
|
if (servlet.getClass() == ApiDocServlet.class) continue;
|
|
|
WebServlet ws = servlet.getClass().getAnnotation(WebServlet.class);
|
|
WebServlet ws = servlet.getClass().getAnnotation(WebServlet.class);
|
|
|
|
|
|
|
@@ -84,8 +100,8 @@ public class TAppDoc {
|
|
|
.setModuleId(moduleId);
|
|
.setModuleId(moduleId);
|
|
|
addModule(module);
|
|
addModule(module);
|
|
|
|
|
|
|
|
- final Class selfClz = servlet.getClass();
|
|
|
|
|
- Class clz = servlet.getClass();
|
|
|
|
|
|
|
+ final Class<? extends HttpServlet> selfClz = servlet.getClass();
|
|
|
|
|
+ Class<? extends HttpServlet> clz = servlet.getClass();
|
|
|
if (Modifier.isAbstract(clz.getModifiers())) continue;
|
|
if (Modifier.isAbstract(clz.getModifiers())) continue;
|
|
|
|
|
|
|
|
for (Method method : clz.getMethods()) {
|
|
for (Method method : clz.getMethods()) {
|
|
@@ -96,215 +112,425 @@ public class TAppDoc {
|
|
|
//忽略不被继承的方法
|
|
//忽略不被继承的方法
|
|
|
if (!action.inherited() && selfClz != clz) continue;
|
|
if (!action.inherited() && selfClz != clz) continue;
|
|
|
|
|
|
|
|
- String methodUrl = prefix + action.url();
|
|
|
|
|
- Boolean auth = action.auth();
|
|
|
|
|
- Integer actionId = action.actionid();
|
|
|
|
|
- String methodName = "";
|
|
|
|
|
- if (StringUtils.isNotEmpty(action.comment())) {
|
|
|
|
|
- methodName = action.comment();
|
|
|
|
|
- } else {
|
|
|
|
|
- methodName = method.getName();
|
|
|
|
|
- }
|
|
|
|
|
- String methodResult = action.result();
|
|
|
|
|
- methodResult = methodResult.replace("<", " ");
|
|
|
|
|
- methodResult = methodResult.replace(">", " ");
|
|
|
|
|
-
|
|
|
|
|
- TAppMethod appMethod = new TAppMethod()
|
|
|
|
|
- .setMethodName(methodName)
|
|
|
|
|
- .setUrl(methodUrl)
|
|
|
|
|
- .setMethodId(actionId)
|
|
|
|
|
- .setAuth(auth)
|
|
|
|
|
- .setResult(methodResult)
|
|
|
|
|
- .setSort(action.sort())
|
|
|
|
|
- .setSupportMethods(String.join("/", action.methods()));
|
|
|
|
|
- module.addMethod(appMethod);
|
|
|
|
|
-
|
|
|
|
|
- String jQueryMethod = "post";
|
|
|
|
|
-
|
|
|
|
|
- if (action.methods().length > 0) {
|
|
|
|
|
- String methodArrayStr = String.join("/", action.methods());
|
|
|
|
|
- methodArrayStr = methodArrayStr.toLowerCase();
|
|
|
|
|
- if (methodArrayStr.contains("post")) {
|
|
|
|
|
- jQueryMethod = "post";
|
|
|
|
|
- } else if (methodArrayStr.contains("get")) {
|
|
|
|
|
- jQueryMethod = "get";
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ WebApiFile[] apiFiles = method.getAnnotationsByType(WebApiFile.class);
|
|
|
|
|
+ if (apiFiles.length > 0) {
|
|
|
|
|
+ //有接口说明文件时,以文件为主,
|
|
|
|
|
+ //读取接口文件
|
|
|
|
|
+ String methodUrl = prefix + action.url();
|
|
|
|
|
+
|
|
|
|
|
+ String methodResult = action.result();
|
|
|
|
|
+ methodResult = methodResult.replace("<", " ");
|
|
|
|
|
+ methodResult = methodResult.replace(">", " ");
|
|
|
|
|
+ String finalMethodResult = methodResult;
|
|
|
|
|
+
|
|
|
|
|
+ for (WebApiFile apiFile : apiFiles) {
|
|
|
|
|
+ // 创建saxReader对象
|
|
|
|
|
+ SAXReader reader = new SAXReader();
|
|
|
|
|
+
|
|
|
|
|
+ String apiXmlFileName = appHome + File.separator + "conf" + File.separator + "apiFiles" + File.separator + apiFile.fileName();
|
|
|
|
|
+ File apiXmlFile = new File(apiXmlFileName);
|
|
|
|
|
+
|
|
|
|
|
+ // 通过read方法读取一个文件 转换成Document对象
|
|
|
|
|
+ Document document = reader.read(apiXmlFile);
|
|
|
|
|
+ //获取根节点元素对象
|
|
|
|
|
+ Element root = document.getRootElement();
|
|
|
|
|
+ List<Element> apiNodes = root.elements("api");
|
|
|
|
|
+
|
|
|
|
|
+ apiNodes.forEach((apiNode) -> {
|
|
|
|
|
+ String methodName = apiNode.element("methodName").getTextTrim();
|
|
|
|
|
+
|
|
|
|
|
+ TAppMethod appMethod = new TAppMethod()
|
|
|
|
|
+ .setMethodName(methodName)
|
|
|
|
|
+ .setCallFlag(1)
|
|
|
|
|
+ .setUrl(methodUrl)
|
|
|
|
|
+ .setMethodId(action.actionid())
|
|
|
|
|
+ .setAuth(action.auth())
|
|
|
|
|
+ .setResult(finalMethodResult)
|
|
|
|
|
+ .setSort(Integer.parseInt(apiNode.element("sort").getTextTrim()))
|
|
|
|
|
+ .setSupportMethods(String.join("/", action.methods()));
|
|
|
|
|
+ module.addMethod(appMethod);
|
|
|
|
|
+
|
|
|
|
|
+ //业务脚本
|
|
|
|
|
+ TAppMethodParam businessMethodParam = new TAppMethodParam()
|
|
|
|
|
+ .setParamName("businessMethod")
|
|
|
|
|
+ .setParamComment("业务名称")
|
|
|
|
|
+ .setParamRequired(true)
|
|
|
|
|
+ .setParamSrc(apiNode.elementTextTrim("businessMethod"))
|
|
|
|
|
+ .setParamType("String");
|
|
|
|
|
+ appMethod.addParam(businessMethodParam);
|
|
|
|
|
+
|
|
|
|
|
+ //token参数
|
|
|
|
|
+ String tokenFrom = apiNode.elementTextTrim("tokenFrom");
|
|
|
|
|
+ if (StringUtils.isNotBlank(tokenFrom)) {
|
|
|
|
|
+ TAppMethodParam tokenParam = new TAppMethodParam()
|
|
|
|
|
+ .setParamName("token")
|
|
|
|
|
+ .setParamComment("操作token")
|
|
|
|
|
+ .setParamRequired(true)
|
|
|
|
|
+ .setParamSrc(tokenFrom)
|
|
|
|
|
+ .setParamType("String");
|
|
|
|
|
+ appMethod.addParam(tokenParam);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
+ String pageFrom = apiNode.elementTextTrim("pageFrom");
|
|
|
|
|
+ if (StringUtils.isNotBlank(pageFrom)) {
|
|
|
|
|
+ TAppMethodParam pageParam = new TAppMethodParam()
|
|
|
|
|
+ .setParamName("page")
|
|
|
|
|
+ .setParamComment("分页参数")
|
|
|
|
|
+ .setParamRequired(true)
|
|
|
|
|
+ .setParamSrc("JSON.stringify({\"pageIndex\": x, \"pageSize\": y })")
|
|
|
|
|
+ .setParamType("PageFlipper");
|
|
|
|
|
+ appMethod.addParam(pageParam);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- List<String> jsDefineList = new ArrayList<>();
|
|
|
|
|
- List<String> jsReferenceList = new ArrayList<>();
|
|
|
|
|
-
|
|
|
|
|
- for (HttpParam param : method.getAnnotationsByType(HttpParam.class)) {
|
|
|
|
|
- //region 服务说明和参数表格
|
|
|
|
|
- String paramSrc = "";
|
|
|
|
|
- if (param.src() == HttpParamSourceType.COOKIE) {
|
|
|
|
|
- paramSrc = "Cookie";
|
|
|
|
|
- } else if (param.src() == HttpParamSourceType.HEADER) {
|
|
|
|
|
- paramSrc = "Header";
|
|
|
|
|
- } else if (param.src() == HttpParamSourceType.BODY) {
|
|
|
|
|
- paramSrc = "Body";
|
|
|
|
|
- } else if (param.src() == HttpParamSourceType.PARAMETER) {
|
|
|
|
|
- paramSrc = "Parameter";
|
|
|
|
|
- }
|
|
|
|
|
- TAppMethodParam methodParam = new TAppMethodParam()
|
|
|
|
|
- .setParamName(param.name())
|
|
|
|
|
- .setParamComment(param.comment())
|
|
|
|
|
- .setParamRequired(param.required())
|
|
|
|
|
- .setParamSrc(paramSrc)
|
|
|
|
|
- .setParamType(param.type().getSimpleName());
|
|
|
|
|
-
|
|
|
|
|
- appMethod.addParam(methodParam);
|
|
|
|
|
- //endregion
|
|
|
|
|
-
|
|
|
|
|
- //参数类型
|
|
|
|
|
- final boolean isarray = param.type().isArray();
|
|
|
|
|
- final Class ptype = isarray ? param.type().getComponentType() : param.type();
|
|
|
|
|
-
|
|
|
|
|
- //region 示例代码
|
|
|
|
|
- if ("parameter".equalsIgnoreCase(paramSrc)) {
|
|
|
|
|
- if (!"&".equalsIgnoreCase(param.name())) {
|
|
|
|
|
- if (ClassesUtils.isPrimitive(ptype)) {
|
|
|
|
|
- Class primitiveClass = ClassesUtils.getPrimitive(ptype);
|
|
|
|
|
- if (primitiveClass != null) {
|
|
|
|
|
- if (primitiveClass == int.class) {
|
|
|
|
|
- jsDefineList.add("var " + param.name() + " = 测试整数;");
|
|
|
|
|
- jsReferenceList.add(SPACE16 + "\"" + param.name() + "\": " + param.name() + ",");
|
|
|
|
|
- } else if (primitiveClass == long.class) {
|
|
|
|
|
- jsDefineList.add("var " + param.name() + " = '测试长整数';");
|
|
|
|
|
- jsReferenceList.add(SPACE16 + "\"" + param.name() + "\": " + param.name() + ",");
|
|
|
|
|
- } else if (primitiveClass == short.class) {
|
|
|
|
|
- jsDefineList.add("var " + param.name() + " = '测试整数';");
|
|
|
|
|
- jsReferenceList.add(SPACE16 + "\"" + param.name() + "\": " + param.name() + ",");
|
|
|
|
|
- } else if (primitiveClass == boolean.class) {
|
|
|
|
|
- jsDefineList.add("var " + param.name() + " = 测试bool参数;");
|
|
|
|
|
- jsReferenceList.add(SPACE16 + "\"" + param.name() + "\": " + param.name() + ",");
|
|
|
|
|
- } else if (primitiveClass == byte.class) {
|
|
|
|
|
- jsDefineList.add("var " + param.name() + " = 测试字节数组;");
|
|
|
|
|
- jsReferenceList.add(SPACE16 + "\"" + param.name() + "\": " + param.name() + ",");
|
|
|
|
|
- } else if (primitiveClass == float.class) {
|
|
|
|
|
- jsDefineList.add("var " + param.name() + " = 测试浮点float参数;");
|
|
|
|
|
- jsReferenceList.add(SPACE16 + "\"" + param.name() + "\": " + param.name() + ",");
|
|
|
|
|
- } else if (primitiveClass == double.class) {
|
|
|
|
|
- jsDefineList.add("var " + param.name() + " = 测试浮点double参数;");
|
|
|
|
|
- jsReferenceList.add(SPACE16 + "\"" + param.name() + "\": " + param.name() + ",");
|
|
|
|
|
|
|
+ TAppMethodParam invokeParam = new TAppMethodParam()
|
|
|
|
|
+ .setParamName("params")
|
|
|
|
|
+ .setParamComment("JSON序列化参数")
|
|
|
|
|
+ .setParamRequired(true)
|
|
|
|
|
+ .setParamSrc("参数见下表")
|
|
|
|
|
+ .setParamType("String");
|
|
|
|
|
+ appMethod.addParam(invokeParam);
|
|
|
|
|
+
|
|
|
|
|
+ String paramOnly = apiNode.elementTextTrim("paramOnly");
|
|
|
|
|
+ if (StringUtils.isNotBlank(paramOnly)) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ //在对象里面找注解的字段
|
|
|
|
|
+ Class ptype = Class.forName(paramOnly);
|
|
|
|
|
+ for (Field field : ptype.getDeclaredFields()) {
|
|
|
|
|
+ if (Modifier.isFinal(field.getModifiers())) {
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (Modifier.isStatic(field.getModifiers())) {
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ String fieldcomment = "";
|
|
|
|
|
+ Comment comment = field.getAnnotation(Comment.class);
|
|
|
|
|
+ if (comment != null) {
|
|
|
|
|
+ fieldcomment = comment.value();
|
|
|
|
|
+ }
|
|
|
|
|
+ ApiPlace[] apiPlaces = field.getAnnotationsByType(ApiPlace.class);
|
|
|
|
|
+ for (ApiPlace place : apiPlaces) {
|
|
|
|
|
+ if (apiNode.elementTextTrim("businessMethod").equalsIgnoreCase(place.value())) {
|
|
|
|
|
+ TAppCallParam callFieldParam = new TAppCallParam()
|
|
|
|
|
+ .setParamName(field.getName())
|
|
|
|
|
+ .setParamComment(fieldcomment)
|
|
|
|
|
+ .setParamRequired(true)
|
|
|
|
|
+ .setParamSrc("")
|
|
|
|
|
+ .setParamType(field.getType().getSimpleName());
|
|
|
|
|
+ appMethod.addCallParam(callFieldParam);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ } catch (ClassNotFoundException e) {
|
|
|
|
|
+ throw new RuntimeException(e);
|
|
|
}
|
|
}
|
|
|
- } else if (ptype == String.class) {
|
|
|
|
|
- jsDefineList.add("var " + param.name() + " = '测试字符串';");
|
|
|
|
|
- jsReferenceList.add(SPACE16 + "\"" + param.name() + "\": " + param.name() + ",");
|
|
|
|
|
- } else if (ptype == PageFlipper.class) {
|
|
|
|
|
- jsDefineList.add("var " + param.name() + " = {");
|
|
|
|
|
- jsDefineList.add(SPACE8 + "pageIndex: 页码(整数),");
|
|
|
|
|
- jsDefineList.add(SPACE8 + "pageSize: 每页记录数(整数),");
|
|
|
|
|
- jsDefineList.add("};");
|
|
|
|
|
- jsReferenceList.add(SPACE16 + "\"" + param.name() + "\": JSON.stringify(" + param.name() + "),");
|
|
|
|
|
} else {
|
|
} else {
|
|
|
- jsDefineList.add("var " + param.name() + " = {;");
|
|
|
|
|
- for (Field field : ptype.getDeclaredFields()) {
|
|
|
|
|
- if (Modifier.isFinal(field.getModifiers())) {
|
|
|
|
|
- continue;
|
|
|
|
|
- }
|
|
|
|
|
- if (Modifier.isStatic(field.getModifiers())) {
|
|
|
|
|
- continue;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ Element paramsNode = apiNode.element("params");
|
|
|
|
|
+ List<Element> paramNodeList = paramsNode.elements("param");
|
|
|
|
|
+ paramNodeList.forEach((callParamNode) -> {
|
|
|
|
|
+ String callParamType = callParamNode.elementTextTrim("paramKind");
|
|
|
|
|
+ if (Arrays.stream(simpleParamType).noneMatch((x) -> x.equalsIgnoreCase(callParamType))) {
|
|
|
|
|
+ //对象
|
|
|
|
|
+ //基础类型
|
|
|
|
|
+ TAppCallParam callParam = null;
|
|
|
|
|
+ try {
|
|
|
|
|
+ callParam = new TAppCallParam()
|
|
|
|
|
+ .setParamName(callParamNode.elementTextTrim("paramKey"))
|
|
|
|
|
+ .setParamComment(callParamNode.elementTextTrim("paramComment"))
|
|
|
|
|
+ .setParamRequired(true)
|
|
|
|
|
+ .setParamSrc(Class.forName(callParamType).getSimpleName())
|
|
|
|
|
+ .setParamType(callParamType);
|
|
|
|
|
+ appMethod.addCallParam(callParam);
|
|
|
|
|
+
|
|
|
|
|
+ //在对象里面找注解的字段
|
|
|
|
|
+ Class ptype = Class.forName(callParamType);
|
|
|
|
|
+ for (Field field : ptype.getDeclaredFields()) {
|
|
|
|
|
+ if (Modifier.isFinal(field.getModifiers())) {
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (Modifier.isStatic(field.getModifiers())) {
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ String fieldcomment = "";
|
|
|
|
|
+ Comment comment = field.getAnnotation(Comment.class);
|
|
|
|
|
+ if (comment != null) {
|
|
|
|
|
+ fieldcomment = comment.value();
|
|
|
|
|
+ }
|
|
|
|
|
+ ApiPlace[] apiPlaces = field.getAnnotationsByType(ApiPlace.class);
|
|
|
|
|
+ for (ApiPlace place : apiPlaces) {
|
|
|
|
|
+ if (apiNode.elementTextTrim("businessMethod").equalsIgnoreCase(place.value())) {
|
|
|
|
|
+ TAppCallParam callFieldParam = new TAppCallParam()
|
|
|
|
|
+ .setParamName(" " + " --" + field.getName())
|
|
|
|
|
+ .setParamComment(fieldcomment)
|
|
|
|
|
+ .setParamRequired(true)
|
|
|
|
|
+ .setParamSrc(callParamNode.elementTextTrim("paramKey") + "子属性")
|
|
|
|
|
+ .setParamType(field.getType().getSimpleName());
|
|
|
|
|
+ appMethod.addCallParam(callFieldParam);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ } catch (ClassNotFoundException e) {
|
|
|
|
|
+ throw new RuntimeException(e);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ } else {
|
|
|
|
|
+ //基础类型
|
|
|
|
|
+ TAppCallParam callParam = new TAppCallParam()
|
|
|
|
|
+ .setParamName(callParamNode.elementTextTrim("paramKey"))
|
|
|
|
|
+ .setParamComment(callParamNode.elementTextTrim("paramComment"))
|
|
|
|
|
+ .setParamRequired(true)
|
|
|
|
|
+ .setParamSrc("")
|
|
|
|
|
+ .setParamType(callParamType);
|
|
|
|
|
|
|
|
- String fieldcomment = "";
|
|
|
|
|
- Comment comment = field.getAnnotation(Comment.class);
|
|
|
|
|
- if (comment != null) {
|
|
|
|
|
- fieldcomment = comment.value();
|
|
|
|
|
|
|
+ appMethod.addCallParam(callParam);
|
|
|
}
|
|
}
|
|
|
- ApiPlace[] apiPlaces = field.getAnnotationsByType(ApiPlace.class);
|
|
|
|
|
- for (ApiPlace place : apiPlaces) {
|
|
|
|
|
- if (methodUrl.equalsIgnoreCase(place.value())) {
|
|
|
|
|
- jsDefineList.add(SPACE8 + field.getName() + ": " + fieldcomment + ",");
|
|
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ List<Element> apiBeanNodeList = apiNode.elements("webApiBean");
|
|
|
|
|
+ apiBeanNodeList.forEach((apiBeanNode) -> {
|
|
|
|
|
+ String apiBeanType = apiBeanNode.getTextTrim();
|
|
|
|
|
+ if (StringUtils.isNotBlank(apiBeanType)) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ Class ptype = Class.forName(apiBeanType);
|
|
|
|
|
+
|
|
|
|
|
+ //region 对象表格
|
|
|
|
|
+ List<TAppClassField> fieldList = new LinkedList<>();
|
|
|
|
|
+ for (Field field : ptype.getDeclaredFields()) {
|
|
|
|
|
+ if (Modifier.isFinal(field.getModifiers())) {
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (Modifier.isStatic(field.getModifiers())) {
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ TAppClassField classField = new TAppClassField();
|
|
|
|
|
+ classField.setFieldName(field.getName());
|
|
|
|
|
+ classField.setFieldComment("");
|
|
|
|
|
+ Comment comment = field.getAnnotation(Comment.class);
|
|
|
|
|
+ if (comment != null) {
|
|
|
|
|
+ classField.setFieldComment(comment.value());
|
|
|
|
|
+ }
|
|
|
|
|
+ classField.setFieldCurrent(0);
|
|
|
|
|
+ ApiPlace[] apiPlaces = field.getAnnotationsByType(ApiPlace.class);
|
|
|
|
|
+ for (ApiPlace place : apiPlaces) {
|
|
|
|
|
+ classField.getFieldPlace().add(place.value());
|
|
|
|
|
+ if (apiNode.elementTextTrim("businessMethod").equalsIgnoreCase(place.value())) {
|
|
|
|
|
+ classField.setFieldCurrent(1);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ fieldList.add(classField);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ TAppMethodClass methodClass = new TAppMethodClass()
|
|
|
|
|
+ .setClassName(ptype.getSimpleName())
|
|
|
|
|
+ .setClassField(fieldList)
|
|
|
|
|
+ .setResult(false);
|
|
|
|
|
+
|
|
|
|
|
+ appMethod.addClass(methodClass);
|
|
|
|
|
+ //endregion
|
|
|
|
|
+
|
|
|
|
|
+ } catch (ClassNotFoundException e) {
|
|
|
|
|
+ throw new RuntimeException(e);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- jsDefineList.add("};");
|
|
|
|
|
|
|
|
|
|
- jsReferenceList.add(SPACE16 + "\"" + param.name() + "\": JSON.stringify(" + param.name() + "),");
|
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
|
|
+ });
|
|
|
|
|
+ WebApiBean[] apiBeans = method.getAnnotationsByType(WebApiBean.class);
|
|
|
|
|
+ for (WebApiBean apiBean : apiBeans) {
|
|
|
|
|
+ final boolean isarray = apiBean.type().isArray();
|
|
|
|
|
+ final Class ptype = isarray ? apiBean.type().getComponentType() : apiBean.type();
|
|
|
|
|
+
|
|
|
|
|
+ if (ptype.isPrimitive() || ptype == String.class || ptype == PageFlipper.class) {
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (!appMethod.containClass(ptype.getSimpleName(), apiBean.result())) {
|
|
|
|
|
+ //region 对象表格
|
|
|
|
|
+ List<TAppClassField> fieldList = new LinkedList<>();
|
|
|
|
|
+ for (Field field : ptype.getDeclaredFields()) {
|
|
|
|
|
+ if (Modifier.isFinal(field.getModifiers())) {
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (Modifier.isStatic(field.getModifiers())) {
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ TAppClassField classField = new TAppClassField();
|
|
|
|
|
+ classField.setFieldName(field.getName());
|
|
|
|
|
+ classField.setFieldComment("");
|
|
|
|
|
+ Comment comment = field.getAnnotation(Comment.class);
|
|
|
|
|
+ if (comment != null) {
|
|
|
|
|
+ classField.setFieldComment(comment.value());
|
|
|
|
|
+ }
|
|
|
|
|
+ classField.setFieldCurrent(0);
|
|
|
|
|
+ ApiPlace[] apiPlaces = field.getAnnotationsByType(ApiPlace.class);
|
|
|
|
|
+ for (ApiPlace place : apiPlaces) {
|
|
|
|
|
+ classField.getFieldPlace().add(place.value());
|
|
|
|
|
+ if (methodUrl.equalsIgnoreCase(place.value())) {
|
|
|
|
|
+ classField.setFieldCurrent(1);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ fieldList.add(classField);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ TAppMethodClass methodClass = new TAppMethodClass()
|
|
|
|
|
+ .setClassName(ptype.getSimpleName())
|
|
|
|
|
+ .setClassField(fieldList)
|
|
|
|
|
+ .setResult(apiBean.result());
|
|
|
|
|
+
|
|
|
|
|
+ appMethod.addClass(methodClass);
|
|
|
|
|
+ //endregion
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ String methodUrl = prefix + action.url();
|
|
|
|
|
+ Boolean auth = action.auth();
|
|
|
|
|
+ Integer actionId = action.actionid();
|
|
|
|
|
+ String methodName = "";
|
|
|
|
|
+ if (StringUtils.isNotEmpty(action.comment())) {
|
|
|
|
|
+ methodName = action.comment();
|
|
|
|
|
+ } else {
|
|
|
|
|
+ methodName = method.getName();
|
|
|
|
|
+ }
|
|
|
|
|
+ String methodResult = action.result();
|
|
|
|
|
+ methodResult = methodResult.replace("<", " ");
|
|
|
|
|
+ methodResult = methodResult.replace(">", " ");
|
|
|
|
|
+
|
|
|
|
|
+ TAppMethod appMethod = new TAppMethod()
|
|
|
|
|
+ .setMethodName(methodName)
|
|
|
|
|
+ .setCallFlag(0)
|
|
|
|
|
+ .setUrl(methodUrl)
|
|
|
|
|
+ .setMethodId(actionId)
|
|
|
|
|
+ .setAuth(auth)
|
|
|
|
|
+ .setResult(methodResult)
|
|
|
|
|
+ .setSort(action.sort())
|
|
|
|
|
+ .setSupportMethods(String.join("/", action.methods()));
|
|
|
|
|
+ module.addMethod(appMethod);
|
|
|
|
|
+
|
|
|
|
|
+ String jQueryMethod = "post";
|
|
|
|
|
+
|
|
|
|
|
+ if (action.methods().length > 0) {
|
|
|
|
|
+ String methodArrayStr = String.join("/", action.methods());
|
|
|
|
|
+ methodArrayStr = methodArrayStr.toLowerCase();
|
|
|
|
|
+ if (methodArrayStr.contains("post")) {
|
|
|
|
|
+ jQueryMethod = "post";
|
|
|
|
|
+ } else if (methodArrayStr.contains("get")) {
|
|
|
|
|
+ jQueryMethod = "get";
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- //endregion
|
|
|
|
|
|
|
|
|
|
- if (ptype.isPrimitive() || ptype == String.class || ptype == PageFlipper.class) {
|
|
|
|
|
- continue;
|
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
- //region 对象表格
|
|
|
|
|
- List<TAppClassField> fieldList = new LinkedList<>();
|
|
|
|
|
- for (Field field : ptype.getDeclaredFields()) {
|
|
|
|
|
- if (Modifier.isFinal(field.getModifiers())) {
|
|
|
|
|
- continue;
|
|
|
|
|
- }
|
|
|
|
|
- if (Modifier.isStatic(field.getModifiers())) {
|
|
|
|
|
- continue;
|
|
|
|
|
|
|
+ List<String> jsDefineList = new ArrayList<>();
|
|
|
|
|
+ List<String> jsReferenceList = new ArrayList<>();
|
|
|
|
|
+
|
|
|
|
|
+ for (HttpParam param : method.getAnnotationsByType(HttpParam.class)) {
|
|
|
|
|
+ //region 服务说明和参数表格
|
|
|
|
|
+ String paramSrc = "";
|
|
|
|
|
+ if (param.src() == HttpParamSourceType.COOKIE) {
|
|
|
|
|
+ paramSrc = "Cookie";
|
|
|
|
|
+ } else if (param.src() == HttpParamSourceType.HEADER) {
|
|
|
|
|
+ paramSrc = "Header";
|
|
|
|
|
+ } else if (param.src() == HttpParamSourceType.BODY) {
|
|
|
|
|
+ paramSrc = "Body";
|
|
|
|
|
+ } else if (param.src() == HttpParamSourceType.PARAMETER) {
|
|
|
|
|
+ paramSrc = "Parameter";
|
|
|
}
|
|
}
|
|
|
|
|
+ TAppMethodParam methodParam = new TAppMethodParam()
|
|
|
|
|
+ .setParamName(param.name())
|
|
|
|
|
+ .setParamComment(param.comment())
|
|
|
|
|
+ .setParamRequired(param.required())
|
|
|
|
|
+ .setParamSrc(paramSrc)
|
|
|
|
|
+ .setParamType(param.type().getSimpleName());
|
|
|
|
|
+
|
|
|
|
|
+ appMethod.addParam(methodParam);
|
|
|
|
|
+ //endregion
|
|
|
|
|
|
|
|
- TAppClassField classField = new TAppClassField();
|
|
|
|
|
- classField.setFieldName(field.getName());
|
|
|
|
|
- classField.setFieldComment("");
|
|
|
|
|
- Comment comment = field.getAnnotation(Comment.class);
|
|
|
|
|
- if (comment != null) {
|
|
|
|
|
- classField.setFieldComment(comment.value());
|
|
|
|
|
- }
|
|
|
|
|
- classField.setFieldCurrent(0);
|
|
|
|
|
- ApiPlace[] apiPlaces = field.getAnnotationsByType(ApiPlace.class);
|
|
|
|
|
- for (ApiPlace place : apiPlaces) {
|
|
|
|
|
- classField.getFieldPlace().add(place.value());
|
|
|
|
|
- if (methodUrl.equalsIgnoreCase(place.value())) {
|
|
|
|
|
- classField.setFieldCurrent(1);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ //参数类型
|
|
|
|
|
+ final boolean isarray = param.type().isArray();
|
|
|
|
|
+ final Class ptype = isarray ? param.type().getComponentType() : param.type();
|
|
|
|
|
+
|
|
|
|
|
+ //region 示例代码
|
|
|
|
|
+ if ("parameter".equalsIgnoreCase(paramSrc)) {
|
|
|
|
|
+ if (!"&".equalsIgnoreCase(param.name())) {
|
|
|
|
|
+ if (ClassesUtils.isPrimitive(ptype)) {
|
|
|
|
|
+ Class primitiveClass = ClassesUtils.getPrimitive(ptype);
|
|
|
|
|
+ if (primitiveClass != null) {
|
|
|
|
|
+ if (primitiveClass == int.class) {
|
|
|
|
|
+ jsDefineList.add("var " + param.name() + " = 测试整数;");
|
|
|
|
|
+ jsReferenceList.add(SPACE16 + "\"" + param.name() + "\": " + param.name() + ",");
|
|
|
|
|
+ } else if (primitiveClass == long.class) {
|
|
|
|
|
+ jsDefineList.add("var " + param.name() + " = '测试长整数';");
|
|
|
|
|
+ jsReferenceList.add(SPACE16 + "\"" + param.name() + "\": " + param.name() + ",");
|
|
|
|
|
+ } else if (primitiveClass == short.class) {
|
|
|
|
|
+ jsDefineList.add("var " + param.name() + " = '测试整数';");
|
|
|
|
|
+ jsReferenceList.add(SPACE16 + "\"" + param.name() + "\": " + param.name() + ",");
|
|
|
|
|
+ } else if (primitiveClass == boolean.class) {
|
|
|
|
|
+ jsDefineList.add("var " + param.name() + " = 测试bool参数;");
|
|
|
|
|
+ jsReferenceList.add(SPACE16 + "\"" + param.name() + "\": " + param.name() + ",");
|
|
|
|
|
+ } else if (primitiveClass == byte.class) {
|
|
|
|
|
+ jsDefineList.add("var " + param.name() + " = 测试字节数组;");
|
|
|
|
|
+ jsReferenceList.add(SPACE16 + "\"" + param.name() + "\": " + param.name() + ",");
|
|
|
|
|
+ } else if (primitiveClass == float.class) {
|
|
|
|
|
+ jsDefineList.add("var " + param.name() + " = 测试浮点float参数;");
|
|
|
|
|
+ jsReferenceList.add(SPACE16 + "\"" + param.name() + "\": " + param.name() + ",");
|
|
|
|
|
+ } else if (primitiveClass == double.class) {
|
|
|
|
|
+ jsDefineList.add("var " + param.name() + " = 测试浮点double参数;");
|
|
|
|
|
+ jsReferenceList.add(SPACE16 + "\"" + param.name() + "\": " + param.name() + ",");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ } else if (ptype == String.class) {
|
|
|
|
|
+ jsDefineList.add("var " + param.name() + " = '测试字符串';");
|
|
|
|
|
+ jsReferenceList.add(SPACE16 + "\"" + param.name() + "\": " + param.name() + ",");
|
|
|
|
|
+ } else if (ptype == PageFlipper.class) {
|
|
|
|
|
+ jsDefineList.add("var " + param.name() + " = {");
|
|
|
|
|
+ jsDefineList.add(SPACE8 + "pageIndex: 页码(整数),");
|
|
|
|
|
+ jsDefineList.add(SPACE8 + "pageSize: 每页记录数(整数),");
|
|
|
|
|
+ jsDefineList.add("};");
|
|
|
|
|
+ jsReferenceList.add(SPACE16 + "\"" + param.name() + "\": JSON.stringify(" + param.name() + "),");
|
|
|
|
|
+ } else {
|
|
|
|
|
+ jsDefineList.add("var " + param.name() + " = {;");
|
|
|
|
|
+ for (Field field : ptype.getDeclaredFields()) {
|
|
|
|
|
+ if (Modifier.isFinal(field.getModifiers())) {
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (Modifier.isStatic(field.getModifiers())) {
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- fieldList.add(classField);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ String fieldcomment = "";
|
|
|
|
|
+ Comment comment = field.getAnnotation(Comment.class);
|
|
|
|
|
+ if (comment != null) {
|
|
|
|
|
+ fieldcomment = comment.value();
|
|
|
|
|
+ }
|
|
|
|
|
+ ApiPlace[] apiPlaces = field.getAnnotationsByType(ApiPlace.class);
|
|
|
|
|
+ for (ApiPlace place : apiPlaces) {
|
|
|
|
|
+ if (methodUrl.equalsIgnoreCase(place.value())) {
|
|
|
|
|
+ jsDefineList.add(SPACE8 + field.getName() + ": " + fieldcomment + ",");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ jsDefineList.add("};");
|
|
|
|
|
|
|
|
- TAppMethodClass methodClass = new TAppMethodClass()
|
|
|
|
|
- .setClassName(param.type().getSimpleName())
|
|
|
|
|
- .setClassField(fieldList)
|
|
|
|
|
- .setResult(false);
|
|
|
|
|
|
|
+ jsReferenceList.add(SPACE16 + "\"" + param.name() + "\": JSON.stringify(" + param.name() + "),");
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- appMethod.addClass(methodClass);
|
|
|
|
|
- //endregion
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ //endregion
|
|
|
|
|
|
|
|
- appMethod.getDemoJquery().addAll(jsDefineList);
|
|
|
|
|
- appMethod.getDemoJquery().add("");
|
|
|
|
|
- appMethod.getDemoJquery().add("$.ajax({");
|
|
|
|
|
- appMethod.getDemoJquery().add(SPACE8 + "url: '/apis" + methodUrl + "',");
|
|
|
|
|
- appMethod.getDemoJquery().add(SPACE8 + "type: '" + jQueryMethod + "',");
|
|
|
|
|
- appMethod.getDemoJquery().add(SPACE8 + "data: {");
|
|
|
|
|
- appMethod.getDemoJquery().addAll(jsReferenceList);
|
|
|
|
|
- //appMethod.getDemoJquery().add(SPACE16 + "\"user\": JSON.stringify(data)");
|
|
|
|
|
- appMethod.getDemoJquery().add(SPACE8 + "},");
|
|
|
|
|
- appMethod.getDemoJquery().add(SPACE8 + "dataType: 'json',");
|
|
|
|
|
- appMethod.getDemoJquery().add(SPACE8 + "contentType: 'application/json',");
|
|
|
|
|
- appMethod.getDemoJquery().add(SPACE8 + "success: function (res) {");
|
|
|
|
|
- appMethod.getDemoJquery().add(SPACE16 + "if(res.httpCode == 200){");
|
|
|
|
|
- appMethod.getDemoJquery().add(SPACE24 + "console.log(res);");
|
|
|
|
|
- appMethod.getDemoJquery().add(SPACE16 + "} else {");
|
|
|
|
|
- appMethod.getDemoJquery().add(SPACE24 + "alert(res.msg);");
|
|
|
|
|
- appMethod.getDemoJquery().add(SPACE16 + "}");
|
|
|
|
|
- appMethod.getDemoJquery().add(SPACE8 + "},");
|
|
|
|
|
- appMethod.getDemoJquery().add(SPACE8 + "error: function (res) {");
|
|
|
|
|
- appMethod.getDemoJquery().add(SPACE16 + "alert(res);");
|
|
|
|
|
- appMethod.getDemoJquery().add(SPACE8 + "}");
|
|
|
|
|
- appMethod.getDemoJquery().add("});");
|
|
|
|
|
-
|
|
|
|
|
- WebApiBean[] apiBeans = method.getAnnotationsByType(WebApiBean.class);
|
|
|
|
|
- for (WebApiBean apiBean : apiBeans) {
|
|
|
|
|
- final boolean isarray = apiBean.type().isArray();
|
|
|
|
|
- final Class ptype = isarray ? apiBean.type().getComponentType() : apiBean.type();
|
|
|
|
|
-
|
|
|
|
|
- if (ptype.isPrimitive() || ptype == String.class || ptype == PageFlipper.class) {
|
|
|
|
|
- continue;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ if (ptype.isPrimitive() || ptype == String.class || ptype == PageFlipper.class) {
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- if (!appMethod.containClass(ptype.getSimpleName(), apiBean.result())) {
|
|
|
|
|
//region 对象表格
|
|
//region 对象表格
|
|
|
List<TAppClassField> fieldList = new LinkedList<>();
|
|
List<TAppClassField> fieldList = new LinkedList<>();
|
|
|
for (Field field : ptype.getDeclaredFields()) {
|
|
for (Field field : ptype.getDeclaredFields()) {
|
|
@@ -335,15 +561,85 @@ public class TAppDoc {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
TAppMethodClass methodClass = new TAppMethodClass()
|
|
TAppMethodClass methodClass = new TAppMethodClass()
|
|
|
- .setClassName(ptype.getSimpleName())
|
|
|
|
|
|
|
+ .setClassName(param.type().getSimpleName())
|
|
|
.setClassField(fieldList)
|
|
.setClassField(fieldList)
|
|
|
- .setResult(apiBean.result());
|
|
|
|
|
|
|
+ .setResult(false);
|
|
|
|
|
|
|
|
appMethod.addClass(methodClass);
|
|
appMethod.addClass(methodClass);
|
|
|
//endregion
|
|
//endregion
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ appMethod.getDemoJquery().addAll(jsDefineList);
|
|
|
|
|
+ appMethod.getDemoJquery().add("");
|
|
|
|
|
+ appMethod.getDemoJquery().add("$.ajax({");
|
|
|
|
|
+ appMethod.getDemoJquery().add(SPACE8 + "url: '/apis" + methodUrl + "',");
|
|
|
|
|
+ appMethod.getDemoJquery().add(SPACE8 + "type: '" + jQueryMethod + "',");
|
|
|
|
|
+ appMethod.getDemoJquery().add(SPACE8 + "data: {");
|
|
|
|
|
+ appMethod.getDemoJquery().addAll(jsReferenceList);
|
|
|
|
|
+ //appMethod.getDemoJquery().add(SPACE16 + "\"user\": JSON.stringify(data)");
|
|
|
|
|
+ appMethod.getDemoJquery().add(SPACE8 + "},");
|
|
|
|
|
+ appMethod.getDemoJquery().add(SPACE8 + "dataType: 'json',");
|
|
|
|
|
+ appMethod.getDemoJquery().add(SPACE8 + "contentType: 'application/json',");
|
|
|
|
|
+ appMethod.getDemoJquery().add(SPACE8 + "success: function (res) {");
|
|
|
|
|
+ appMethod.getDemoJquery().add(SPACE16 + "if(res.httpCode == 200){");
|
|
|
|
|
+ appMethod.getDemoJquery().add(SPACE24 + "console.log(res);");
|
|
|
|
|
+ appMethod.getDemoJquery().add(SPACE16 + "} else {");
|
|
|
|
|
+ appMethod.getDemoJquery().add(SPACE24 + "alert(res.msg);");
|
|
|
|
|
+ appMethod.getDemoJquery().add(SPACE16 + "}");
|
|
|
|
|
+ appMethod.getDemoJquery().add(SPACE8 + "},");
|
|
|
|
|
+ appMethod.getDemoJquery().add(SPACE8 + "error: function (res) {");
|
|
|
|
|
+ appMethod.getDemoJquery().add(SPACE16 + "alert(res);");
|
|
|
|
|
+ appMethod.getDemoJquery().add(SPACE8 + "}");
|
|
|
|
|
+ appMethod.getDemoJquery().add("});");
|
|
|
|
|
+
|
|
|
|
|
+ WebApiBean[] apiBeans = method.getAnnotationsByType(WebApiBean.class);
|
|
|
|
|
+ for (WebApiBean apiBean : apiBeans) {
|
|
|
|
|
+ final boolean isarray = apiBean.type().isArray();
|
|
|
|
|
+ final Class ptype = isarray ? apiBean.type().getComponentType() : apiBean.type();
|
|
|
|
|
+
|
|
|
|
|
+ if (ptype.isPrimitive() || ptype == String.class || ptype == PageFlipper.class) {
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
+ if (!appMethod.containClass(ptype.getSimpleName(), apiBean.result())) {
|
|
|
|
|
+ //region 对象表格
|
|
|
|
|
+ List<TAppClassField> fieldList = new LinkedList<>();
|
|
|
|
|
+ for (Field field : ptype.getDeclaredFields()) {
|
|
|
|
|
+ if (Modifier.isFinal(field.getModifiers())) {
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (Modifier.isStatic(field.getModifiers())) {
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ TAppClassField classField = new TAppClassField();
|
|
|
|
|
+ classField.setFieldName(field.getName());
|
|
|
|
|
+ classField.setFieldComment("");
|
|
|
|
|
+ Comment comment = field.getAnnotation(Comment.class);
|
|
|
|
|
+ if (comment != null) {
|
|
|
|
|
+ classField.setFieldComment(comment.value());
|
|
|
|
|
+ }
|
|
|
|
|
+ classField.setFieldCurrent(0);
|
|
|
|
|
+ ApiPlace[] apiPlaces = field.getAnnotationsByType(ApiPlace.class);
|
|
|
|
|
+ for (ApiPlace place : apiPlaces) {
|
|
|
|
|
+ classField.getFieldPlace().add(place.value());
|
|
|
|
|
+ if (methodUrl.equalsIgnoreCase(place.value())) {
|
|
|
|
|
+ classField.setFieldCurrent(1);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ fieldList.add(classField);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ TAppMethodClass methodClass = new TAppMethodClass()
|
|
|
|
|
+ .setClassName(ptype.getSimpleName())
|
|
|
|
|
+ .setClassField(fieldList)
|
|
|
|
|
+ .setResult(apiBean.result());
|
|
|
|
|
+
|
|
|
|
|
+ appMethod.addClass(methodClass);
|
|
|
|
|
+ //endregion
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|