|
4 | 4 | import lombok.RequiredArgsConstructor; |
5 | 5 | import org.dfbf.soundlink.domain.user.dto.response.UserStatusDto; |
6 | 6 | import org.dfbf.soundlink.domain.user.dto.response.UserStatusResponseDto; |
| 7 | +import org.dfbf.soundlink.domain.user.entity.User; |
| 8 | +import org.dfbf.soundlink.domain.user.exception.NoUserDataException; |
| 9 | +import org.dfbf.soundlink.domain.user.repository.UserRepository; |
7 | 10 | import org.dfbf.soundlink.domain.user.service.UserStatusService; |
8 | 11 | import org.dfbf.soundlink.domain.user.service.UserStatusSseService; |
9 | 12 | import org.dfbf.soundlink.global.exception.ErrorCode; |
|
18 | 21 | public class UserStatusController { |
19 | 22 | private final UserStatusService userStatusService; |
20 | 23 | private final UserStatusSseService userStatusSseService; |
| 24 | + private final UserRepository userRepository; |
21 | 25 |
|
22 | 26 | @GetMapping("/subscribe") |
23 | | - public SseEmitter subscribe(@RequestParam Long userId) { |
| 27 | + public SseEmitter subscribe(@RequestParam String loginId) { |
| 28 | + |
| 29 | + User user = userRepository.findByLoginId(loginId) |
| 30 | + .orElseThrow(NoUserDataException::new); |
| 31 | + Long userId = user.getUserId(); |
| 32 | + |
24 | 33 | return userStatusSseService.subscribe(userId); |
25 | 34 | } |
26 | 35 |
|
27 | | - @GetMapping("/{userId}") |
28 | | - public ResponseResult getUserStatus(@PathVariable Long userId) { |
| 36 | + @GetMapping("/{loginId}") |
| 37 | + public ResponseResult getUserStatus(@PathVariable String loginId) { |
| 38 | + |
| 39 | + User user = userRepository.findByLoginId(loginId) |
| 40 | + .orElseThrow(NoUserDataException::new); |
| 41 | + Long userId = user.getUserId(); |
| 42 | + |
29 | 43 | UserStatusDto status = userStatusService.getUserStatus(userId); |
30 | 44 |
|
31 | 45 | boolean isOnline = status.isOnline(); |
32 | 46 | boolean isChatting = status.isChatting(); |
33 | 47 | long minutesAgo = userStatusService.getMinutesSinceLastActive(userId); |
34 | 48 |
|
35 | 49 | UserStatusResponseDto dto = new UserStatusResponseDto( |
36 | | - userId, |
| 50 | + loginId, |
37 | 51 | isOnline ? "ONLINE" : "OFFLINE", |
38 | 52 | isChatting ? "CHATTING" : "NOT_CHATTING", |
39 | 53 | isOnline |
|
0 commit comments