package cc.mrbird.febs.monitor.entity;
|
|
import cc.mrbird.febs.common.converter.TimeConverter;
|
import cc.mrbird.febs.common.utils.HttpContextUtil;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.wuwenze.poi.annotation.Excel;
|
import com.wuwenze.poi.annotation.ExcelField;
|
import lombok.Data;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang3.StringUtils;
|
|
import javax.servlet.http.HttpServletRequest;
|
import java.io.Serializable;
|
import java.util.Date;
|
|
/**
|
* @author MrBird
|
*/
|
@Slf4j
|
@Data
|
@TableName("t_login_log")
|
@Excel("登录日志")
|
public class LoginLog implements Serializable {
|
|
private static final long serialVersionUID = 921991157363932095L;
|
/**
|
* id
|
*/
|
@TableId(value = "ID", type = IdType.AUTO)
|
private Long id;
|
|
/**
|
* 登录用户
|
*/
|
@TableField("USERNAME")
|
@ExcelField("登录用户")
|
private String username;
|
|
/**
|
* 登录时间
|
*/
|
@TableField("LOGIN_TIME")
|
@ExcelField(value = "登录时间", writeConverter = TimeConverter.class)
|
private Date loginTime;
|
|
/**
|
* 登录地点
|
*/
|
@TableField("LOCATION")
|
@ExcelField(value = "登录地点")
|
private String location;
|
/**
|
* 登录 IP
|
*/
|
@TableField("IP")
|
@ExcelField("登录IP")
|
private String ip;
|
/**
|
* 操作系统
|
*/
|
@TableField("`SYSTEM`")
|
@ExcelField("操作系统")
|
private String system;
|
/**
|
* 登录浏览器
|
*/
|
@TableField("BROWSER")
|
@ExcelField("登录浏览器")
|
private String browser;
|
|
private transient String loginTimeFrom;
|
private transient String loginTimeTo;
|
|
public void setSystemBrowserInfo() {
|
try {
|
HttpServletRequest request = HttpContextUtil.getHttpServletRequest();
|
|
StringBuilder userAgent = new StringBuilder("[");
|
userAgent.append(request.getHeader("User-Agent"));
|
userAgent.append("]");
|
int indexOfMac = userAgent.indexOf("Mac OS X");
|
int indexOfWindows = userAgent.indexOf("Windows NT");
|
int indexOfIe = userAgent.indexOf("MSIE");
|
int indexOfIe11 = userAgent.indexOf("rv:");
|
int indexOfFirefox = userAgent.indexOf("Firefox");
|
int indexOfSogou = userAgent.indexOf("MetaSr");
|
int indexOfChrome = userAgent.indexOf("Chrome");
|
int indexOfSafari = userAgent.indexOf("Safari");
|
boolean isMac = indexOfMac > 0;
|
boolean isWindows = indexOfWindows > 0;
|
boolean isLinux = userAgent.indexOf("Linux") > 0;
|
boolean containIe = indexOfIe > 0 || (isWindows && (indexOfIe11 > 0));
|
boolean containFirefox = indexOfFirefox > 0;
|
boolean containSogou = indexOfSogou > 0;
|
boolean containChrome = indexOfChrome > 0;
|
boolean containSafari = indexOfSafari > 0;
|
String browser = "";
|
if (containSogou) {
|
if (containIe) {
|
browser = "搜狗" + userAgent.substring(indexOfIe, indexOfIe + "IE x.x".length());
|
} else if (containChrome) {
|
browser = "搜狗" + userAgent.substring(indexOfChrome, indexOfChrome + "Chrome/xx".length());
|
}
|
} else if (containChrome) {
|
browser = userAgent.substring(indexOfChrome, indexOfChrome + "Chrome/xx".length());
|
} else if (containSafari) {
|
int indexOfSafariVersion = userAgent.indexOf("Version");
|
browser = "Safari "
|
+ userAgent.substring(indexOfSafariVersion, indexOfSafariVersion + "Version/x.x.x.x".length());
|
} else if (containFirefox) {
|
browser = userAgent.substring(indexOfFirefox, indexOfFirefox + "Firefox/xx".length());
|
} else if (containIe) {
|
if (indexOfIe11 > 0) {
|
browser = "IE 11";
|
} else {
|
browser = userAgent.substring(indexOfIe, indexOfIe + "IE x.x".length());
|
}
|
}
|
String os = "";
|
if (isMac) {
|
os = userAgent.substring(indexOfMac, indexOfMac + "MacOS X xxxxxxxx".length());
|
} else if (isLinux) {
|
os = "Linux";
|
} else if (isWindows) {
|
os = "Windows ";
|
String version = userAgent.substring(indexOfWindows + "Windows NT".length(), indexOfWindows
|
+ "Windows NTx.x".length());
|
switch (version.trim()) {
|
case "5.0":
|
os += "2000";
|
break;
|
case "5.1":
|
os += "XP";
|
break;
|
case "5.2":
|
os += "2003";
|
break;
|
case "6.0":
|
os += "Vista";
|
break;
|
case "6.1":
|
os += "7";
|
break;
|
case "6.2":
|
os += "8";
|
break;
|
case "6.3":
|
os += "8.1";
|
break;
|
case "10":
|
os += "10";
|
default:
|
break;
|
}
|
}
|
this.system = os;
|
this.browser = StringUtils.replace(browser, "/", " ");
|
} catch (Exception e) {
|
log.error("获取登录信息失败:{}", e.getMessage());
|
this.system = "";
|
this.browser = "";
|
}
|
|
}
|
}
|