diff --git a/service/src/main/java/cn/bunny/services/factory/UserFactory.java b/service/src/main/java/cn/bunny/services/factory/UserFactory.java index ba7daba..d6fb7fb 100644 --- a/service/src/main/java/cn/bunny/services/factory/UserFactory.java +++ b/service/src/main/java/cn/bunny/services/factory/UserFactory.java @@ -67,7 +67,7 @@ public class UserFactory { 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); @@ -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(); UserLoginLog userLoginLog = new UserLoginLog(); @@ -151,7 +151,7 @@ public class UserFactory { userLoginLog.setIpAddress(ipAddr); userLoginLog.setIpRegion(ipRegion); userLoginLog.setToken(token); - userLoginLog.setType("login"); + userLoginLog.setType(type); userLoginLog.setCreateUser(userId); userLoginLog.setUpdateUser(userId); userLoginLog.setCreateTime(LocalDateTime.now()); @@ -160,7 +160,6 @@ public class UserFactory { // 当前请求request ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); if (requestAttributes == null) return userLoginLog; - HttpServletRequest request = requestAttributes.getRequest(); // 获取User-Agent diff --git a/service/src/main/java/cn/bunny/services/service/impl/UserServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/UserServiceImpl.java index 2e59209..338b3f2 100644 --- a/service/src/main/java/cn/bunny/services/service/impl/UserServiceImpl.java +++ b/service/src/main/java/cn/bunny/services/service/impl/UserServiceImpl.java @@ -3,6 +3,7 @@ package cn.bunny.services.service.impl; import cn.bunny.common.service.context.BaseContext; import cn.bunny.common.service.exception.BunnyException; 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.dao.dto.system.files.FileUploadDto; import cn.bunny.dao.dto.system.user.*; @@ -120,6 +121,18 @@ public class UserServiceImpl extends ServiceImpl implemen @Override public void logout() { LoginVo loginVo = BaseContext.getLoginVo(); + Long id = loginVo.getId(); + + // 获取IP地址 + String ipAddr = IpUtil.getCurrentUserIpAddress().getIpAddr(); + String ipRegion = IpUtil.getCurrentUserIpAddress().getIpRegion(); + + // 查询用户信息 + AdminUser adminUser = getOne(Wrappers.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())); } @@ -218,7 +231,6 @@ public class UserServiceImpl extends ServiceImpl implemen // 将用户登录保存在用户登录日志表中 UserLoginLog userLoginLog = new UserLoginLog(); - BeanUtils.copyProperties(adminUser, userLoginLog); userLoginLog.setUserId(adminUser.getId()); userLoginLog.setIpAddress(adminUser.getIpAddress()); userLoginLog.setIpRegion(adminUser.getIpRegion()); @@ -226,6 +238,7 @@ public class UserServiceImpl extends ServiceImpl implemen userLoginLog.setType("forcedOffline"); userLoginLogMapper.insert(userLoginLog); + // 删除Redis中用户信息 redisTemplate.delete(adminLoginInfoPrefix); }