|
@@ -6,8 +6,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.ruoyi.common.constant.Constants;
|
|
|
import com.ruoyi.common.core.domain.PageQuery;
|
|
|
+import com.ruoyi.common.core.domain.event.LogininforEvent;
|
|
|
import com.ruoyi.common.core.page.TableDataInfo;
|
|
|
-import com.ruoyi.common.core.service.LogininforService;
|
|
|
import com.ruoyi.common.utils.ServletUtils;
|
|
|
import com.ruoyi.common.utils.StringUtils;
|
|
|
import com.ruoyi.common.utils.ip.AddressUtils;
|
|
@@ -16,6 +16,7 @@ import com.ruoyi.system.mapper.SysLogininforMapper;
|
|
|
import com.ruoyi.system.service.ISysLogininforService;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.context.event.EventListener;
|
|
|
import org.springframework.scheduling.annotation.Async;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
@@ -33,22 +34,19 @@ import java.util.Map;
|
|
|
@RequiredArgsConstructor
|
|
|
@Slf4j
|
|
|
@Service
|
|
|
-public class SysLogininforServiceImpl implements ISysLogininforService, LogininforService {
|
|
|
+public class SysLogininforServiceImpl implements ISysLogininforService {
|
|
|
|
|
|
private final SysLogininforMapper baseMapper;
|
|
|
|
|
|
/**
|
|
|
* 记录登录信息
|
|
|
*
|
|
|
- * @param username 用户名
|
|
|
- * @param status 状态
|
|
|
- * @param message 消息
|
|
|
- * @param args 列表
|
|
|
+ * @param logininforEvent 登录事件
|
|
|
*/
|
|
|
@Async
|
|
|
- @Override
|
|
|
- public void recordLogininfor(final String username, final String status, final String message,
|
|
|
- HttpServletRequest request, final Object... args) {
|
|
|
+ @EventListener
|
|
|
+ public void recordLogininfor(LogininforEvent logininforEvent) {
|
|
|
+ HttpServletRequest request = logininforEvent.getRequest();
|
|
|
final UserAgent userAgent = UserAgentUtil.parse(request.getHeader("User-Agent"));
|
|
|
final String ip = ServletUtils.getClientIP(request);
|
|
|
|
|
@@ -56,27 +54,27 @@ public class SysLogininforServiceImpl implements ISysLogininforService, Logininf
|
|
|
StringBuilder s = new StringBuilder();
|
|
|
s.append(getBlock(ip));
|
|
|
s.append(address);
|
|
|
- s.append(getBlock(username));
|
|
|
- s.append(getBlock(status));
|
|
|
- s.append(getBlock(message));
|
|
|
+ s.append(getBlock(logininforEvent.getUsername()));
|
|
|
+ s.append(getBlock(logininforEvent.getStatus()));
|
|
|
+ s.append(getBlock(logininforEvent.getMessage()));
|
|
|
// 打印信息到日志
|
|
|
- log.info(s.toString(), args);
|
|
|
+ log.info(s.toString(), logininforEvent.getArgs());
|
|
|
// 获取客户端操作系统
|
|
|
String os = userAgent.getOs().getName();
|
|
|
// 获取客户端浏览器
|
|
|
String browser = userAgent.getBrowser().getName();
|
|
|
// 封装对象
|
|
|
SysLogininfor logininfor = new SysLogininfor();
|
|
|
- logininfor.setUserName(username);
|
|
|
+ logininfor.setUserName(logininforEvent.getUsername());
|
|
|
logininfor.setIpaddr(ip);
|
|
|
logininfor.setLoginLocation(address);
|
|
|
logininfor.setBrowser(browser);
|
|
|
logininfor.setOs(os);
|
|
|
- logininfor.setMsg(message);
|
|
|
+ logininfor.setMsg(logininforEvent.getMessage());
|
|
|
// 日志状态
|
|
|
- if (StringUtils.equalsAny(status, Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER)) {
|
|
|
+ if (StringUtils.equalsAny(logininforEvent.getStatus(), Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER)) {
|
|
|
logininfor.setStatus(Constants.SUCCESS);
|
|
|
- } else if (Constants.LOGIN_FAIL.equals(status)) {
|
|
|
+ } else if (Constants.LOGIN_FAIL.equals(logininforEvent.getStatus())) {
|
|
|
logininfor.setStatus(Constants.FAIL);
|
|
|
}
|
|
|
// 插入数据
|