From 1eb7646dda903cc53fab255e36d0c1e4c47023eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=95=9C=EB=AF=BC=EC=A0=95?= Date: Tue, 23 Apr 2024 19:37:30 +0900 Subject: [PATCH] =?UTF-8?q?sign-in=20=EC=9D=91=EB=8B=B5=EA=B0=92=EC=97=90?= =?UTF-8?q?=20userId=20=EB=B0=98=ED=99=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chat/controller/ChatRoomController.java | 50 +++++++++++-------- .../user/controller/UserController.java | 4 +- .../domain/user/service/FriendService.java | 49 +++++++++++------- .../domain/user/service/UserService.java | 10 ++++ 4 files changed, 72 insertions(+), 41 deletions(-) diff --git a/src/main/java/com/capstone/backend/domain/chat/controller/ChatRoomController.java b/src/main/java/com/capstone/backend/domain/chat/controller/ChatRoomController.java index 440df6b..dd33e50 100644 --- a/src/main/java/com/capstone/backend/domain/chat/controller/ChatRoomController.java +++ b/src/main/java/com/capstone/backend/domain/chat/controller/ChatRoomController.java @@ -90,31 +90,32 @@ public ResponseEntity createRoom(@RequestBody Map requestB } /** - * 특정 방 번호 알아내기 + * 부모의 ID 를 이용해 선생님과 연결된 방 번호 알아내기 * @param requestBody * @return */ - @GetMapping("/findRoomId") - public ResponseEntity findRoomId(@RequestBody Map requestBody) { - Long parentUserId = requestBody.get("parentId"); - try { - List teacherUserIds = friendService.findTeacherUserIdsAsParent(parentUserId); - - if (teacherUserIds.isEmpty()) { - return ResponseEntity.ok("부모와 선생님이 연결되지 않았습니다."); - } - - String roomId = friendService.findRoomId(teacherUserIds, parentUserId); // 🧚🏻‍ 이 코드 검토하기 - - if (roomId != null) { - return ResponseEntity.ok(roomId); - } else { - return ResponseEntity.ok("roomId 가 null 입니다."); - } - } catch (RuntimeException e) { - return ResponseEntity.badRequest().body(e.getMessage()); - } - } +// @GetMapping("/findRoomId") +// public ResponseEntity findRoomId(@RequestBody Map requestBody) { +// // 부모의 아이디 가져오기 +// Long parentUserId = requestBody.get("parentId"); +// try { +// List teacherUserIds = friendService.findTeacherUserIdsAsParent(parentUserId); +// +// if (teacherUserIds.isEmpty()) { +// return ResponseEntity.ok("부모와 선생님이 연결되지 않았습니다."); +// } +// +// String roomId = friendService.findRoomId(teacherUserIds, parentUserId); // 🧚🏻‍ 이 코드 검토하기 +// +// if (roomId != null) { +// return ResponseEntity.ok(roomId); +// } else { +// return ResponseEntity.ok("roomId 가 null 입니다."); +// } +// } catch (RuntimeException e) { +// return ResponseEntity.badRequest().body(e.getMessage()); +// } +// } /** * 특정 채팅방 인원 조회 @@ -129,6 +130,11 @@ public ResponseEntity getUserCount(@PathVariable String roomId) { * 유저의 채팅방 리스트 반환 */ + /** + * roomId 로 채팅방에 참여 중인 유저 리스트 조회 + * @param roomId + * @return + */ @Operation(summary = "roomId 로 채팅방 참여 유저 리스트 조회") @GetMapping("/findUsers/{roomId}") public ResponseEntity getUserListByRoomId(@PathVariable String roomId) { diff --git a/src/main/java/com/capstone/backend/domain/user/controller/UserController.java b/src/main/java/com/capstone/backend/domain/user/controller/UserController.java index 6522900..2b362ec 100644 --- a/src/main/java/com/capstone/backend/domain/user/controller/UserController.java +++ b/src/main/java/com/capstone/backend/domain/user/controller/UserController.java @@ -24,8 +24,6 @@ public class UserController { private final UserService userService; private final ChatRoomService chatRoomService; - - @Operation(summary = "회원가입") @PostMapping("/auth/sign-up") public String singUp(@RequestBody UserDto userDto) throws Exception { @@ -44,12 +42,14 @@ public String singUp(@RequestBody UserDto userDto) throws Exception { public ResponseEntity> login(@RequestBody UserDto userDto) { Map tokens = userService.loginUser(userDto.getEmail(), userDto.getPassword()); Role role = userService.getUserRole(userDto.getEmail()); + Long userId = userService.getUserId(userDto.getEmail()); HttpHeaders headers = new HttpHeaders(); headers.add(HttpHeaders.AUTHORIZATION, (String) tokens.get("accessToken")); Map responseBody = new HashMap<>(); responseBody.put("role", role); + responseBody.put("userId", userId); return ResponseEntity.ok().headers(headers).body(responseBody); } diff --git a/src/main/java/com/capstone/backend/domain/user/service/FriendService.java b/src/main/java/com/capstone/backend/domain/user/service/FriendService.java index 60d208b..67b0a19 100644 --- a/src/main/java/com/capstone/backend/domain/user/service/FriendService.java +++ b/src/main/java/com/capstone/backend/domain/user/service/FriendService.java @@ -47,30 +47,19 @@ public void acceptFriendRequest(Teacher teacher, Parent parent) { friendRepository.save(friend); } + /** + * roomId 로 채팅방 참여 유저 리스트 조회시 사용 + * @param roomId + * @return + */ public boolean roomExists(String roomId) { return friendRepository.findByRoomId(roomId).isPresent(); } /** * parentId로 teacherId 찾기 - * @param parentUserId - * @return */ - public List findTeacherUserIdsAsParent(Long parentUserId) { - return friendRepository.findTeacherUserIdAsParent(parentUserId); - } - - public String findRoomId(List teacherUserIds, Long parentUserId) { - for (Long teacherUserId : teacherUserIds) { - Optional roomIdOptional = friendRepository.findRoomId(teacherUserId, parentUserId); - if (roomIdOptional.isPresent()) { - return roomIdOptional.get(); - } - } - return null; - } - - public List findTeacherUserIds(Parent parent) { + public List findTeacherUserIdsAsParent(Parent parent) { List childTeacherIds = getChildteacherIds(parent); List friendTeacherIds = friendRepository.findTeacherUserIdAsParent(parent.getUser().getId()); List matchingTeacherIds = new ArrayList<>(); @@ -84,6 +73,32 @@ public List findTeacherUserIds(Parent parent) { } return matchingTeacherIds; } +// public List findTeacherUserIds(Parent parent) { +// List childTeacherIds = getChildteacherIds(parent); +// List friendTeacherIds = friendRepository.findTeacherUserIdAsParent(parent.getUser().getId()); +// List matchingTeacherIds = new ArrayList<>(); +// +// // 자식이 가지고 있는 선생님의 ID와 친구 목록에서 가져온 선생님의 ID를 비교하여 일치하는 ID를 찾습니다. +// for (Long childTeacherId : childTeacherIds) { +// if (friendTeacherIds.contains(childTeacherId)) { +// // 일치하는 선생님의 ID가 발견되면 리스트에 추가합니다. +// matchingTeacherIds.add(childTeacherId); +// } +// } +// return matchingTeacherIds; +// } + + public String findRoomId(List teacherUserIds, Long parentUserId) { + for (Long teacherUserId : teacherUserIds) { + Optional roomIdOptional = friendRepository.findRoomId(teacherUserId, parentUserId); + if (roomIdOptional.isPresent()) { + return roomIdOptional.get(); + } + } + return null; + } + + private List getChildteacherIds(Parent parent) { // 여기에 부모의 자식 목록에서 선생님의 ID를 가져오는 로직을 구현합니다. diff --git a/src/main/java/com/capstone/backend/domain/user/service/UserService.java b/src/main/java/com/capstone/backend/domain/user/service/UserService.java index bbcda8c..3555812 100644 --- a/src/main/java/com/capstone/backend/domain/user/service/UserService.java +++ b/src/main/java/com/capstone/backend/domain/user/service/UserService.java @@ -289,4 +289,14 @@ public Role getUserRole(String email) { throw new IllegalArgumentException("이메일에 해당하는 사용자가 없습니다."); } } + + public Long getUserId(String email) { + Optional userOptional = userRepository.findByEmail(email); + if (userOptional.isPresent()) { + User user = userOptional.get(); + return user.getId(); + } else { + throw new RuntimeException("해당하는 이메일을 가진 사용자를 찾을 수 없습니다."); + } + } } \ No newline at end of file