ApiService.java
2.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package com.jflyfox.api.service;
import com.jfinal.log.Log;
import com.jflyfox.api.constant.ApiConstant;
import com.jflyfox.api.form.ApiForm;
import com.jflyfox.api.form.ApiResp;
import com.jflyfox.api.util.ApiUtils;
import com.jflyfox.jfinal.base.BaseService;
import com.jflyfox.system.config.ConfigCache;
import com.jflyfox.util.ReflectionUtils;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
/**
* API实现入口
* <p>
* 2016年9月29日 上午11:44:56 flyfox 369191470@qq.com
*/
public class ApiService extends BaseService {
private final static Log log = Log.getLog(ApiService.class);
private static List<String> methodList;
static {
methodList = methodList();
}
public static List<String> methodList() {
List<String> methodList = new ArrayList<String>();
Method[] methods = IApiLogic.class.getMethods();
for (int i = 0; i < methods.length; i++) {
Class<?>[] params = methods[i].getParameterTypes();
if (params.length == 1 && (params[0] == ApiForm.class)) {
methodList.add(methods[i].getName());
}
}
return methodList;
}
public IApiLogic getApiLogic(ApiForm form) {
IApiLogic apiLogic = ApiUtils.getApiLogic(form);
return apiLogic;
}
/**
* 接口方法入口
* <p>
* 2016年10月3日 下午1:37:58 flyfox 369191470@qq.com
*
* @param form
* @return
*/
public ApiResp action(ApiForm form) {
try {
//
if (methodList.contains(form.getMethod())) {
// 登陆验证标识
boolean validFlag = ConfigCache.getValueToBoolean("API.LOGIN.VALID");
if (validFlag) {
// 先进行登陆验证。如果验证失败,直接返回错误
ApiResp validResp = getApiLogic(form).valid(form);
if (validResp.getCode() != ApiConstant.CODE_SUCCESS) {
return validResp;
}
}
// 调用接口方法,利用反射更简洁
ApiResp apiResp = (ApiResp) ReflectionUtils.invokeMethod(getApiLogic(form), form.getMethod(), //
new Class<?>[]{ApiForm.class}, new Object[]{form});
return apiResp;
}
return ApiUtils.getMethodError(form);
} catch (Exception e) {
log.error("action handler error", e);
return ApiUtils.getMethodHandlerError(form);
}
}
}