Browse Source

1.增加操作日志操作地点、登录日志的登录地点、在线用户登录地点。

yangzhengze 6 years ago
parent
commit
1e66da2dd7

+ 3 - 0
sql/ry_20180526.sql

@@ -372,6 +372,7 @@ create table sys_oper_log (
   dept_name 		varchar(50)     default '' 		 	 	   comment '部门名称',
   dept_name 		varchar(50)     default '' 		 	 	   comment '部门名称',
   oper_url 		    varchar(255) 	default '' 				   comment '请求URL',
   oper_url 		    varchar(255) 	default '' 				   comment '请求URL',
   oper_ip 			varchar(30) 	default '' 				   comment '主机地址',
   oper_ip 			varchar(30) 	default '' 				   comment '主机地址',
+  oper_location    varchar(255) default ''   comment '操作地点',
   oper_param 		varchar(255) 	default '' 				   comment '请求参数',
   oper_param 		varchar(255) 	default '' 				   comment '请求参数',
   status 			int(1) 		    default 0				   comment '操作状态 0正常 1异常',
   status 			int(1) 		    default 0				   comment '操作状态 0正常 1异常',
   error_msg 		varchar(2000) 	default '' 				   comment '错误消息',
   error_msg 		varchar(2000) 	default '' 				   comment '错误消息',
@@ -475,6 +476,7 @@ create table sys_logininfor (
   info_id 		int(11) 	 not null auto_increment   comment '访问ID',
   info_id 		int(11) 	 not null auto_increment   comment '访问ID',
   login_name 	varchar(50)  default '' 			   comment '登录账号',
   login_name 	varchar(50)  default '' 			   comment '登录账号',
   ipaddr 		varchar(50)  default '' 			   comment '登录IP地址',
   ipaddr 		varchar(50)  default '' 			   comment '登录IP地址',
+  login_location   varchar(255) default '' comment '登录地点',
   browser  		varchar(50)  default '' 			   comment '浏览器类型',
   browser  		varchar(50)  default '' 			   comment '浏览器类型',
   os      		varchar(50)  default '' 			   comment '操作系统',
   os      		varchar(50)  default '' 			   comment '操作系统',
   status 		int(1) 		 default 0 			 	   comment '登录状态 0成功 1失败',
   status 		int(1) 		 default 0 			 	   comment '登录状态 0成功 1失败',
@@ -493,6 +495,7 @@ create table sys_user_online (
   login_name 	    varchar(50)  default '' 		 	 	comment '登录账号',
   login_name 	    varchar(50)  default '' 		 	 	comment '登录账号',
   dept_name 		varchar(50)  default '' 		 	 	comment '部门名称',
   dept_name 		varchar(50)  default '' 		 	 	comment '部门名称',
   ipaddr 		    varchar(50)  default '' 			 	comment '登录IP地址',
   ipaddr 		    varchar(50)  default '' 			 	comment '登录IP地址',
+  login_location   varchar(255) default ''   comment '登录地点',
   browser  		    varchar(50)  default '' 			 	comment '浏览器类型',
   browser  		    varchar(50)  default '' 			 	comment '浏览器类型',
   os      		    varchar(50)  default '' 			 	comment '操作系统',
   os      		    varchar(50)  default '' 			 	comment '操作系统',
   status      	    varchar(10)  default '' 			 	comment '在线状态on_line在线off_line离线',
   status      	    varchar(10)  default '' 			 	comment '在线状态on_line在线off_line离线',

+ 2 - 1
src/main/java/com/ruoyi/common/utils/IpUtils.java

@@ -37,6 +37,7 @@ public class IpUtils
         {
         {
             ip = request.getRemoteAddr();
             ip = request.getRemoteAddr();
         }
         }
-        return ip;
+
+        return  "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : ip;
     }
     }
 }
 }

+ 2 - 0
src/main/java/com/ruoyi/common/utils/SystemLogUtils.java

@@ -33,6 +33,7 @@ public class SystemLogUtils
     {
     {
         StringBuilder s = new StringBuilder();
         StringBuilder s = new StringBuilder();
         s.append(LogUtils.getBlock(ShiroUtils.getIp()));
         s.append(LogUtils.getBlock(ShiroUtils.getIp()));
+        s.append(AddressUtils.getRealAddressByIP(ShiroUtils.getIp()));
         s.append(LogUtils.getBlock(username));
         s.append(LogUtils.getBlock(username));
         s.append(LogUtils.getBlock(status));
         s.append(LogUtils.getBlock(status));
         s.append(LogUtils.getBlock(msg));
         s.append(LogUtils.getBlock(msg));
@@ -61,6 +62,7 @@ public class SystemLogUtils
         logininfor.setLoginName(username);
         logininfor.setLoginName(username);
         logininfor.setStatus(status);
         logininfor.setStatus(status);
         logininfor.setIpaddr(ShiroUtils.getIp());
         logininfor.setIpaddr(ShiroUtils.getIp());
+        logininfor.setLoginLocation(AddressUtils.getRealAddressByIP(ShiroUtils.getIp()));
         logininfor.setBrowser(browser);
         logininfor.setBrowser(browser);
         logininfor.setOs(os);
         logininfor.setOs(os);
         logininfor.setMsg(message);
         logininfor.setMsg(message);

+ 5 - 1
src/main/java/com/ruoyi/framework/aspectj/LogAspect.java

@@ -3,6 +3,7 @@ package com.ruoyi.framework.aspectj;
 import java.lang.reflect.Method;
 import java.lang.reflect.Method;
 import java.util.Map;
 import java.util.Map;
 
 
+import com.ruoyi.common.utils.AddressUtils;
 import org.aspectj.lang.JoinPoint;
 import org.aspectj.lang.JoinPoint;
 import org.aspectj.lang.Signature;
 import org.aspectj.lang.Signature;
 import org.aspectj.lang.annotation.AfterReturning;
 import org.aspectj.lang.annotation.AfterReturning;
@@ -72,7 +73,7 @@ public class LogAspect
     }
     }
 
 
     @Async
     @Async
-    private void handleLog(final JoinPoint joinPoint, final Exception e)
+    protected void handleLog(final JoinPoint joinPoint, final Exception e)
     {
     {
         try
         try
         {
         {
@@ -92,6 +93,9 @@ public class LogAspect
             // 请求的地址
             // 请求的地址
             String ip = ShiroUtils.getIp();
             String ip = ShiroUtils.getIp();
             operLog.setOperIp(ip);
             operLog.setOperIp(ip);
+            //操作地点
+            operLog.setOperLocation(AddressUtils.getRealAddressByIP(ip));
+
             operLog.setOperUrl(ServletUtils.getRequest().getRequestURI());
             operLog.setOperUrl(ServletUtils.getRequest().getRequestURI());
             if (currentUser != null)
             if (currentUser != null)
             {
             {

+ 13 - 2
src/main/java/com/ruoyi/project/monitor/logininfor/domain/Logininfor.java

@@ -1,8 +1,9 @@
 package com.ruoyi.project.monitor.logininfor.domain;
 package com.ruoyi.project.monitor.logininfor.domain;
 
 
-import java.util.Date;
 import com.ruoyi.framework.web.domain.BaseEntity;
 import com.ruoyi.framework.web.domain.BaseEntity;
 
 
+import java.util.Date;
+
 /**
 /**
  * 系统访问日志情况信息 sys_logininfor
  * 系统访问日志情况信息 sys_logininfor
  * 
  * 
@@ -19,6 +20,8 @@ public class Logininfor extends BaseEntity
     private String status;
     private String status;
     /** 登录IP地址 */
     /** 登录IP地址 */
     private String ipaddr;
     private String ipaddr;
+    /**登录地点*/
+    private  String loginLocation;
     /** 浏览器类型 */
     /** 浏览器类型 */
     private String browser;
     private String browser;
     /** 操作系统 */
     /** 操作系统 */
@@ -68,6 +71,14 @@ public class Logininfor extends BaseEntity
         this.ipaddr = ipaddr;
         this.ipaddr = ipaddr;
     }
     }
 
 
+    public String getLoginLocation() {
+        return loginLocation;
+    }
+
+    public void setLoginLocation(String loginLocation) {
+        this.loginLocation = loginLocation;
+    }
+
     public String getBrowser()
     public String getBrowser()
     {
     {
         return browser;
         return browser;
@@ -112,7 +123,7 @@ public class Logininfor extends BaseEntity
     public String toString()
     public String toString()
     {
     {
         return "Logininfor [infoId=" + infoId + ", loginName=" + loginName + ", status=" + status + ", ipaddr=" + ipaddr
         return "Logininfor [infoId=" + infoId + ", loginName=" + loginName + ", status=" + status + ", ipaddr=" + ipaddr
-                + ", browser=" + browser + ", os=" + os + ", msg=" + msg + ", loginTime=" + loginTime + "]";
+                + ",loginLocation="+loginLocation+", browser=" + browser + ", os=" + os + ", msg=" + msg + ", loginTime=" + loginTime + "]";
     }
     }
 
 
 }
 }

+ 15 - 1
src/main/java/com/ruoyi/project/monitor/online/domain/UserOnline.java

@@ -1,9 +1,11 @@
 package com.ruoyi.project.monitor.online.domain;
 package com.ruoyi.project.monitor.online.domain;
 
 
-import java.util.Date;
+import com.ruoyi.common.utils.AddressUtils;
 import com.ruoyi.framework.web.domain.BaseEntity;
 import com.ruoyi.framework.web.domain.BaseEntity;
 import com.ruoyi.project.monitor.online.domain.OnlineSession.OnlineStatus;
 import com.ruoyi.project.monitor.online.domain.OnlineSession.OnlineStatus;
 
 
+import java.util.Date;
+
 /**
 /**
  * 当前在线会话 sys_user_online
  * 当前在线会话 sys_user_online
  * 
  * 
@@ -24,6 +26,9 @@ public class UserOnline extends BaseEntity
     /** 登录IP地址 */
     /** 登录IP地址 */
     private String ipaddr;
     private String ipaddr;
 
 
+    /**登录地址*/
+    private String longinLocation;
+
     /** 浏览器类型 */
     /** 浏览器类型 */
     private String browser;
     private String browser;
 
 
@@ -58,6 +63,7 @@ public class UserOnline extends BaseEntity
         online.setLastAccessTime(session.getLastAccessTime());
         online.setLastAccessTime(session.getLastAccessTime());
         online.setExpireTime(session.getTimeout());
         online.setExpireTime(session.getTimeout());
         online.setIpaddr(session.getHost());
         online.setIpaddr(session.getHost());
+        online.setLonginLocation(AddressUtils.getRealAddressByIP(session.getHost()));
         online.setBrowser(session.getBrowser());
         online.setBrowser(session.getBrowser());
         online.setOs(session.getOs());
         online.setOs(session.getOs());
         online.setStatus(session.getStatus());
         online.setStatus(session.getStatus());
@@ -105,6 +111,14 @@ public class UserOnline extends BaseEntity
         this.ipaddr = ipaddr;
         this.ipaddr = ipaddr;
     }
     }
 
 
+    public String getLonginLocation() {
+        return longinLocation;
+    }
+
+    public void setLonginLocation(String longinLocation) {
+        this.longinLocation = longinLocation;
+    }
+
     public String getBrowser()
     public String getBrowser()
     {
     {
         return browser;
         return browser;

+ 13 - 2
src/main/java/com/ruoyi/project/monitor/operlog/domain/OperLog.java

@@ -1,8 +1,9 @@
 package com.ruoyi.project.monitor.operlog.domain;
 package com.ruoyi.project.monitor.operlog.domain;
 
 
-import java.util.Date;
 import com.ruoyi.framework.web.domain.BaseEntity;
 import com.ruoyi.framework.web.domain.BaseEntity;
 
 
+import java.util.Date;
+
 /**
 /**
  * 操作日志记录 oper_log
  * 操作日志记录 oper_log
  * 
  * 
@@ -29,6 +30,8 @@ public class OperLog extends BaseEntity
     private String operUrl;
     private String operUrl;
     /** 操作地址 */
     /** 操作地址 */
     private String operIp;
     private String operIp;
+    /** 操作地点*/
+    private  String operLocation;
     /** 请求参数 */
     /** 请求参数 */
     private String operParam;
     private String operParam;
     /** 状态0正常 1异常 */
     /** 状态0正常 1异常 */
@@ -128,6 +131,14 @@ public class OperLog extends BaseEntity
         this.operIp = operIp;
         this.operIp = operIp;
     }
     }
 
 
+    public String getOperLocation() {
+        return operLocation;
+    }
+
+    public void setOperLocation(String operLocation) {
+        this.operLocation = operLocation;
+    }
+
     public String getOperParam()
     public String getOperParam()
     {
     {
         return operParam;
         return operParam;
@@ -173,7 +184,7 @@ public class OperLog extends BaseEntity
     {
     {
         return "OperLog [operId=" + operId + ", title=" + title + ", action=" + action + ", method=" + method
         return "OperLog [operId=" + operId + ", title=" + title + ", action=" + action + ", method=" + method
                 + ", channel=" + channel + ", loginName=" + loginName + ", deptName=" + deptName + ", operUrl="
                 + ", channel=" + channel + ", loginName=" + loginName + ", deptName=" + deptName + ", operUrl="
-                + operUrl + ", operIp=" + operIp + ", operParam=" + operParam + ", status=" + status + ", errorMsg="
+                + operUrl + ", operIp=" + operIp + ", operLocation=" + operLocation + ", operParam=" + operParam + ", status=" + status + ", errorMsg="
                 + errorMsg + ", operTime=" + operTime + "]";
                 + errorMsg + ", operTime=" + operTime + "]";
     }
     }
 
 

+ 3 - 2
src/main/resources/mybatis/monitor/LogininforMapper.xml

@@ -9,6 +9,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		<result property="loginName"   column="login_name"   />
 		<result property="loginName"   column="login_name"   />
 		<result property="status"      column="status"       />
 		<result property="status"      column="status"       />
 		<result property="ipaddr"      column="ipaddr"       />
 		<result property="ipaddr"      column="ipaddr"       />
+		<result property="loginLocation"      column="login_location"       />
 		<result property="browser"     column="browser"      />
 		<result property="browser"     column="browser"      />
 		<result property="os"          column="os"           />
 		<result property="os"          column="os"           />
 		<result property="msg"         column="msg"          />
 		<result property="msg"         column="msg"          />
@@ -16,8 +17,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 	</resultMap>
 	</resultMap>
 
 
 	<insert id="insertLogininfor" parameterType="Logininfor">
 	<insert id="insertLogininfor" parameterType="Logininfor">
-		insert into sys_logininfor (login_name, status, ipaddr, browser, os, msg, login_time) 
-		values (#{loginName}, #{status}, #{ipaddr}, #{browser}, #{os}, #{msg}, sysdate())
+		insert into sys_logininfor (login_name, status, ipaddr, login_location, browser, os, msg, login_time)
+		values (#{loginName}, #{status}, #{ipaddr}, #{loginLocation}, #{browser}, #{os}, #{msg}, sysdate())
 	</insert>
 	</insert>
 	
 	
 	<select id="selectLogininforList" parameterType="Logininfor" resultMap="LogininforResult">
 	<select id="selectLogininforList" parameterType="Logininfor" resultMap="LogininforResult">

+ 3 - 2
src/main/resources/mybatis/monitor/OnlineMapper.xml

@@ -9,6 +9,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		<result property="loginName"         column="login_name"        />
 		<result property="loginName"         column="login_name"        />
 		<result property="deptName"          column="dept_name"         />
 		<result property="deptName"          column="dept_name"         />
 		<result property="ipaddr"            column="ipaddr"            />
 		<result property="ipaddr"            column="ipaddr"            />
+		<result property="longinLocation"   column="login_location"     />
 		<result property="browser"           column="browser"           />
 		<result property="browser"           column="browser"           />
 		<result property="os"                column="os"                />
 		<result property="os"                column="os"                />
 		<result property="status"            column="status"            />
 		<result property="status"            column="status"            />
@@ -32,8 +33,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 	</select>
 	</select>
 
 
 	<insert id="saveOnline" parameterType="UserOnline">
 	<insert id="saveOnline" parameterType="UserOnline">
-		replace into sys_user_online(sessionId, login_name, dept_name, ipaddr, browser, os, status, start_timestsamp, last_access_time, expire_time) 
-        values (#{sessionId}, #{loginName}, #{deptName}, #{ipaddr}, #{browser}, #{os}, #{status}, #{startTimestamp}, #{lastAccessTime}, #{expireTime})
+		replace into sys_user_online(sessionId, login_name, dept_name, ipaddr, login_location, browser, os, status, start_timestsamp, last_access_time, expire_time)
+        values (#{sessionId}, #{loginName}, #{deptName}, #{ipaddr}, #{longinLocation}, #{browser}, #{os}, #{status}, #{startTimestamp}, #{lastAccessTime}, #{expireTime})
 	</insert>
 	</insert>
 	
 	
  	<delete id="deleteOnlineById" parameterType="String">
  	<delete id="deleteOnlineById" parameterType="String">

+ 3 - 2
src/main/resources/mybatis/monitor/OperLogMapper.xml

@@ -14,6 +14,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		<result property="deptName"       column="dept_name"     />
 		<result property="deptName"       column="dept_name"     />
 		<result property="operUrl"        column="oper_url"     />
 		<result property="operUrl"        column="oper_url"     />
 		<result property="operIp"         column="oper_ip"      />
 		<result property="operIp"         column="oper_ip"      />
+		<result property="operLocation"   column="oper_location"    />
 		<result property="operParam"      column="oper_param"    />
 		<result property="operParam"      column="oper_param"    />
 		<result property="status"         column="status"        />
 		<result property="status"         column="status"        />
 		<result property="errorMsg"       column="error_msg"     />
 		<result property="errorMsg"       column="error_msg"     />
@@ -21,8 +22,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 	</resultMap>
 	</resultMap>
 
 
 	<insert id="insertOperlog" parameterType="OperLog">
 	<insert id="insertOperlog" parameterType="OperLog">
-		insert into sys_oper_log(title, action, method, channel, login_name, dept_name, oper_url, oper_ip, oper_param, status, error_msg, oper_time) 
-        values (#{title}, #{action}, #{method}, #{channel}, #{loginName}, #{deptName}, #{operUrl}, #{operIp}, #{operParam}, #{status}, #{errorMsg}, sysdate())
+		insert into sys_oper_log(title, action, method, channel, login_name, dept_name, oper_url, oper_ip, oper_location, oper_param, status, error_msg, oper_time)
+        values (#{title}, #{action}, #{method}, #{channel}, #{loginName}, #{deptName}, #{operUrl}, #{operIp}, #{operLocation}, #{operParam}, #{status}, #{errorMsg}, sysdate())
 	</insert>
 	</insert>
 	
 	
 	<select id="selectOperLogList" parameterType="OperLog" resultMap="OperLogResult">
 	<select id="selectOperLogList" parameterType="OperLog" resultMap="OperLogResult">

+ 4 - 0
src/main/resources/static/ruoyi/monitor/logininfor/logininfor.js

@@ -16,6 +16,10 @@ $(function() {
             field: 'ipaddr',
             field: 'ipaddr',
             title: '主机'
             title: '主机'
         },
         },
+        {
+            field: 'loginLocation',
+            title: '登录地点'
+        },
         {
         {
             field: 'browser',
             field: 'browser',
             title: '浏览器'
             title: '浏览器'

+ 4 - 0
src/main/resources/static/ruoyi/monitor/online/online.js

@@ -20,6 +20,10 @@ $(function() {
             field: 'ipaddr',
             field: 'ipaddr',
             title: '主机'
             title: '主机'
         },
         },
+        {
+            field: 'longinLocation',
+            title: '登录地点'
+        },
         {
         {
             field: 'browser',
             field: 'browser',
             title: '浏览器'
             title: '浏览器'

+ 4 - 0
src/main/resources/static/ruoyi/monitor/operlog/operlog.js

@@ -28,6 +28,10 @@ $(function() {
             field: 'operIp',
             field: 'operIp',
             title: '主机'
             title: '主机'
         },
         },
+        {
+            field: 'operLocation',
+            title: '操作地点'
+        },
         {
         {
             field: 'status',
             field: 'status',
             title: '操作状态',
             title: '操作状态',

+ 1 - 1
src/main/resources/templates/monitor/operlog/detail.html

@@ -13,7 +13,7 @@
 		</div>
 		</div>
 		<div class="form-group">
 		<div class="form-group">
 			<label class="col-sm-2 control-label">登录信息:</label>
 			<label class="col-sm-2 control-label">登录信息:</label>
-			<div class="form-control-static" th:text="${operLog.loginName} + ' / ' + ${operLog.deptName} + ' / ' + ${operLog.operIp}">
+			<div class="form-control-static" th:text="${operLog.loginName} + ' / ' + ${operLog.deptName} + ' / ' + ${operLog.operIp}+ ' / ' + ${operLog.operLocation}">
 			</div>
 			</div>
 		</div>
 		</div>
 		<div class="form-group">
 		<div class="form-group">