|
|
@@ -1,5 +1,6 @@
|
|
1
|
1
|
package com.chinaitop.depot;
|
|
2
|
2
|
|
|
|
3
|
+import java.io.IOException;
|
|
3
|
4
|
import java.util.Date;
|
|
4
|
5
|
import java.util.HashMap;
|
|
5
|
6
|
import java.util.Iterator;
|
|
|
@@ -12,6 +13,12 @@ import javax.servlet.http.HttpServletRequest;
|
|
12
|
13
|
import javax.servlet.http.HttpServletResponse;
|
|
13
|
14
|
|
|
14
|
15
|
import org.apache.commons.lang.ObjectUtils;
|
|
|
16
|
+import org.apache.http.HttpResponse;
|
|
|
17
|
+import org.apache.http.HttpStatus;
|
|
|
18
|
+import org.apache.http.client.HttpClient;
|
|
|
19
|
+import org.apache.http.client.methods.HttpGet;
|
|
|
20
|
+import org.apache.http.impl.client.DefaultHttpClient;
|
|
|
21
|
+import org.apache.http.util.EntityUtils;
|
|
15
|
22
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
16
|
23
|
import org.springframework.lang.Nullable;
|
|
17
|
24
|
import org.springframework.web.method.HandlerMethod;
|
|
|
@@ -53,10 +60,7 @@ public class LogercostInterceptor implements HandlerInterceptor {
|
|
53
|
60
|
if ("/userInfo/exitLogin".equals(url)) {
|
|
54
|
61
|
loginLogger(request, response, url);
|
|
55
|
62
|
}
|
|
56
|
|
-
|
|
57
|
|
- //System.out.println(butn_list);
|
|
58
|
|
-
|
|
59
|
|
- //System.out.println("Interception cost="+(System.currentTimeMillis()-start));
|
|
|
63
|
+
|
|
60
|
64
|
return true;//返回true,postHandler和afterCompletion方法才能执行,否则false为拒绝执行,起到拦截器控制作用
|
|
61
|
65
|
}
|
|
62
|
66
|
|
|
|
@@ -100,6 +104,7 @@ public class LogercostInterceptor implements HandlerInterceptor {
|
|
100
|
104
|
user_map.put("realName", userinfo == null ? "" : userinfo.get("realName")+"");
|
|
101
|
105
|
user_map.put("orgId", userinfo == null ? "" : userinfo.get("orgId")+"");
|
|
102
|
106
|
user_map.put("roleName", userinfo == null ? "" : userinfo.get("roleNames")+"");
|
|
|
107
|
+ user_map.put("areaCode", orginfo == null ? "":ObjectUtils.toString(orginfo.get("areaCode")+"",""));
|
|
103
|
108
|
user_map.put("areaName", orginfo == null ? "":ObjectUtils.toString(orginfo.get("areaName")+"",""));
|
|
104
|
109
|
user_map.put("orgName", orginfo == null ? "":ObjectUtils.toString(orginfo.get("orgName")+"",""));
|
|
105
|
110
|
return user_map;
|
|
|
@@ -121,11 +126,20 @@ public class LogercostInterceptor implements HandlerInterceptor {
|
|
121
|
126
|
log.setSystemIdentify(system_index);
|
|
122
|
127
|
log.setUserZh(ObjectUtils.toString(user_map.get("username"),""));//账号
|
|
123
|
128
|
log.setUserName(ObjectUtils.toString(user_map.get("realName"),""));//名称
|
|
124
|
|
- log.setDeviceIp(getClientIpAddress(request));
|
|
|
129
|
+ String device_ip = getClientIpAddress(request);
|
|
|
130
|
+ log.setDeviceIp(device_ip);
|
|
125
|
131
|
log.setDlTime(new Date());
|
|
126
|
132
|
log.setUserRole(ObjectUtils.toString(user_map.get("roleName"),""));//角色
|
|
127
|
133
|
log.setOrgId(Integer.parseInt(user_map.get("orgId")));//单位
|
|
128
|
|
- log.setUserAddress(user_map.get("areaName"));//行政区划
|
|
|
134
|
+ String enumid = ObjectUtils.toString(user_map.get("areaCode"), "0");
|
|
|
135
|
+ if (!"0".equals(enumid)) {
|
|
|
136
|
+ String httpurl = "http://"+device_ip+":9022/Enum/findByEnum?id="+Integer.parseInt(enumid);
|
|
|
137
|
+ String strResult = doGet(httpurl);
|
|
|
138
|
+ if (!"".equals(strResult)) {
|
|
|
139
|
+ JSONObject enum_obj = JSONObject.parseObject(strResult);
|
|
|
140
|
+ log.setUserAddress(ObjectUtils.toString(enum_obj.get("gbcode"), ""));//行政区划
|
|
|
141
|
+ }
|
|
|
142
|
+ }
|
|
129
|
143
|
log.setId(UUID.randomUUID().toString().replace("-", ""));
|
|
130
|
144
|
log.setUserId(Integer.parseInt(user_map.get("userId")));
|
|
131
|
145
|
log.setOperationTime(new Date());//操作时间
|
|
|
@@ -163,6 +177,32 @@ public class LogercostInterceptor implements HandlerInterceptor {
|
|
163
|
177
|
}
|
|
164
|
178
|
|
|
165
|
179
|
/**
|
|
|
180
|
+ * get请求
|
|
|
181
|
+ * @return
|
|
|
182
|
+ */
|
|
|
183
|
+ public static String doGet(String url) {
|
|
|
184
|
+ try {
|
|
|
185
|
+ HttpClient client = new DefaultHttpClient();
|
|
|
186
|
+ //发送get请求
|
|
|
187
|
+ HttpGet request = new HttpGet(url);
|
|
|
188
|
+ HttpResponse response = client.execute(request);
|
|
|
189
|
+
|
|
|
190
|
+ /**请求发送成功,并得到响应**/
|
|
|
191
|
+ if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
|
|
|
192
|
+ /**读取服务器返回过来的json字符串数据**/
|
|
|
193
|
+ String strResult = EntityUtils.toString(response.getEntity());
|
|
|
194
|
+
|
|
|
195
|
+ return strResult;
|
|
|
196
|
+ }
|
|
|
197
|
+ }
|
|
|
198
|
+ catch (IOException e) {
|
|
|
199
|
+ e.printStackTrace();
|
|
|
200
|
+ }
|
|
|
201
|
+
|
|
|
202
|
+ return null;
|
|
|
203
|
+ }
|
|
|
204
|
+
|
|
|
205
|
+ /**
|
|
166
|
206
|
* 操作日志实现思路:
|
|
167
|
207
|
* 1、URL要是可以在菜单里面找到对应菜单,那么当前这个操作属于功能操作日志
|
|
168
|
208
|
* 2、如果没在菜单里面找到对应菜单,却在按钮中找到了,那么就是功能访问日志
|
|
|
@@ -172,7 +212,8 @@ public class LogercostInterceptor implements HandlerInterceptor {
|
|
172
|
212
|
* @param response
|
|
173
|
213
|
* @param url
|
|
174
|
214
|
*/
|
|
175
|
|
- private void operationLogger(HttpServletRequest request, HttpServletResponse response, String url, Object handler) {
|
|
|
215
|
+ @SuppressWarnings("all")
|
|
|
216
|
+ private void operationLogger(HttpServletRequest request, HttpServletResponse response, String url, Object handler) {
|
|
176
|
217
|
//获取用户信息和单位信息
|
|
177
|
218
|
String userJson = ObjectUtils.toString(request.getSession().getAttribute("userInfo"),"");
|
|
178
|
219
|
String orgInfoJson = ObjectUtils.toString(request.getSession().getAttribute("orgInfo"),"");
|
|
|
@@ -192,17 +233,28 @@ public class LogercostInterceptor implements HandlerInterceptor {
|
|
192
|
233
|
String func_url = ObjectUtils.toString(object.get("funcUrl"));
|
|
193
|
234
|
if (url.equals(func_url)) {
|
|
194
|
235
|
log.setId(UUID.randomUUID().toString().replace("-", ""));
|
|
195
|
|
- log.setType("3");//功能操作日志
|
|
|
236
|
+ log.setType("3");//功能访问日志
|
|
196
|
237
|
log.setSystemIdentify(system_index);//标识
|
|
197
|
238
|
log.setUserId(Integer.parseInt(user_map.get("userId")));//用户ID
|
|
198
|
239
|
log.setUserZh(ObjectUtils.toString(user_map.get("username"),""));//账号
|
|
199
|
240
|
log.setUserName(ObjectUtils.toString(user_map.get("realName"),""));//名称
|
|
200
|
|
- log.setDeviceIp(getClientIpAddress(request));//操作IP
|
|
|
241
|
+ String device_ip = getClientIpAddress(request);
|
|
|
242
|
+ log.setDeviceIp(device_ip);//操作IP
|
|
|
243
|
+ log.setFuncId(Integer.parseInt(object.get("funcId").toString()));//功能ID
|
|
201
|
244
|
log.setFuncName(ObjectUtils.toString(object.get("funcName")));//功能名称
|
|
202
|
245
|
log.setOperationTime(new Date());//操作时间
|
|
203
|
246
|
log.setUserRole(ObjectUtils.toString(user_map.get("roleName"),""));//角色
|
|
204
|
247
|
log.setOrgId(Integer.parseInt(user_map.get("orgId")));//单位
|
|
205
|
|
- log.setUserAddress(user_map.get("areaName"));//行政区划
|
|
|
248
|
+
|
|
|
249
|
+ String enumid = ObjectUtils.toString(user_map.get("areaCode"), "0");
|
|
|
250
|
+ if (!"0".equals(enumid)) {
|
|
|
251
|
+ String httpurl = "http://"+device_ip+":9022/Enum/findByEnum?id="+Integer.parseInt(enumid);
|
|
|
252
|
+ String strResult = doGet(httpurl);
|
|
|
253
|
+ if (!"".equals(strResult)) {
|
|
|
254
|
+ JSONObject enum_obj = JSONObject.parseObject(strResult);
|
|
|
255
|
+ log.setUserAddress(ObjectUtils.toString(enum_obj.get("gbcode"), ""));//行政区划
|
|
|
256
|
+ }
|
|
|
257
|
+ }
|
|
206
|
258
|
|
|
207
|
259
|
//添加保存日志
|
|
208
|
260
|
systemLogMapper.insert(log);
|
|
|
@@ -229,12 +281,13 @@ public class LogercostInterceptor implements HandlerInterceptor {
|
|
229
|
281
|
String but_url = ObjectUtils.toString(but_object.get("btnUrl"), "");
|
|
230
|
282
|
if (url.equals(but_url)) {
|
|
231
|
283
|
log.setId(UUID.randomUUID().toString().replace("-", ""));
|
|
232
|
|
- log.setType("2");//功能访问日志
|
|
|
284
|
+ log.setType("2");//功能操作日志
|
|
233
|
285
|
log.setSystemIdentify(system_index);//标识
|
|
234
|
286
|
log.setUserId(Integer.parseInt(user_map.get("userId")));//用户ID
|
|
235
|
287
|
log.setUserZh(ObjectUtils.toString(user_map.get("username"),""));//账号
|
|
236
|
288
|
log.setUserName(ObjectUtils.toString(user_map.get("realName"),""));//名称
|
|
237
|
|
- log.setDeviceIp(getClientIpAddress(request));//操作IP
|
|
|
289
|
+ String device_ip = getClientIpAddress(request);
|
|
|
290
|
+ log.setDeviceIp(device_ip);//操作IP
|
|
238
|
291
|
String f_name = ObjectUtils.toString(but_object.get("funcName"), "");
|
|
239
|
292
|
String b_name = ObjectUtils.toString(but_object.get("btnName"), "");
|
|
240
|
293
|
String ramark = ObjectUtils.toString(but_object.get("remark"), "");
|
|
|
@@ -244,9 +297,11 @@ public class LogercostInterceptor implements HandlerInterceptor {
|
|
244
|
297
|
} else {
|
|
245
|
298
|
sbf.append(f_name).append("功能").append(b_name).append("操作");
|
|
246
|
299
|
}
|
|
|
300
|
+ log.setFuncId(Integer.parseInt(but_object.get("funcId").toString()));//功能ID
|
|
247
|
301
|
log.setFuncName(ObjectUtils.toString(sbf.toString(), ""));//菜单名称
|
|
248
|
302
|
HandlerMethod h = (HandlerMethod) handler;
|
|
249
|
303
|
log.setMethodName(h.getMethod().getName());//方法名
|
|
|
304
|
+ log.setBtnId(Integer.parseInt(but_object.get("btnId").toString()));//按钮ID
|
|
250
|
305
|
log.setUserRole(ObjectUtils.toString(user_map.get("roleName"),""));//角色
|
|
251
|
306
|
log.setOperationTime(new Date());//操作时间
|
|
252
|
307
|
StringBuilder param = new StringBuilder();
|
|
|
@@ -265,7 +320,15 @@ public class LogercostInterceptor implements HandlerInterceptor {
|
|
265
|
320
|
log.setRtnParam("请求失败");//返回参数
|
|
266
|
321
|
}
|
|
267
|
322
|
log.setOrgId(Integer.parseInt(user_map.get("orgId")));//所属机构
|
|
268
|
|
- log.setUserAddress(user_map.get("areaName"));//行政区划
|
|
|
323
|
+ String enumid = ObjectUtils.toString(user_map.get("areaCode"), "0");
|
|
|
324
|
+ if (!"0".equals(enumid)) {
|
|
|
325
|
+ String httpurl = "http://"+device_ip+":9022/Enum/findByEnum?id="+Integer.parseInt(enumid);
|
|
|
326
|
+ String strResult = doGet(httpurl);
|
|
|
327
|
+ if (!"".equals(strResult)) {
|
|
|
328
|
+ JSONObject enum_obj = JSONObject.parseObject(strResult);
|
|
|
329
|
+ log.setUserAddress(ObjectUtils.toString(enum_obj.get("gbcode"), ""));//行政区划
|
|
|
330
|
+ }
|
|
|
331
|
+ }
|
|
269
|
332
|
|
|
270
|
333
|
//添加保存日志
|
|
271
|
334
|
systemLogMapper.insert(log);
|