From 0953a9c0b23701169869ec4f4c3dabe54980d8e8 Mon Sep 17 00:00:00 2001 From: RuoYi Date: Tue, 9 Jul 2024 12:06:40 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=B0=E5=BD=95=E7=94=A8=E6=88=B7=E7=99=BB?= =?UTF-8?q?=E5=BD=95IP=E5=9C=B0=E5=9D=80=E5=92=8C=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/system/api/RemoteUserService.java | 11 +++++++++++ .../api/factory/RemoteUserFallbackFactory.java | 6 ++++++ .../ruoyi/auth/service/SysLoginService.java | 18 ++++++++++++++++++ .../controller/SysProfileController.java | 2 +- .../system/controller/SysUserController.java | 9 +++++++++ .../ruoyi/system/service/ISysUserService.java | 2 +- .../service/impl/SysUserServiceImpl.java | 4 ++-- 7 files changed, 48 insertions(+), 4 deletions(-) diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java index e7fe34c5..c1a94b3d 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java @@ -4,6 +4,7 @@ import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestHeader; import com.ruoyi.common.core.constant.SecurityConstants; @@ -40,4 +41,14 @@ public interface RemoteUserService */ @PostMapping("/user/register") public R registerUserInfo(@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + /** + * 记录用户登录IP地址和登录时间 + * + * @param sysUser 用户信息 + * @param source 请求来源 + * @return 结果 + */ + @PutMapping("/user/recordlogin") + public R recordUserLogin(@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java index 8fd6c677..d0ae76a6 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java @@ -36,6 +36,12 @@ public class RemoteUserFallbackFactory implements FallbackFactory recordUserLogin(SysUser sysUser, String source) + { + return R.fail("记录用户登录信息失败:" + throwable.getMessage()); + } }; } } diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java index 431c264e..f265149a 100644 --- a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java +++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java @@ -10,6 +10,7 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.enums.UserStatus; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.text.Convert; +import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.ip.IpUtils; import com.ruoyi.common.redis.service.RedisService; @@ -98,9 +99,26 @@ public class SysLoginService } passwordService.validate(user, password); recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "登录成功"); + recordLoginInfo(user.getUserId()); return userInfo; } + /** + * 记录登录信息 + * + * @param userId 用户ID + */ + public void recordLoginInfo(Long userId) + { + SysUser sysUser = new SysUser(); + sysUser.setUserId(userId); + // 更新用户登录IP + sysUser.setLoginIp(IpUtils.getIpAddr()); + // 更新用户登录时间 + sysUser.setLoginDate(DateUtils.getNowDate()); + remoteUserService.recordUserLogin(sysUser, SecurityConstants.INNER); + } + public void logout(String loginName) { recordLogService.recordLogininfor(loginName, Constants.LOGOUT, "退出成功"); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysProfileController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysProfileController.java index 3437c2d5..7163c444 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysProfileController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysProfileController.java @@ -79,7 +79,7 @@ public class SysProfileController extends BaseController { return error("修改用户'" + loginUser.getUsername() + "'失败,邮箱账号已存在"); } - if (userService.updateUserProfile(currentUser) > 0) + if (userService.updateUserProfile(currentUser)) { // 更新缓存用户信息 tokenService.setLoginUser(loginUser); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java index 77183a42..e8636374 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java @@ -149,6 +149,15 @@ public class SysUserController extends BaseController return R.ok(userService.registerUser(sysUser)); } + /** + *记录用户登录IP地址和登录时间 + */ + @PutMapping("/recordlogin") + public R recordlogin(@RequestBody SysUser sysUser) + { + return R.ok(userService.updateUserProfile(sysUser)); + } + /** * 获取用户信息 * diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java index d2632538..83208dc8 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java @@ -150,7 +150,7 @@ public interface ISysUserService * @param user 用户信息 * @return 结果 */ - public int updateUserProfile(SysUser user); + public boolean updateUserProfile(SysUser user); /** * 修改用户头像 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java index 787fcce5..99fbb358 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java @@ -336,9 +336,9 @@ public class SysUserServiceImpl implements ISysUserService * @return 结果 */ @Override - public int updateUserProfile(SysUser user) + public boolean updateUserProfile(SysUser user) { - return userMapper.updateUser(user); + return userMapper.updateUser(user) > 0; } /**