Przeglądaj źródła

日志功能更新

fanxw 5 lat temu
rodzic
commit
4ca1bd95af
1 zmienionych plików z 76 dodań i 14 usunięć
  1. 76 14
      src/main/java/com/chinaitop/LogercostInterceptor.java

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

@@ -1,5 +1,6 @@
1 1
 package com.chinaitop;
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;
@@ -25,7 +32,6 @@ import com.chinaitop.depot.model.SystemLog;
25 32
 import com.chinaitop.depot.model.SystemLogExample;
26 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 60
     	if ("/userInfo/exitLogin".equals(url)) {
55 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 64
         return true;//返回true,postHandler和afterCompletion方法才能执行,否则false为拒绝执行,起到拦截器控制作用
62 65
     }
63 66
 
@@ -101,6 +104,7 @@ public class LogercostInterceptor implements HandlerInterceptor {
101 104
     	user_map.put("realName", userinfo == null ? "" : userinfo.get("realName")+"");
102 105
     	user_map.put("orgId", userinfo == null ? "" : userinfo.get("orgId")+"");
103 106
     	user_map.put("roleName", userinfo == null ? "" : userinfo.get("roleNames")+"");
107
+    	user_map.put("areaCode", orginfo == null ? "":ObjectUtils.toString(orginfo.get("areaCode")+"",""));
104 108
     	user_map.put("areaName", orginfo == null ? "":ObjectUtils.toString(orginfo.get("areaName")+"",""));
105 109
     	user_map.put("orgName", orginfo == null ? "":ObjectUtils.toString(orginfo.get("orgName")+"",""));
106 110
 		return user_map;
@@ -122,11 +126,20 @@ public class LogercostInterceptor implements HandlerInterceptor {
122 126
 			log.setSystemIdentify(system_index);
123 127
 			log.setUserZh(ObjectUtils.toString(user_map.get("username"),""));//账号
124 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 131
 			log.setDlTime(new Date());
127 132
 			log.setUserRole(ObjectUtils.toString(user_map.get("roleName"),""));//角色
128 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 143
 			log.setId(UUID.randomUUID().toString().replace("-", ""));
131 144
 			log.setUserId(Integer.parseInt(user_map.get("userId")));
132 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 207
      * 1、URL要是可以在菜单里面找到对应菜单,那么当前这个操作属于功能操作日志
169 208
      * 2、如果没在菜单里面找到对应菜单,却在按钮中找到了,那么就是功能访问日志
@@ -173,7 +212,8 @@ public class LogercostInterceptor implements HandlerInterceptor {
173 212
      * @param response
174 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 218
         String userJson = ObjectUtils.toString(request.getSession().getAttribute("userInfo"),"");
179 219
         String orgInfoJson = ObjectUtils.toString(request.getSession().getAttribute("orgInfo"),"");
@@ -193,17 +233,28 @@ public class LogercostInterceptor implements HandlerInterceptor {
193 233
     			String func_url = ObjectUtils.toString(object.get("funcUrl"));
194 234
     			if (url.equals(func_url)) {
195 235
     				log.setId(UUID.randomUUID().toString().replace("-", ""));
196
-    				log.setType("3");//功能操作日志
236
+    				log.setType("3");//功能访问日志
197 237
     				log.setSystemIdentify(system_index);//标识
198 238
     				log.setUserId(Integer.parseInt(user_map.get("userId")));//用户ID
199 239
     				log.setUserZh(ObjectUtils.toString(user_map.get("username"),""));//账号
200 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 244
     				log.setFuncName(ObjectUtils.toString(object.get("funcName")));//功能名称
203 245
     				log.setOperationTime(new Date());//操作时间
204 246
     				log.setUserRole(ObjectUtils.toString(user_map.get("roleName"),""));//角色
205 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 260
     				systemLogMapper.insert(log);
@@ -230,12 +281,13 @@ public class LogercostInterceptor implements HandlerInterceptor {
230 281
         			String but_url = ObjectUtils.toString(but_object.get("btnUrl"), "");
231 282
         			if (url.equals(but_url)) {
232 283
         				log.setId(UUID.randomUUID().toString().replace("-", ""));
233
-        				log.setType("2");//功能访问日志
284
+        				log.setType("2");//功能操作日志
234 285
         				log.setSystemIdentify(system_index);//标识
235 286
         				log.setUserId(Integer.parseInt(user_map.get("userId")));//用户ID
236 287
         				log.setUserZh(ObjectUtils.toString(user_map.get("username"),""));//账号
237 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 291
         				String f_name = ObjectUtils.toString(but_object.get("funcName"), "");
240 292
         				String b_name = ObjectUtils.toString(but_object.get("btnName"), "");
241 293
         				String ramark = ObjectUtils.toString(but_object.get("remark"), "");
@@ -245,9 +297,11 @@ public class LogercostInterceptor implements HandlerInterceptor {
245 297
         				} else {
246 298
         					sbf.append(f_name).append("功能").append(b_name).append("操作");
247 299
         				}
300
+        				log.setFuncId(Integer.parseInt(but_object.get("funcId").toString()));//功能ID
248 301
         				log.setFuncName(ObjectUtils.toString(sbf.toString(), ""));//菜单名称
249 302
         				HandlerMethod h = (HandlerMethod) handler;  
250 303
         				log.setMethodName(h.getMethod().getName());//方法名
304
+        				log.setBtnId(Integer.parseInt(but_object.get("btnId").toString()));//按钮ID
251 305
         				log.setUserRole(ObjectUtils.toString(user_map.get("roleName"),""));//角色
252 306
         				log.setOperationTime(new Date());//操作时间
253 307
         				StringBuilder param = new StringBuilder();
@@ -266,7 +320,15 @@ public class LogercostInterceptor implements HandlerInterceptor {
266 320
         					log.setRtnParam("请求失败");//返回参数
267 321
         				}
268 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 334
         				systemLogMapper.insert(log);