package com.ltkj.framework.manager.factory; import java.io.IOException; import java.util.TimerTask; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ltkj.db.DataSourceConfig; import com.ltkj.db.DataSourceContextHolder; import com.ltkj.hosp.domain.DictHosp; import com.ltkj.hosp.service.IDictHospService; import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.ltkj.common.constant.Constants; import com.ltkj.common.utils.LogUtils; import com.ltkj.common.utils.ServletUtils; import com.ltkj.common.utils.StringUtils; import com.ltkj.common.utils.ip.AddressUtils; import com.ltkj.common.utils.ip.IpUtils; import com.ltkj.common.utils.spring.SpringUtils; import com.ltkj.system.domain.SysLogininfor; import com.ltkj.system.domain.SysOperLog; import com.ltkj.system.service.ISysLogininforService; import com.ltkj.system.service.ISysOperLogService; import eu.bitwalker.useragentutils.UserAgent; import org.springframework.stereotype.Component; import javax.servlet.http.HttpServletResponse; /** * 异步工厂(产生任务用) * * @author ltkj */ //@Component @Slf4j public class AsyncFactory { private static final Logger sys_user_logger = LoggerFactory.getLogger("sys-user"); /** * 记录登录信息 * * @param username 用户名 * @param status 状态 * @param message 消息 * @param args 列表 * @return 任务task */ public static TimerTask recordLogininfor(final String username, final String status, final String message,final String hospId, final Object... args) { final UserAgent userAgent = UserAgent.parseUserAgentString(ServletUtils.getRequest().getHeader("User-Agent")); final String ip = IpUtils.getIpAddr(ServletUtils.getRequest()); // log.info("院区参数hospId"+hospId); return new TimerTask() { @Override public void run() { log.info("院区参数hospId"+hospId); DataSourceContextHolder.setDataSourceKey(hospId); SpringUtils.getBean(DataSourceConfig.class).addDataSource(hospId); 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)); // 打印信息到日志 sys_user_logger.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, Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER)) { logininfor.setStatus(Constants.SUCCESS); } else if (Constants.LOGIN_FAIL.equals(status)) { logininfor.setStatus(Constants.FAIL); } // 插入数据 SpringUtils.getBean(ISysLogininforService.class).insertLogininfor(logininfor); } }; } public static void recordLogininfornew(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()); 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)); // 打印信息到日志 sys_user_logger.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, Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER)) { 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 SysOperLog operLog) { // return new TimerTask() { // @Override // public void run() { // // 远程查询操作地点 // operLog.setOperLocation(AddressUtils.getRealAddressByIP(operLog.getOperIp())); // SpringUtils.getBean(ISysOperLogService.class).insertOperlog(operLog); // } // }; // } public static void recordOper(final SysOperLog operLog) { // 远程查询操作地点 operLog.setOperLocation(AddressUtils.getRealAddressByIP(operLog.getOperIp())); SpringUtils.getBean(ISysOperLogService.class).insertOperlog(operLog); } }