update 优化 sys_logininfor 丰富多种信息

2.X
疯狂的狮子li 2 years ago
parent 3fc3d52ba4
commit 5853b74efe

@ -54,6 +54,24 @@ public class SysLogininfor implements Serializable {
@ExcelProperty(value = "地址")
private String ipaddr;
/**
*
*/
@ExcelProperty(value = "登录地点")
private String loginLocation;
/**
*
*/
@ExcelProperty(value = "浏览器类型")
private String browser;
/**
*
*/
@ExcelProperty(value = "操作系统")
private String os;
/**
*
*/
@ -64,7 +82,7 @@ public class SysLogininfor implements Serializable {
* 访
*/
@ExcelProperty(value = "访问时间")
private Date accessTime;
private Date loginTime;
/**
*

@ -4,6 +4,8 @@ import cn.dev33.satoken.exception.NotLoginException;
import cn.dev33.satoken.secure.BCrypt;
import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.useragent.UserAgent;
import cn.hutool.http.useragent.UserAgentUtil;
import com.ruoyi.auth.form.RegisterBody;
import com.ruoyi.auth.properties.UserPasswordProperties;
import com.ruoyi.common.core.constant.CacheConstants;
@ -17,6 +19,7 @@ import com.ruoyi.common.core.utils.MessageUtils;
import com.ruoyi.common.core.utils.ServletUtils;
import com.ruoyi.common.core.utils.SpringUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.ip.AddressUtils;
import com.ruoyi.common.log.event.LogininforEvent;
import com.ruoyi.common.redis.utils.RedisUtils;
import com.ruoyi.common.satoken.utils.LoginHelper;
@ -29,6 +32,7 @@ import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.time.Duration;
import java.util.function.Supplier;
@ -129,9 +133,22 @@ public class SysLoginService {
* @return
*/
public void recordLogininfor(String username, String status, String message) {
HttpServletRequest request = ServletUtils.getRequest();
final UserAgent userAgent = UserAgentUtil.parse(request.getHeader("User-Agent"));
final String ip = ServletUtils.getClientIP(request);
String address = AddressUtils.getRealAddressByIP(ip);
// 获取客户端操作系统
String os = userAgent.getOs().getName();
// 获取客户端浏览器
String browser = userAgent.getBrowser().getName();
// 封装对象
LogininforEvent logininfor = new LogininforEvent();
logininfor.setUserName(username);
logininfor.setIpaddr(ServletUtils.getClientIP());
logininfor.setIpaddr(ip);
logininfor.setLoginLocation(address);
logininfor.setBrowser(browser);
logininfor.setOs(os);
logininfor.setMsg(message);
// 日志状态
if (StringUtils.equalsAny(status, Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER)) {

@ -30,6 +30,21 @@ public class LogininforEvent implements Serializable {
*/
private String ipaddr;
/**
*
*/
private String loginLocation;
/**
*
*/
private String browser;
/**
*
*/
private String os;
/**
*
*/

@ -102,7 +102,10 @@
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="访问编号" align="center" prop="infoId" />
<el-table-column label="用户名称" align="center" prop="userName" :show-overflow-tooltip="true" sortable="custom" :sort-orders="['descending', 'ascending']" />
<el-table-column label="地址" align="center" prop="ipaddr" width="130" :show-overflow-tooltip="true" />
<el-table-column label="登录地址" align="center" prop="ipaddr" width="130" :show-overflow-tooltip="true" />
<el-table-column label="登录地点" align="center" prop="loginLocation" :show-overflow-tooltip="true" />
<el-table-column label="浏览器" align="center" prop="browser" :show-overflow-tooltip="true" />
<el-table-column label="操作系统" align="center" prop="os" />
<el-table-column label="登录状态" align="center" prop="status">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_common_status" :value="scope.row.status"/>

@ -704,22 +704,28 @@ create table sys_logininfor (
info_id number(20) not null,
user_name varchar2(50) default '',
ipaddr varchar2(128) default '',
login_location varchar2(255) default '',
browser varchar2(50) default '',
os varchar2(50) default '',
status char(1) default '0',
msg varchar2(255) default '',
access_time date
login_time date
);
alter table sys_logininfor add constraint pk_sys_logininfor primary key (info_id);
create unique index idx_sys_logininfor_s on sys_logininfor (status);
create unique index idx_sys_logininfor_lt on sys_logininfor (access_time);
create unique index idx_sys_logininfor_lt on sys_logininfor (login_time);
comment on table sys_logininfor is '系统访问记录';
comment on column sys_logininfor.info_id is '访问ID';
comment on column sys_logininfor.user_name is '登录账号';
comment on column sys_logininfor.ipaddr is '登录IP地址';
comment on column sys_logininfor.login_location is '登录地点';
comment on column sys_logininfor.browser is '浏览器类型';
comment on column sys_logininfor.os is '操作系统';
comment on column sys_logininfor.status is '登录状态0成功 1失败';
comment on column sys_logininfor.msg is '提示消息';
comment on column sys_logininfor.access_time is '访问时间';
comment on column sys_logininfor.login_time is '访问时间';
-- ----------------------------

@ -719,22 +719,28 @@ create table if not exists sys_logininfor
info_id int8,
user_name varchar(50) default ''::varchar,
ipaddr varchar(128) default ''::varchar,
login_location varchar(255) default ''::varchar,
browser varchar(50) default ''::varchar,
os varchar(50) default ''::varchar,
status char default '0'::bpchar,
msg varchar(255) default ''::varchar,
access_time timestamp,
login_time timestamp,
constraint sys_logininfor_pk primary key (info_id)
);
create unique index idx_sys_logininfor_s ON sys_logininfor (status);
create unique index idx_sys_logininfor_lt ON sys_logininfor (access_time);
create unique index idx_sys_logininfor_lt ON sys_logininfor (login_time);
comment on table sys_logininfor is '系统访问记录';
comment on column sys_logininfor.info_id is '访问ID';
comment on column sys_logininfor.user_name is '用户账号';
comment on column sys_logininfor.ipaddr is '登录IP地址';
comment on column sys_logininfor.login_location is '登录地点';
comment on column sys_logininfor.browser is '浏览器类型';
comment on column sys_logininfor.os is '操作系统';
comment on column sys_logininfor.status is '登录状态0成功 1失败';
comment on column sys_logininfor.msg is '提示消息';
comment on column sys_logininfor.access_time is '访问时间';
comment on column sys_logininfor.login_time is '访问时间';
-- ----------------------------
-- 17、通知公告表

@ -550,12 +550,15 @@ create table sys_logininfor (
info_id bigint(20) not null comment '访问ID',
user_name varchar(50) default '' comment '用户账号',
ipaddr varchar(128) default '' comment '登录IP地址',
login_location varchar(255) default '' comment '登录地点',
browser varchar(50) default '' comment '浏览器类型',
os varchar(50) default '' comment '操作系统',
status char(1) default '0' comment '登录状态0成功 1失败',
msg varchar(255) default '' comment '提示信息',
access_time datetime comment '访问时间',
msg varchar(255) default '' comment '提示',
login_time datetime comment '访问时间',
primary key (info_id),
key idx_sys_logininfor_s (status),
key idx_sys_logininfor_lt (access_time)
key idx_sys_logininfor_lt (login_time)
) engine=innodb comment = '系统访问记录';
-- ----------------------------

Loading…
Cancel
Save