fix: 用户退出状态完善

This commit is contained in:
Bunny 2024-10-19 03:20:05 +08:00
parent 8d6ad3b386
commit 449001973a
2 changed files with 17 additions and 5 deletions

View File

@ -67,7 +67,7 @@ public class UserFactory {
setUpdateUser(userId, ipAddr, ipRegion); setUpdateUser(userId, ipAddr, ipRegion);
// 将用户登录保存在用户登录日志表中 // 将用户登录保存在用户登录日志表中
userLoginLogMapper.insert(setUserLoginLog(user, token, ipAddr, ipRegion)); userLoginLogMapper.insert(setUserLoginLog(user, token, ipAddr, ipRegion, "login"));
// 设置用户返回信息 // 设置用户返回信息
LoginVo loginVo = setLoginVo(user, token, readMeDay, ipAddr, ipRegion); LoginVo loginVo = setLoginVo(user, token, readMeDay, ipAddr, ipRegion);
@ -142,7 +142,7 @@ public class UserFactory {
/** /**
* * 设置用户登录日志内容 * * 设置用户登录日志内容
*/ */
public UserLoginLog setUserLoginLog(AdminUser user, String token, String ipAddr, String ipRegion) { public UserLoginLog setUserLoginLog(AdminUser user, String token, String ipAddr, String ipRegion, String type) {
Long userId = user.getId(); Long userId = user.getId();
UserLoginLog userLoginLog = new UserLoginLog(); UserLoginLog userLoginLog = new UserLoginLog();
@ -151,7 +151,7 @@ public class UserFactory {
userLoginLog.setIpAddress(ipAddr); userLoginLog.setIpAddress(ipAddr);
userLoginLog.setIpRegion(ipRegion); userLoginLog.setIpRegion(ipRegion);
userLoginLog.setToken(token); userLoginLog.setToken(token);
userLoginLog.setType("login"); userLoginLog.setType(type);
userLoginLog.setCreateUser(userId); userLoginLog.setCreateUser(userId);
userLoginLog.setUpdateUser(userId); userLoginLog.setUpdateUser(userId);
userLoginLog.setCreateTime(LocalDateTime.now()); userLoginLog.setCreateTime(LocalDateTime.now());
@ -160,7 +160,6 @@ public class UserFactory {
// 当前请求request // 当前请求request
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if (requestAttributes == null) return userLoginLog; if (requestAttributes == null) return userLoginLog;
HttpServletRequest request = requestAttributes.getRequest(); HttpServletRequest request = requestAttributes.getRequest();
// 获取User-Agent // 获取User-Agent

View File

@ -3,6 +3,7 @@ package cn.bunny.services.service.impl;
import cn.bunny.common.service.context.BaseContext; import cn.bunny.common.service.context.BaseContext;
import cn.bunny.common.service.exception.BunnyException; import cn.bunny.common.service.exception.BunnyException;
import cn.bunny.common.service.utils.JwtHelper; import cn.bunny.common.service.utils.JwtHelper;
import cn.bunny.common.service.utils.ip.IpUtil;
import cn.bunny.common.service.utils.minio.MinioUtil; import cn.bunny.common.service.utils.minio.MinioUtil;
import cn.bunny.dao.dto.system.files.FileUploadDto; import cn.bunny.dao.dto.system.files.FileUploadDto;
import cn.bunny.dao.dto.system.user.*; import cn.bunny.dao.dto.system.user.*;
@ -120,6 +121,18 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, AdminUser> implemen
@Override @Override
public void logout() { public void logout() {
LoginVo loginVo = BaseContext.getLoginVo(); LoginVo loginVo = BaseContext.getLoginVo();
Long id = loginVo.getId();
// 获取IP地址
String ipAddr = IpUtil.getCurrentUserIpAddress().getIpAddr();
String ipRegion = IpUtil.getCurrentUserIpAddress().getIpRegion();
// 查询用户信息
AdminUser adminUser = getOne(Wrappers.<AdminUser>lambdaQuery().eq(AdminUser::getId, id));
UserLoginLog userLoginLog = userFactory.setUserLoginLog(adminUser, loginVo.getToken(), ipAddr, ipRegion, "logout");
userLoginLogMapper.insert(userLoginLog);
// 删除Redis中用户信息
redisTemplate.delete(RedisUserConstant.getAdminLoginInfoPrefix(loginVo.getUsername())); redisTemplate.delete(RedisUserConstant.getAdminLoginInfoPrefix(loginVo.getUsername()));
} }
@ -218,7 +231,6 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, AdminUser> implemen
// 将用户登录保存在用户登录日志表中 // 将用户登录保存在用户登录日志表中
UserLoginLog userLoginLog = new UserLoginLog(); UserLoginLog userLoginLog = new UserLoginLog();
BeanUtils.copyProperties(adminUser, userLoginLog);
userLoginLog.setUserId(adminUser.getId()); userLoginLog.setUserId(adminUser.getId());
userLoginLog.setIpAddress(adminUser.getIpAddress()); userLoginLog.setIpAddress(adminUser.getIpAddress());
userLoginLog.setIpRegion(adminUser.getIpRegion()); userLoginLog.setIpRegion(adminUser.getIpRegion());
@ -226,6 +238,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, AdminUser> implemen
userLoginLog.setType("forcedOffline"); userLoginLog.setType("forcedOffline");
userLoginLogMapper.insert(userLoginLog); userLoginLogMapper.insert(userLoginLog);
// 删除Redis中用户信息
redisTemplate.delete(adminLoginInfoPrefix); redisTemplate.delete(adminLoginInfoPrefix);
} }