package com.panzhihua.auth.manager; import java.util.TimerTask; import com.panzhihua.auth.model.dos.SysLogininforDO; import com.panzhihua.auth.model.dos.SysOperLogDO; import com.panzhihua.common.constants.Constants; import com.panzhihua.common.utlis.AddressUtils; import com.panzhihua.common.utlis.IpUtils; import com.panzhihua.common.utlis.LogUtils; import com.panzhihua.common.utlis.ServletUtils; import eu.bitwalker.useragentutils.UserAgent; import lombok.extern.slf4j.Slf4j; /** * @program: springcloud_k8s_panzhihuazhihuishequ * @description: 异步工厂 * @author: huang.hongfa weixin hhf9596 qq 959656820 * @create: 2020-11-20 15:28 **/ @Slf4j public class AsyncFactoryNew { /** * 记录登录信息 * * @param username * 用户名 * @param status * 状态 * @param message * 消息 * @param args * 列表 * @return 任务task */ public static TimerTask recordLogininfor(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(ServletUtils.getRequest()); 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(); // 封装对象 SysLogininforDO logininfor = new SysLogininforDO(); logininfor.setUserName(username); logininfor.setIpaddr(ip); logininfor.setLoginLocation(address); logininfor.setBrowser(browser); logininfor.setOs(os); logininfor.setMsg(message); // 日志状态 if (Constants.LOGIN_SUCCESS.equals(status) || Constants.LOGOUT.equals(status)) { logininfor.setStatus(Constants.SUCCESS + ""); } else if (Constants.LOGIN_FAIL.equals(status)) { logininfor.setStatus(Constants.FAIL + ""); } // 插入数据 // SpringUtils.getBean(ISysLogininforService.class).insertLogininfor(logininfor); } }; } /** * 操作日志记录 * * @param operLog * 操作日志信息 * @return 任务task */ public static TimerTask recordOper(final SysOperLogDO operLog) { return new TimerTask() { @Override public void run() { // 远程查询操作地点 operLog.setOperLocation(AddressUtils.getRealAddressByIP(operLog.getOperIp())); // SpringUtils.getBean(ISysOperLogService.class).insertOperlog(operLog); } }; } }