-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
# Conflicts: # build.gradle # src/main/java/meltingpot/server/config/SecurityConfig.java # src/main/java/meltingpot/server/config/WebConfig.java # src/main/java/meltingpot/server/domain/entity/party/Party.java # src/main/resources/application.yml
- Loading branch information
Showing
56 changed files
with
1,016 additions
and
17 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
26 changes: 26 additions & 0 deletions
26
src/main/java/meltingpot/server/chat/controller/ChatController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
package meltingpot.server.chat.controller; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
import meltingpot.server.chat.dto.ChatMessageCreateResponse; | ||
import meltingpot.server.chat.dto.ChatMessageCreateRequest; | ||
import meltingpot.server.chat.service.ChatService; | ||
import org.springframework.messaging.handler.annotation.DestinationVariable; | ||
import org.springframework.messaging.handler.annotation.MessageMapping; | ||
import org.springframework.messaging.handler.annotation.Payload; | ||
import org.springframework.messaging.handler.annotation.SendTo; | ||
import org.springframework.stereotype.Controller; | ||
|
||
@Controller | ||
@RequiredArgsConstructor | ||
public class ChatController { | ||
private final ChatService chatService; | ||
|
||
@MessageMapping("/chat/rooms/{chatRoomId}/send") // <- 해당 경로로 들어오면 메서드 호출 | ||
@SendTo("/topic/public/rooms/{chatRoomId}") // 구독 중인 장소로 메세지 전달 | ||
public ChatMessageCreateResponse sendMessage( | ||
@DestinationVariable Long chatRoomId, | ||
@Payload ChatMessageCreateRequest request) { | ||
ChatMessageCreateResponse response = chatService.createChatMessage(chatRoomId, request); | ||
return response; | ||
} | ||
} |
82 changes: 82 additions & 0 deletions
82
src/main/java/meltingpot/server/chat/controller/ChatRoomController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
package meltingpot.server.chat.controller; | ||
|
||
import io.swagger.v3.oas.annotations.Operation; | ||
import io.swagger.v3.oas.annotations.Parameter; | ||
import io.swagger.v3.oas.annotations.Parameters; | ||
import io.swagger.v3.oas.annotations.media.Content; | ||
import io.swagger.v3.oas.annotations.responses.ApiResponse; | ||
import lombok.RequiredArgsConstructor; | ||
import meltingpot.server.chat.dto.*; | ||
import meltingpot.server.chat.service.ChatRoomQueryService; | ||
import meltingpot.server.chat.service.ChatRoomService; | ||
import meltingpot.server.util.PageResponse; | ||
import meltingpot.server.util.ResponseData; | ||
import org.springframework.http.ResponseEntity; | ||
import org.springframework.web.bind.annotation.*; | ||
|
||
import java.util.List; | ||
|
||
import static meltingpot.server.util.ResponseCode.SIGNIN_SUCCESS; | ||
|
||
@RestController | ||
@RequestMapping("/api/v1/chatRooms") | ||
@RequiredArgsConstructor | ||
public class ChatRoomController { | ||
private final ChatRoomQueryService chatRoomQueryService; | ||
private final ChatRoomService chatRoomService; | ||
|
||
// [CHECK] /{userId}, PageResponse, param | ||
@GetMapping("/{userId}") | ||
@Operation(summary = "채팅방 전체 목록 조회") | ||
@ApiResponse(responseCode = "100", description = "요청에 성공하였습니다.", content = @Content(mediaType = "application/json")) | ||
@Parameter(name = "userId", description = "사용자 ID", required = true, example = "1") | ||
public ResponseEntity<ResponseData<PageResponse<List<ChatRoomsGetResponse>>>> getChatRooms( | ||
@PathVariable Long userId, | ||
@RequestParam(defaultValue = "0") int page, | ||
@RequestParam(defaultValue = "5") int size | ||
) { | ||
return ResponseData.toResponseEntity(SIGNIN_SUCCESS, chatRoomQueryService.getChatRooms()); | ||
} | ||
|
||
// [CHECK] /{userId} | ||
@PatchMapping("/alarm/{chatRoomId}/{userId}") | ||
@Operation(summary = "채팅방 알람 설정 변경") | ||
@ApiResponse(responseCode = "1000", description = "요청에 성공하였습니다.", content = @Content(mediaType = "application/json")) | ||
@Parameters({ | ||
@Parameter(name = "chatRoomId", description = "채팅룸 ID", required = true, example = "1"), | ||
@Parameter(name = "userId", description = "사용자 ID", required = true, example = "1") | ||
}) | ||
public ResponseEntity<ResponseData> updateAlarmStatus( | ||
@PathVariable Long userId, | ||
@PathVariable Long chatRoomId | ||
) { | ||
chatRoomService.updateAlarmStatus(userId, chatRoomId); | ||
return ResponseData.toResponseEntity(SIGNIN_SUCCESS); | ||
} | ||
|
||
// [CHECK] PageResponse | ||
@GetMapping("{chatRoomId}") | ||
@Operation(summary = "채팅방 채팅 내역 조회") | ||
@ApiResponse(responseCode = "1000", description = "요청에 성공하였습니다.", content = @Content(mediaType = "application/json")) | ||
@Parameter(name = "chatRoomId", description = "채팅룸 ID", required = true, example = "1") | ||
public ResponseEntity<ResponseData<PageResponse<List<ChatMessageGetResponse>>>> getChatMessage( | ||
@PathVariable Long chatRoomId, | ||
@RequestParam(defaultValue = "0") int page, | ||
@RequestParam(defaultValue = "5") int size | ||
) { | ||
ChatMessageListQuery query = ChatMessageListQuery.builder() | ||
.chatRoomId(chatRoomId) | ||
.page(page) | ||
.size(size) | ||
.build(); | ||
return ResponseData.toResponseEntity(SIGNIN_SUCCESS, chatRoomQueryService.getChatMessage(query)); | ||
} | ||
|
||
@GetMapping("{chatRoomId}/detail") | ||
@Operation(summary = "채팅방 상단") | ||
@ApiResponse(responseCode = "1000", description = "요청에 성공하였습니다.", content = @Content(mediaType = "application/json")) | ||
@Parameter(description = "채팅룸 ID", required = true, example = "1") | ||
public ResponseEntity<ResponseData<ChatRoomDetailGetResponse>> getChatRoomDetail(@PathVariable Long chatRoomId) { | ||
return ResponseData.toResponseEntity(SIGNIN_SUCCESS, chatRoomQueryService.getRoomDetail(chatRoomId)); | ||
} | ||
} |
8 changes: 8 additions & 0 deletions
8
src/main/java/meltingpot/server/chat/dto/ChatMessageCreateRequest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
package meltingpot.server.chat.dto; | ||
|
||
public record ChatMessageCreateRequest( | ||
Long userId, | ||
String content, | ||
Long chatRoomId | ||
) { | ||
} |
9 changes: 9 additions & 0 deletions
9
src/main/java/meltingpot/server/chat/dto/ChatMessageCreateResponse.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
package meltingpot.server.chat.dto; | ||
|
||
import lombok.Builder; | ||
|
||
@Builder | ||
public record ChatMessageCreateResponse( | ||
Long chatId | ||
) { | ||
} |
19 changes: 19 additions & 0 deletions
19
src/main/java/meltingpot/server/chat/dto/ChatMessageGetResponse.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package meltingpot.server.chat.dto; | ||
|
||
import meltingpot.server.domain.entity.chat.ChatMessage; | ||
import meltingpot.server.domain.entity.chat.enums.Role; | ||
import org.springframework.data.domain.Slice; | ||
|
||
public record ChatMessageGetResponse( | ||
Long chatId, | ||
String content, | ||
Role role | ||
) { | ||
public static ChatMessageGetResponse from(ChatMessage chatMessage) { | ||
return new ChatMessageGetResponse( | ||
chatMessage.getId(), | ||
chatMessage.getContent(), | ||
chatMessage.getRole() | ||
); | ||
} | ||
} |
11 changes: 11 additions & 0 deletions
11
src/main/java/meltingpot/server/chat/dto/ChatMessageListQuery.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
package meltingpot.server.chat.dto; | ||
|
||
import lombok.Builder; | ||
|
||
@Builder | ||
public record ChatMessageListQuery( | ||
Long chatRoomId, | ||
int page, | ||
int size | ||
) { | ||
} |
6 changes: 6 additions & 0 deletions
6
src/main/java/meltingpot/server/chat/dto/ChatRoomAlarmUpdateResponse.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
package meltingpot.server.chat.dto; | ||
|
||
public record ChatRoomAlarmUpdateResponse( | ||
String status | ||
) { | ||
} |
19 changes: 19 additions & 0 deletions
19
src/main/java/meltingpot/server/chat/dto/ChatRoomDetailGetResponse.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package meltingpot.server.chat.dto; | ||
|
||
import meltingpot.server.domain.entity.party.Party; | ||
|
||
public record ChatRoomDetailGetResponse( | ||
String imageKey, | ||
String title, | ||
Integer userCnt | ||
) { | ||
public static ChatRoomDetailGetResponse of(Party party, int userCnt) { | ||
return new ChatRoomDetailGetResponse( | ||
// [CHECK] 프로필 이미지 | ||
// party.getUser().getProfileImages(), | ||
"", | ||
party.getPartySubject(), | ||
userCnt | ||
); | ||
} | ||
} |
32 changes: 32 additions & 0 deletions
32
src/main/java/meltingpot/server/chat/dto/ChatRoomsGetResponse.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
package meltingpot.server.chat.dto; | ||
|
||
import meltingpot.server.domain.entity.party.Party; | ||
|
||
import java.time.LocalDateTime; | ||
|
||
public record ChatRoomsGetResponse( | ||
Long chatRoomId, | ||
String leaderName, | ||
String imageKey, | ||
String partySubject, | ||
String partyStatus, | ||
String partyLocationAddress, | ||
LocalDateTime partyStartTime, | ||
int userCnt, | ||
int messageCnt | ||
) { | ||
// [CHECK] 유저 프로필 이미지 | ||
public static ChatRoomsGetResponse of(Party party, int userCnt, int messageCnt) { | ||
// return new ChatRoomsGetResponse( | ||
// party.getChatRoom().getId(), | ||
// party.getUser().getUsername(), | ||
// party.getUser().getProfileImages(), | ||
// party.getPartySubject(), | ||
// party.getPartyLocationAddress(), | ||
// party.getPartyStartTime(), | ||
// userCnt, | ||
// messageCnt | ||
// ); | ||
return null; | ||
} | ||
} |
51 changes: 51 additions & 0 deletions
51
src/main/java/meltingpot/server/chat/service/ChatRoomQueryService.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
package meltingpot.server.chat.service; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
import meltingpot.server.chat.dto.ChatMessageGetResponse; | ||
import meltingpot.server.chat.dto.ChatMessageListQuery; | ||
import meltingpot.server.chat.dto.ChatRoomDetailGetResponse; | ||
import meltingpot.server.chat.dto.ChatRoomsGetResponse; | ||
import meltingpot.server.domain.entity.chat.ChatRoom; | ||
import meltingpot.server.domain.entity.party.Party; | ||
import meltingpot.server.domain.repository.chat.ChatMessageRepository; | ||
import meltingpot.server.domain.repository.chat.ChatRoomRepository; | ||
import meltingpot.server.domain.repository.chat.ChatRoomUserRepository; | ||
import meltingpot.server.domain.repository.party.PartyRepository; | ||
import meltingpot.server.util.PageResponse; | ||
import org.springframework.data.domain.PageRequest; | ||
import org.springframework.data.domain.Sort; | ||
import org.springframework.stereotype.Service; | ||
import org.springframework.transaction.annotation.Transactional; | ||
|
||
import java.util.List; | ||
|
||
@Service | ||
@Transactional(readOnly = true) | ||
@RequiredArgsConstructor | ||
public class ChatRoomQueryService { | ||
private final ChatRoomUserRepository chatRoomUserRepository; | ||
private final ChatRoomRepository chatRoomRepository; | ||
private final ChatMessageRepository chatMessageRepository; | ||
private final PartyRepository partyRepository; | ||
|
||
public ChatRoomDetailGetResponse getRoomDetail(Long chatRoomId) { | ||
Party party = partyRepository.findByChatRoomId(chatRoomId); | ||
return ChatRoomDetailGetResponse.of(party, chatRoomUserRepository.countChatRoomUsersByChatRoomId(chatRoomId)); | ||
} | ||
|
||
// [CHECK] | ||
public PageResponse<List<ChatMessageGetResponse>> getChatMessage(ChatMessageListQuery query) { | ||
ChatRoom chatRoom = chatRoomRepository.findById(query.chatRoomId()) | ||
.orElseThrow(() -> new IllegalArgumentException("ChatRoom not found")); | ||
PageRequest pageRequest = PageRequest.of(query.page(), query.size(), Sort.by("chatMessageId").descending()); | ||
List<ChatMessageGetResponse> chatMessages = chatMessageRepository.findAllByChatRoom(chatRoom, pageRequest) | ||
.stream().map(ChatMessageGetResponse::from).toList(); | ||
|
||
// return PageResponse.of(chatMessages, pageRequest); | ||
return null; | ||
} | ||
|
||
public PageResponse<List<ChatRoomsGetResponse>> getChatRooms() { | ||
return null; | ||
} | ||
} |
21 changes: 21 additions & 0 deletions
21
src/main/java/meltingpot/server/chat/service/ChatRoomService.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
package meltingpot.server.chat.service; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
import meltingpot.server.domain.entity.chat.ChatRoomUser; | ||
import meltingpot.server.domain.repository.chat.ChatRoomUserRepository; | ||
import org.springframework.stereotype.Service; | ||
import org.springframework.transaction.annotation.Transactional; | ||
|
||
@Service | ||
@Transactional | ||
@RequiredArgsConstructor | ||
public class ChatRoomService { | ||
private final ChatRoomUserRepository chatRoomUserRepository; | ||
|
||
public void updateAlarmStatus(Long userId, Long chatRoomId) { | ||
ChatRoomUser chatRoomUser = chatRoomUserRepository.findChatRoomUserByUserIdAndChatRoomId(userId, chatRoomId) | ||
.orElseThrow(() -> new IllegalArgumentException("ChatRoomUser not found")); | ||
chatRoomUser.toggleAlarm(); | ||
chatRoomUserRepository.save(chatRoomUser); | ||
} | ||
} |
Oops, something went wrong.