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