From e17001601933d0cc7a72f7537341090a53e136ea Mon Sep 17 00:00:00 2001 From: KilLze Date: Wed, 14 Jan 2026 11:21:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=94=A8=E6=88=B7=E5=9C=A8?= =?UTF-8?q?=E7=BA=BF=E7=8A=B6=E6=80=81=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bao/dating/controller/UserController.java | 11 +++++++++++ .../com/bao/dating/service/UserService.java | 7 +++++++ .../dating/service/impl/UserServiceImpl.java | 19 +++++++++++++++++++ 3 files changed, 37 insertions(+) diff --git a/src/main/java/com/bao/dating/controller/UserController.java b/src/main/java/com/bao/dating/controller/UserController.java index 13b709a..a85a762 100644 --- a/src/main/java/com/bao/dating/controller/UserController.java +++ b/src/main/java/com/bao/dating/controller/UserController.java @@ -203,4 +203,15 @@ public class UserController { return Result.success(ResultCode.SUCCESS,"用户登录成功",userLoginVO); } + /** + * 判断用户是否在线 + * @param userId 用户ID + * @return 用户是否在线 + */ + @GetMapping("/{userId}/online") + public Result isUserOnline(@PathVariable Long userId) { + + boolean online = userService.isUserOnline(userId); + return Result.success(ResultCode.SUCCESS, "查询成功", online); + } } diff --git a/src/main/java/com/bao/dating/service/UserService.java b/src/main/java/com/bao/dating/service/UserService.java index 3e3fed1..ab23da1 100644 --- a/src/main/java/com/bao/dating/service/UserService.java +++ b/src/main/java/com/bao/dating/service/UserService.java @@ -92,4 +92,11 @@ public interface UserService { * @return 用户列表 */ List findNearbyUsers(double lat,double lng,double radiusKm); + + /** + * 判断用户是否在线 + * @param userId 用户ID + * @return 是否在线 + */ + boolean isUserOnline(Long userId); } diff --git a/src/main/java/com/bao/dating/service/impl/UserServiceImpl.java b/src/main/java/com/bao/dating/service/impl/UserServiceImpl.java index 733e8ab..d17c298 100644 --- a/src/main/java/com/bao/dating/service/impl/UserServiceImpl.java +++ b/src/main/java/com/bao/dating/service/impl/UserServiceImpl.java @@ -491,4 +491,23 @@ public class UserServiceImpl implements UserService { } return result; } + + @Override + public boolean isUserOnline(Long userId) { + if (userId == null) { + return false; + } + + // 1. 是否被封禁 + String banKey = "user:ban:" + userId; + if (Boolean.TRUE.equals(redisTemplate.hasKey(banKey))) { + return false; + } + + // 2. 是否存在登录 token + String tokenKey = "login:token:" + userId; + Boolean online = redisTemplate.hasKey(tokenKey); + + return Boolean.TRUE.equals(online); + } } \ No newline at end of file