fanxw hace 5 años
padre
commit
12824628fa
Se han modificado 1 ficheros con 76 adiciones y 13 borrados
  1. 76 13
      src/main/java/com/chinaitop/depot/LogercostInterceptor.java

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

@@ -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);