fanxw 5 年 前
コミット
7f2d255ff4
共有1 個のファイルを変更した76 個の追加14 個の削除を含む
  1. 76 14
      src/main/java/com/chinaitop/depot/LogercostInterceptor.java

+ 76 - 14
src/main/java/com/chinaitop/depot/LogercostInterceptor.java

@@ -1,5 +1,6 @@
1
 package com.chinaitop.depot;
1
 package com.chinaitop.depot;
2
 
2
 
3
+import java.io.IOException;
3
 import java.util.Date;
4
 import java.util.Date;
4
 import java.util.HashMap;
5
 import java.util.HashMap;
5
 import java.util.Iterator;
6
 import java.util.Iterator;
@@ -12,6 +13,12 @@ import javax.servlet.http.HttpServletRequest;
12
 import javax.servlet.http.HttpServletResponse;
13
 import javax.servlet.http.HttpServletResponse;
13
 
14
 
14
 import org.apache.commons.lang.ObjectUtils;
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
 import org.springframework.beans.factory.annotation.Autowired;
22
 import org.springframework.beans.factory.annotation.Autowired;
16
 import org.springframework.lang.Nullable;
23
 import org.springframework.lang.Nullable;
17
 import org.springframework.web.method.HandlerMethod;
24
 import org.springframework.web.method.HandlerMethod;
@@ -25,7 +32,6 @@ import com.chinaitop.depot.grainAnalysis.model.SystemLog;
25
 import com.chinaitop.depot.grainAnalysis.model.SystemLogExample;
32
 import com.chinaitop.depot.grainAnalysis.model.SystemLogExample;
26
 import com.chinaitop.depot.utils.RedisUtil;
33
 import com.chinaitop.depot.utils.RedisUtil;
27
 
34
 
28
-
29
 /**
35
 /**
30
  * 功能日志拦截器
36
  * 功能日志拦截器
31
  * 
37
  * 
@@ -54,10 +60,7 @@ public class LogercostInterceptor implements HandlerInterceptor {
54
     	if ("/userInfo/exitLogin".equals(url)) {
60
     	if ("/userInfo/exitLogin".equals(url)) {
55
     		loginLogger(request, response, url);
61
     		loginLogger(request, response, url);
56
     	}
62
     	}
57
-    	
58
-        //System.out.println(butn_list);
59
-        
60
-        //System.out.println("Interception cost="+(System.currentTimeMillis()-start));
63
+
61
         return true;//返回true,postHandler和afterCompletion方法才能执行,否则false为拒绝执行,起到拦截器控制作用
64
         return true;//返回true,postHandler和afterCompletion方法才能执行,否则false为拒绝执行,起到拦截器控制作用
62
     }
65
     }
63
 
66
 
@@ -101,6 +104,7 @@ public class LogercostInterceptor implements HandlerInterceptor {
101
     	user_map.put("realName", userinfo == null ? "" : userinfo.get("realName")+"");
104
     	user_map.put("realName", userinfo == null ? "" : userinfo.get("realName")+"");
102
     	user_map.put("orgId", userinfo == null ? "" : userinfo.get("orgId")+"");
105
     	user_map.put("orgId", userinfo == null ? "" : userinfo.get("orgId")+"");
103
     	user_map.put("roleName", userinfo == null ? "" : userinfo.get("roleNames")+"");
106
     	user_map.put("roleName", userinfo == null ? "" : userinfo.get("roleNames")+"");
107
+    	user_map.put("areaCode", orginfo == null ? "":ObjectUtils.toString(orginfo.get("areaCode")+"",""));
104
     	user_map.put("areaName", orginfo == null ? "":ObjectUtils.toString(orginfo.get("areaName")+"",""));
108
     	user_map.put("areaName", orginfo == null ? "":ObjectUtils.toString(orginfo.get("areaName")+"",""));
105
     	user_map.put("orgName", orginfo == null ? "":ObjectUtils.toString(orginfo.get("orgName")+"",""));
109
     	user_map.put("orgName", orginfo == null ? "":ObjectUtils.toString(orginfo.get("orgName")+"",""));
106
 		return user_map;
110
 		return user_map;
@@ -122,11 +126,20 @@ public class LogercostInterceptor implements HandlerInterceptor {
122
 			log.setSystemIdentify(system_index);
126
 			log.setSystemIdentify(system_index);
123
 			log.setUserZh(ObjectUtils.toString(user_map.get("username"),""));//账号
127
 			log.setUserZh(ObjectUtils.toString(user_map.get("username"),""));//账号
124
 			log.setUserName(ObjectUtils.toString(user_map.get("realName"),""));//名称
128
 			log.setUserName(ObjectUtils.toString(user_map.get("realName"),""));//名称
125
-			log.setDeviceIp(getClientIpAddress(request));
129
+			String device_ip = getClientIpAddress(request);
130
+			log.setDeviceIp(device_ip);
126
 			log.setDlTime(new Date());
131
 			log.setDlTime(new Date());
127
 			log.setUserRole(ObjectUtils.toString(user_map.get("roleName"),""));//角色
132
 			log.setUserRole(ObjectUtils.toString(user_map.get("roleName"),""));//角色
128
 			log.setOrgId(Integer.parseInt(user_map.get("orgId")));//单位
133
 			log.setOrgId(Integer.parseInt(user_map.get("orgId")));//单位
129
-			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
+			}
130
 			log.setId(UUID.randomUUID().toString().replace("-", ""));
143
 			log.setId(UUID.randomUUID().toString().replace("-", ""));
131
 			log.setUserId(Integer.parseInt(user_map.get("userId")));
144
 			log.setUserId(Integer.parseInt(user_map.get("userId")));
132
 			log.setOperationTime(new Date());//操作时间
145
 			log.setOperationTime(new Date());//操作时间
@@ -164,6 +177,32 @@ public class LogercostInterceptor implements HandlerInterceptor {
164
     }
177
     }
165
     
178
     
166
     /**
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
+    /**
167
      * 操作日志实现思路:
206
      * 操作日志实现思路:
168
      * 1、URL要是可以在菜单里面找到对应菜单,那么当前这个操作属于功能操作日志
207
      * 1、URL要是可以在菜单里面找到对应菜单,那么当前这个操作属于功能操作日志
169
      * 2、如果没在菜单里面找到对应菜单,却在按钮中找到了,那么就是功能访问日志
208
      * 2、如果没在菜单里面找到对应菜单,却在按钮中找到了,那么就是功能访问日志
@@ -173,7 +212,8 @@ public class LogercostInterceptor implements HandlerInterceptor {
173
      * @param response
212
      * @param response
174
      * @param url
213
      * @param url
175
      */
214
      */
176
-    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) {
177
     	//获取用户信息和单位信息
217
     	//获取用户信息和单位信息
178
         String userJson = ObjectUtils.toString(request.getSession().getAttribute("userInfo"),"");
218
         String userJson = ObjectUtils.toString(request.getSession().getAttribute("userInfo"),"");
179
         String orgInfoJson = ObjectUtils.toString(request.getSession().getAttribute("orgInfo"),"");
219
         String orgInfoJson = ObjectUtils.toString(request.getSession().getAttribute("orgInfo"),"");
@@ -193,17 +233,28 @@ public class LogercostInterceptor implements HandlerInterceptor {
193
     			String func_url = ObjectUtils.toString(object.get("funcUrl"));
233
     			String func_url = ObjectUtils.toString(object.get("funcUrl"));
194
     			if (url.equals(func_url)) {
234
     			if (url.equals(func_url)) {
195
     				log.setId(UUID.randomUUID().toString().replace("-", ""));
235
     				log.setId(UUID.randomUUID().toString().replace("-", ""));
196
-    				log.setType("3");//功能操作日志
236
+    				log.setType("3");//功能访问日志
197
     				log.setSystemIdentify(system_index);//标识
237
     				log.setSystemIdentify(system_index);//标识
198
     				log.setUserId(Integer.parseInt(user_map.get("userId")));//用户ID
238
     				log.setUserId(Integer.parseInt(user_map.get("userId")));//用户ID
199
     				log.setUserZh(ObjectUtils.toString(user_map.get("username"),""));//账号
239
     				log.setUserZh(ObjectUtils.toString(user_map.get("username"),""));//账号
200
     				log.setUserName(ObjectUtils.toString(user_map.get("realName"),""));//名称
240
     				log.setUserName(ObjectUtils.toString(user_map.get("realName"),""));//名称
201
-    				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
202
     				log.setFuncName(ObjectUtils.toString(object.get("funcName")));//功能名称
244
     				log.setFuncName(ObjectUtils.toString(object.get("funcName")));//功能名称
203
     				log.setOperationTime(new Date());//操作时间
245
     				log.setOperationTime(new Date());//操作时间
204
     				log.setUserRole(ObjectUtils.toString(user_map.get("roleName"),""));//角色
246
     				log.setUserRole(ObjectUtils.toString(user_map.get("roleName"),""));//角色
205
     				log.setOrgId(Integer.parseInt(user_map.get("orgId")));//单位
247
     				log.setOrgId(Integer.parseInt(user_map.get("orgId")));//单位
206
-    				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
+    				}
207
 
258
 
208
     				//添加保存日志
259
     				//添加保存日志
209
     				systemLogMapper.insert(log);
260
     				systemLogMapper.insert(log);
@@ -230,12 +281,13 @@ public class LogercostInterceptor implements HandlerInterceptor {
230
         			String but_url = ObjectUtils.toString(but_object.get("btnUrl"), "");
281
         			String but_url = ObjectUtils.toString(but_object.get("btnUrl"), "");
231
         			if (url.equals(but_url)) {
282
         			if (url.equals(but_url)) {
232
         				log.setId(UUID.randomUUID().toString().replace("-", ""));
283
         				log.setId(UUID.randomUUID().toString().replace("-", ""));
233
-        				log.setType("2");//功能访问日志
284
+        				log.setType("2");//功能操作日志
234
         				log.setSystemIdentify(system_index);//标识
285
         				log.setSystemIdentify(system_index);//标识
235
         				log.setUserId(Integer.parseInt(user_map.get("userId")));//用户ID
286
         				log.setUserId(Integer.parseInt(user_map.get("userId")));//用户ID
236
         				log.setUserZh(ObjectUtils.toString(user_map.get("username"),""));//账号
287
         				log.setUserZh(ObjectUtils.toString(user_map.get("username"),""));//账号
237
         				log.setUserName(ObjectUtils.toString(user_map.get("realName"),""));//名称
288
         				log.setUserName(ObjectUtils.toString(user_map.get("realName"),""));//名称
238
-        				log.setDeviceIp(getClientIpAddress(request));//操作IP
289
+        				String device_ip = getClientIpAddress(request);
290
+        				log.setDeviceIp(device_ip);//操作IP
239
         				String f_name = ObjectUtils.toString(but_object.get("funcName"), "");
291
         				String f_name = ObjectUtils.toString(but_object.get("funcName"), "");
240
         				String b_name = ObjectUtils.toString(but_object.get("btnName"), "");
292
         				String b_name = ObjectUtils.toString(but_object.get("btnName"), "");
241
         				String ramark = ObjectUtils.toString(but_object.get("remark"), "");
293
         				String ramark = ObjectUtils.toString(but_object.get("remark"), "");
@@ -245,9 +297,11 @@ public class LogercostInterceptor implements HandlerInterceptor {
245
         				} else {
297
         				} else {
246
         					sbf.append(f_name).append("功能").append(b_name).append("操作");
298
         					sbf.append(f_name).append("功能").append(b_name).append("操作");
247
         				}
299
         				}
300
+        				log.setFuncId(Integer.parseInt(but_object.get("funcId").toString()));//功能ID
248
         				log.setFuncName(ObjectUtils.toString(sbf.toString(), ""));//菜单名称
301
         				log.setFuncName(ObjectUtils.toString(sbf.toString(), ""));//菜单名称
249
         				HandlerMethod h = (HandlerMethod) handler;  
302
         				HandlerMethod h = (HandlerMethod) handler;  
250
         				log.setMethodName(h.getMethod().getName());//方法名
303
         				log.setMethodName(h.getMethod().getName());//方法名
304
+        				log.setBtnId(Integer.parseInt(but_object.get("btnId").toString()));//按钮ID
251
         				log.setUserRole(ObjectUtils.toString(user_map.get("roleName"),""));//角色
305
         				log.setUserRole(ObjectUtils.toString(user_map.get("roleName"),""));//角色
252
         				log.setOperationTime(new Date());//操作时间
306
         				log.setOperationTime(new Date());//操作时间
253
         				StringBuilder param = new StringBuilder();
307
         				StringBuilder param = new StringBuilder();
@@ -266,7 +320,15 @@ public class LogercostInterceptor implements HandlerInterceptor {
266
         					log.setRtnParam("请求失败");//返回参数
320
         					log.setRtnParam("请求失败");//返回参数
267
         				}
321
         				}
268
         				log.setOrgId(Integer.parseInt(user_map.get("orgId")));//所属机构
322
         				log.setOrgId(Integer.parseInt(user_map.get("orgId")));//所属机构
269
-        				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
+        				}
270
 
332
 
271
         				//添加保存日志
333
         				//添加保存日志
272
         				systemLogMapper.insert(log);
334
         				systemLogMapper.insert(log);