From 87536af7a1190a633ff1527037b33240e8820642 Mon Sep 17 00:00:00 2001 From: ujumom Date: Wed, 6 Sep 2023 14:08:12 +0900 Subject: [PATCH 1/7] =?UTF-8?q?:recycle:=20refactor:=20<=EC=82=AC=EC=9A=A9?= =?UTF-8?q?=EC=9E=90=20=EC=A0=95=EB=B3=B4(=ED=94=84=EB=A1=9C=ED=95=84)=20u?= =?UTF-8?q?i=EC=97=90=EC=84=9C=20api=20=ED=98=B8=EC=B6=9C=EB=A1=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95>?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/api/MemberController.java | 16 ++ .../controller/ui/ChatRoomUiController.java | 14 +- .../member/MemberSimpleProfileResponse.java | 31 ++++ .../com/springles/service/MemberService.java | 2 + .../service/impl/MemberServiceImpl.java | 19 ++ src/main/resources/templates/home/add.html | 4 +- src/main/resources/templates/home/index.html | 166 +++++++++--------- 7 files changed, 158 insertions(+), 94 deletions(-) create mode 100644 src/main/java/com/springles/domain/dto/member/MemberSimpleProfileResponse.java diff --git a/src/main/java/com/springles/controller/api/MemberController.java b/src/main/java/com/springles/controller/api/MemberController.java index 0e8a68c9..be8d9b43 100644 --- a/src/main/java/com/springles/controller/api/MemberController.java +++ b/src/main/java/com/springles/controller/api/MemberController.java @@ -19,6 +19,22 @@ public class MemberController { private final MemberService memberService; + // 멤버 정보 조회 + @GetMapping("/info") + public ResponseEntity profileInfo(HttpServletRequest request) { + // 멤버 정보 가져오기 + String accessToken = (String)request.getAttribute("accessToken"); + ResponseCode responseCode = ResponseCode.MEMBER_DETAIL; + return ResponseEntity.ok( + ResResult.builder() + .responseCode(responseCode) + .code(responseCode.getCode()) + .message(responseCode.getMessage()) + .data(memberService.getUserSimpleProfileInfo(accessToken)) + .build()); + } + + // 회원가입 @PostMapping("/signup") public ResponseEntity signup( diff --git a/src/main/java/com/springles/controller/ui/ChatRoomUiController.java b/src/main/java/com/springles/controller/ui/ChatRoomUiController.java index d04f2093..c3ff762a 100644 --- a/src/main/java/com/springles/controller/ui/ChatRoomUiController.java +++ b/src/main/java/com/springles/controller/ui/ChatRoomUiController.java @@ -1,6 +1,7 @@ package com.springles.controller.ui; +import com.springles.controller.api.MemberController; import com.springles.domain.dto.chatroom.ChatRoomReqDTO; import com.springles.domain.dto.chatroom.ChatRoomResponseDto; import com.springles.domain.dto.member.MemberInfoResponse; @@ -24,7 +25,7 @@ @Slf4j public class ChatRoomUiController { - private final MemberUiController memberUiController; +// private final MemberUiController memberUiController; private final ChatRoomService chatRoomService; // 채팅방 만들기 페이지 (GET) @@ -39,34 +40,23 @@ public String chatRoomList(Model model, HttpServletRequest request, @RequestParam(value = "search-content", required = false, defaultValue = "") String searchContent ) { - // 목록 전체 조회 - String accessToken = (String)request.getAttribute("accessToken"); - // 회원 정보 호출 -// MemberInfoResponse info = memberUiController.info(accessToken); - // 회원 프로필 정보 호출 - MemberProfileResponse profileInfo = memberUiController.profileInfo(accessToken); - model.addAttribute("member",profileInfo); // 채팅방 검색 try { List allByTitleAndNickname = chatRoomService.findAllByTitleAndNickname(searchContent); model.addAttribute("allChatRooms", allByTitleAndNickname); } catch (CustomException e) { - // 검색어가 비어있다면 if (searchContent.isBlank()) { model.addAttribute("errorMessage", e.getMessage()); } - // 검색어가 비어 있지 않고 방을 찾지 못했을 때 else{ model.addAttribute("errorMessage", String.format("'%s'에 해당하는 유저 또는 방을 찾지 못해 전체 목록을 불러옵니다.",searchContent) ); } - List allChatRooms = chatRoomService.findAllChatRooms(); model.addAttribute("allChatRooms", allChatRooms); } - return "home/index"; } } diff --git a/src/main/java/com/springles/domain/dto/member/MemberSimpleProfileResponse.java b/src/main/java/com/springles/domain/dto/member/MemberSimpleProfileResponse.java new file mode 100644 index 00000000..3c7ad39a --- /dev/null +++ b/src/main/java/com/springles/domain/dto/member/MemberSimpleProfileResponse.java @@ -0,0 +1,31 @@ +package com.springles.domain.dto.member; + +import com.springles.domain.constants.GameRole; +import com.springles.domain.constants.Level; +import com.springles.domain.constants.ProfileImg; +import com.springles.domain.entity.MemberGameInfo; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@Getter +@Builder +@AllArgsConstructor +@RequiredArgsConstructor +public class MemberSimpleProfileResponse { + private String nickname; // 게임 닉네임 + private String profileImg; + private Level level; // 유저 레벨 + private Long memberId; + + public static MemberSimpleProfileResponse of(MemberGameInfo memberGameInfo, Long memberId) { + return MemberSimpleProfileResponse.builder() + .memberId(memberId) + .nickname(memberGameInfo.getNickname()) + .profileImg(memberGameInfo.getProfileImg().getFileUrl()) + .level(memberGameInfo.getLevel()) + .build(); + } + +} diff --git a/src/main/java/com/springles/service/MemberService.java b/src/main/java/com/springles/service/MemberService.java index a2c345f3..b9e7a9bd 100644 --- a/src/main/java/com/springles/service/MemberService.java +++ b/src/main/java/com/springles/service/MemberService.java @@ -14,6 +14,8 @@ public interface MemberService { // 사용자 정보 API MemberInfoResponse getUserInfo(String accessToken); + // 메인페이지 사용자 프로필 정보 호출 + MemberSimpleProfileResponse getUserSimpleProfileInfo(String accessToken); // 사용자 프로필 정보 호출 MemberProfileResponse getUserProfileInfo(String accessToken); diff --git a/src/main/java/com/springles/service/impl/MemberServiceImpl.java b/src/main/java/com/springles/service/impl/MemberServiceImpl.java index 9168101b..878b042f 100644 --- a/src/main/java/com/springles/service/impl/MemberServiceImpl.java +++ b/src/main/java/com/springles/service/impl/MemberServiceImpl.java @@ -50,6 +50,25 @@ public MemberInfoResponse getUserInfo(String accessToken) { .orElseThrow(() -> new CustomException(ErrorCode.NOT_FOUND_MEMBER))); } + + /** + * 메인페이지 사용자 프로필 간단 정보 조회 + */ + public MemberSimpleProfileResponse getUserSimpleProfileInfo(String accessToken) { + String memberName = jwtTokenUtils.parseClaims(accessToken).getSubject(); + + Optional optionalMember = memberRepository.findByMemberName(memberName); + if(optionalMember.isEmpty()) { + throw new CustomException(ErrorCode.NOT_FOUND_MEMBER); + } + + Optional optionalMemberGameInfo = memberGameInfoJpaRepository.findByMemberId(optionalMember.get().getId()); + + return MemberSimpleProfileResponse.of(optionalMemberGameInfo.get(), optionalMember.get().getId()); + } + + + /** * 사용자 프로필 정보 반환 */ diff --git a/src/main/resources/templates/home/add.html b/src/main/resources/templates/home/add.html index 32cc3b43..29cdb731 100644 --- a/src/main/resources/templates/home/add.html +++ b/src/main/resources/templates/home/add.html @@ -84,9 +84,9 @@ success: function(data) { stompClient.send(`/pub/gameCreate/${data.data.id}`) // response data에서 방장 이름 가져오기 - const nickName = response.data.nickName; + const nickName = data.data.nickName; // response data에서 roomId 가져오기 - const roomId = response.data.id; + const roomId = data.data.id; // 성공할 경우 해당 채팅방으로 바로 이동 location.replace('http://localhost:8080/chat/'+roomId+'/'+nickName); }, diff --git a/src/main/resources/templates/home/index.html b/src/main/resources/templates/home/index.html index 55b38a84..892b9bf6 100644 --- a/src/main/resources/templates/home/index.html +++ b/src/main/resources/templates/home/index.html @@ -11,16 +11,19 @@
-
+
+

+
- 프로필이미지 + 프로필이미지
-
+
+

+
@@ -66,87 +69,91 @@

- -
-
-
- -
- - - -
- - - - - -
-
-
- -
-
-
- -
- / - -
-
-
- - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - -
-
-
+ + + From 6021c361afe8bbe3cdcd52a847015b78a58bd09b Mon Sep 17 00:00:00 2001 From: ujumom Date: Fri, 8 Sep 2023 15:22:40 +0900 Subject: [PATCH 4/7] =?UTF-8?q?:recycle:=20refactor:=20<=EC=B1=84=ED=8C=85?= =?UTF-8?q?=EB=B0=A9=20=EC=9E=85=EC=9E=A5=EA=B3=BC=20=EB=AA=A8=EB=8B=AC=20?= =?UTF-8?q?=ED=98=B8=EC=B6=9C=20ui=EC=97=90=EC=84=9C=20api=20=ED=98=B8?= =?UTF-8?q?=EC=B6=9C=EB=A1=9C=20=EC=88=98=EC=A0=95>?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/api/ChatRoomController.java | 18 ++ src/main/resources/static/css/basic.css | 3 + src/main/resources/templates/home/index.html | 227 ++++++++++-------- 3 files changed, 143 insertions(+), 105 deletions(-) diff --git a/src/main/java/com/springles/controller/api/ChatRoomController.java b/src/main/java/com/springles/controller/api/ChatRoomController.java index 97d50410..41308d08 100644 --- a/src/main/java/com/springles/controller/api/ChatRoomController.java +++ b/src/main/java/com/springles/controller/api/ChatRoomController.java @@ -9,6 +9,7 @@ import com.springles.domain.dto.member.MemberInfoResponse; import com.springles.domain.dto.response.ResResult; import com.springles.exception.CustomException; +import com.springles.exception.constants.ErrorCode; import com.springles.service.ChatRoomService; import io.swagger.v3.oas.annotations.Operation; import jakarta.servlet.http.HttpServletRequest; @@ -54,6 +55,23 @@ public ResponseEntity createChatRoom(@Valid @RequestBody ChatRoomReqD .build(), HttpStatus.OK); } + // 채팅방 1개 조회 + @GetMapping(value="/chatroom/{roomId}") + public ResponseEntity readChatRoom( + @PathVariable Long roomId + ){ + + ResponseCode responseCode = ResponseCode.CHATROOM_READ; + + return new ResponseEntity<>( + ResResult.builder() + .responseCode(responseCode) + .code(responseCode.getCode()) + .message(responseCode.getMessage()) + .data(chatRoomService.findChatRoomByChatRoomId(roomId)) + .build(), HttpStatus.OK); + } + // 전체 채팅방 조회 @GetMapping(value = "/chatrooms") public ResponseEntity readChatRooms() { diff --git a/src/main/resources/static/css/basic.css b/src/main/resources/static/css/basic.css index f3ba9798..f5784344 100644 --- a/src/main/resources/static/css/basic.css +++ b/src/main/resources/static/css/basic.css @@ -247,3 +247,6 @@ body { width: 70%; /* Could be more or less, depending on screen size */ } +.password-input { + +} \ No newline at end of file diff --git a/src/main/resources/templates/home/index.html b/src/main/resources/templates/home/index.html index 5d8b6978..2c8894ed 100644 --- a/src/main/resources/templates/home/index.html +++ b/src/main/resources/templates/home/index.html @@ -46,22 +46,24 @@ + class="custom-control-input form-check-input" + onclick="chatRoomCheckboxFilter()"> - +
+ +
- + +
- +
- -
@@ -70,32 +72,24 @@
- -