fanxw пре 5 година
родитељ
комит
74a3dce372

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

+ 106 - 0
src/main/java/com/chinaitop/depot/system/controller/SystemLogController.java

@@ -1,15 +1,28 @@
1 1
 package com.chinaitop.depot.system.controller;
2 2
 
3
+import java.io.IOException;
4
+import java.util.Date;
3 5
 import java.util.HashMap;
4 6
 import java.util.List;
7
+import java.util.Map;
8
+import java.util.UUID;
5 9
 
6 10
 import javax.annotation.Resource;
7 11
 import javax.servlet.http.HttpServletRequest;
8 12
 
13
+import org.apache.commons.lang.ObjectUtils;
14
+import org.apache.http.HttpResponse;
15
+import org.apache.http.HttpStatus;
16
+import org.apache.http.client.HttpClient;
17
+import org.apache.http.client.methods.HttpGet;
18
+import org.apache.http.impl.client.DefaultHttpClient;
19
+import org.apache.http.util.EntityUtils;
9 20
 import org.springframework.web.bind.annotation.RequestMapping;
10 21
 import org.springframework.web.bind.annotation.RequestMethod;
11 22
 import org.springframework.web.bind.annotation.RestController;
12 23
 
24
+import com.alibaba.fastjson.JSONObject;
25
+import com.chinaitop.depot.system.model.SystemLog;
13 26
 import com.chinaitop.depot.system.model.UserOperationlog;
14 27
 import com.chinaitop.depot.system.service.UserOperationlogService;
15 28
 import com.github.pagehelper.PageHelper;
@@ -60,4 +73,97 @@ public class SystemLogController {
60 73
 		return pageInfo;
61 74
 	}
62 75
 
76
+	@RequestMapping(value="/save", method = RequestMethod.POST)
77
+	@ApiOperation(value="插入日志信息", notes = "插入日志信息")
78
+	@ApiImplicitParams({})
79
+	public Map<String, Object> save(HttpServletRequest request) {
80
+
81
+		Map<String, Object> map = new HashMap<String, Object>();
82
+		//获取用户信息和单位信息
83
+        String userJson = ObjectUtils.toString(request.getSession().getAttribute("userInfo"),"");
84
+        String orgInfoJson = ObjectUtils.toString(request.getSession().getAttribute("orgInfo"),"");
85
+
86
+        if (!"".equals(userJson) && !"".equals(orgInfoJson)) {
87
+        	JSONObject userinfo = JSONObject.parseObject(userJson);
88
+        	JSONObject orginfo = JSONObject.parseObject(orgInfoJson);
89
+
90
+        	SystemLog log = new SystemLog();
91
+        	log.setId(UUID.randomUUID().toString().replace("-", ""));
92
+        	log.setType("3");//功能访问日志
93
+        	log.setSystemIdentify("库级系统");//标识
94
+        	log.setUserId(Integer.parseInt(userinfo.get("userId").toString()));//用户ID
95
+        	log.setUserZh(ObjectUtils.toString(userinfo.get("username").toString(),""));//账号
96
+        	log.setUserName(ObjectUtils.toString(userinfo.get("realName"),""));//名称
97
+        	String device_ip = getClientIpAddress(request);
98
+        	log.setDeviceIp(device_ip);//操作IP
99
+        	log.setFuncId(0);//功能ID
100
+        	log.setFuncName("出入库");//功能名称
101
+        	log.setOperationTime(new Date());//操作时间
102
+        	log.setUserRole(ObjectUtils.toString(userinfo.get("roleNames"),""));//角色
103
+        	log.setOrgId(Integer.parseInt(userinfo.get("orgId").toString()));//单位
104
+
105
+        	String enumid = ObjectUtils.toString(orginfo.get("areaCode"), "0");
106
+        	if (!"0".equals(enumid)) {
107
+        		String httpurl = "http://"+device_ip+":9022/Enum/findByEnum?id="+Integer.parseInt(enumid);
108
+        		String strResult = doGet(httpurl);
109
+        		if (!"".equals(strResult)) {
110
+        			JSONObject enum_obj = JSONObject.parseObject(strResult);
111
+        			log.setUserAddress(ObjectUtils.toString(enum_obj.get("gbcode"), ""));//行政区划
112
+        		}
113
+        	}
114
+
115
+        	//添加保存日志
116
+        	userOperationlogService.AddSystemLog(log);
117
+        }
118
+
119
+		return map;
120
+	}
121
+
122
+	/**
123
+     * 获取客户端IP
124
+     * 
125
+     * @param request
126
+     * @return
127
+     */
128
+    private String getClientIpAddress(HttpServletRequest request) {  
129
+        String clientIp = request.getHeader("x-forwarded-for");  
130
+        if(clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) {  
131
+            clientIp = request.getHeader("Proxy-Client-IP");  
132
+        }  
133
+        if(clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) {  
134
+            clientIp = request.getHeader("WL-Proxy-Client-IP");  
135
+        }  
136
+        if(clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) {  
137
+            clientIp = request.getRemoteAddr();  
138
+        }  
139
+        return "0:0:0:0:0:0:0:1".equals(clientIp) ? "127.0.0.1" : clientIp;  
140
+    }
141
+
142
+    /**
143
+     * get请求
144
+     * @return
145
+     */
146
+    @SuppressWarnings("deprecation")
147
+	public static String doGet(String url) {
148
+        try {
149
+            HttpClient client = new DefaultHttpClient();
150
+            //发送get请求
151
+            HttpGet request = new HttpGet(url);
152
+            HttpResponse response = client.execute(request);
153
+
154
+            /**请求发送成功,并得到响应**/
155
+            if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
156
+                /**读取服务器返回过来的json字符串数据**/
157
+                String strResult = EntityUtils.toString(response.getEntity());
158
+
159
+                return strResult;
160
+            }
161
+        }
162
+        catch (IOException e) {
163
+            e.printStackTrace();
164
+        }
165
+
166
+        return null;
167
+    }
168
+
63 169
 }

+ 7 - 0
src/main/java/com/chinaitop/depot/system/service/UserOperationlogService.java

@@ -3,6 +3,7 @@ package com.chinaitop.depot.system.service;
3 3
 import java.util.HashMap;
4 4
 import java.util.List;
5 5
 
6
+import com.chinaitop.depot.system.model.SystemLog;
6 7
 import com.chinaitop.depot.system.model.UserOperationlog;
7 8
 
8 9
 public interface UserOperationlogService {
@@ -18,4 +19,10 @@ public interface UserOperationlogService {
18 19
      * @param UserOperationlog userOperationlog对象
19 20
      */
20 21
     void AddLogMsg(UserOperationlog userOperationlog);
22
+    
23
+    /**
24
+     * 插入systemlog
25
+     * @param systemLog SystemLog对象
26
+     */
27
+    void AddSystemLog(SystemLog systemLog);
21 28
 }

+ 10 - 0
src/main/java/com/chinaitop/depot/system/service/impl/UserOperationlogServiceImpl.java

@@ -1,6 +1,8 @@
1 1
 package com.chinaitop.depot.system.service.impl;
2 2
 
3
+import com.chinaitop.depot.system.mapper.SystemLogMapper;
3 4
 import com.chinaitop.depot.system.mapper.UserOperationlogMapper;
5
+import com.chinaitop.depot.system.model.SystemLog;
4 6
 import com.chinaitop.depot.system.model.UserOperationlog;
5 7
 import com.chinaitop.depot.system.service.UserOperationlogService;
6 8
 
@@ -20,6 +22,9 @@ public class UserOperationlogServiceImpl implements UserOperationlogService {
20 22
 
21 23
     @Resource
22 24
     private UserOperationlogMapper userOperationlogMapper;
25
+    
26
+    @Resource
27
+    private SystemLogMapper systemLogMapper;
23 28
 
24 29
 	@Override
25 30
 	public List<UserOperationlog> queryAll(HashMap<Object, Object> map) {
@@ -31,4 +36,9 @@ public class UserOperationlogServiceImpl implements UserOperationlogService {
31 36
 		userOperationlogMapper.insertSelective(userOperationlog);
32 37
 	}
33 38
 
39
+	@Override
40
+	public void AddSystemLog(SystemLog systemLog) {
41
+		systemLogMapper.insertSelective(systemLog);
42
+	}
43
+
34 44
 }