package com.gkhy.exam.framework.manager.factory;
|
|
import cn.hutool.extra.spring.SpringUtil;
|
import com.gkhy.exam.common.constant.Constant;
|
import com.gkhy.exam.common.utils.AddressUtils;
|
import com.gkhy.exam.common.utils.IpUtils;
|
import com.gkhy.exam.common.utils.LogUtils;
|
import com.gkhy.exam.common.utils.ServletUtils;
|
import com.gkhy.exam.system.domain.SysLogininfor;
|
import com.gkhy.exam.system.domain.SysOperLog;
|
import com.gkhy.exam.system.service.SysLogininforService;
|
import com.gkhy.exam.system.service.SysOperLogService;
|
import eu.bitwalker.useragentutils.UserAgent;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang3.StringUtils;
|
|
import java.util.TimerTask;
|
|
@Slf4j
|
public class AsyncFactory {
|
|
public static TimerTask recordLoginInfo(final String username,final String status,final String message,final Object... args){
|
final UserAgent userAgent= UserAgent.parseUserAgentString(ServletUtils.getRequest().getHeader("User-Agent"));
|
final String ip= IpUtils.getIpAddr();
|
return new TimerTask()
|
{
|
@Override
|
public void run()
|
{
|
String address = AddressUtils.getRealAddressByIP(ip);
|
StringBuilder s = new StringBuilder();
|
s.append(LogUtils.getBlock(ip));
|
s.append(address);
|
s.append(LogUtils.getBlock(username));
|
s.append(LogUtils.getBlock(status));
|
s.append(LogUtils.getBlock(message));
|
// 打印信息到日志
|
log.info(s.toString(), args);
|
// 获取客户端操作系统
|
String os = userAgent.getOperatingSystem().getName();
|
// 获取客户端浏览器
|
String browser = userAgent.getBrowser().getName();
|
// 封装对象
|
SysLogininfor logininfor = new SysLogininfor();
|
logininfor.setUserName(username);
|
logininfor.setIpaddr(ip);
|
logininfor.setLoginLocation(address);
|
logininfor.setBrowser(browser);
|
logininfor.setOs(os);
|
logininfor.setMsg(message);
|
// 日志状态
|
if (StringUtils.equalsAny(status, Constant.LOGIN_SUCCESS, Constant.LOGOUT, Constant.REGISTER))
|
{
|
logininfor.setStatus(Constant.SUCCESS);
|
}
|
else if (Constant.LOGIN_FAIL.equals(status))
|
{
|
logininfor.setStatus(Constant.FAIL);
|
}
|
// 插入数据
|
SpringUtil.getBean(SysLogininforService.class).insertLogininfor(logininfor);
|
}
|
};
|
|
}
|
|
|
public static TimerTask recordOper(final SysOperLog operLog){
|
return new TimerTask() {
|
@Override
|
public void run() {
|
operLog.setOperLocation(AddressUtils.getRealAddressByIP(operLog.getOperIp()));
|
SpringUtil.getBean(SysOperLogService.class).insertOperlog(operLog);
|
}
|
};
|
}
|
}
|