캐릭터 챗봇 #338
| @@ -54,12 +54,13 @@ class ChatRoomController( | |||||||
|      */ |      */ | ||||||
|     @GetMapping("/list") |     @GetMapping("/list") | ||||||
|     fun listMyChatRooms( |     fun listMyChatRooms( | ||||||
|         @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member? |         @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?, | ||||||
|  |         @RequestParam(defaultValue = "0") page: Int | ||||||
|     ) = run { |     ) = run { | ||||||
|         if (member == null || member.auth == null) { |         if (member == null || member.auth == null) { | ||||||
|             ApiResponse.ok(emptyList()) |             ApiResponse.ok(emptyList()) | ||||||
|         } else { |         } else { | ||||||
|             val response = chatRoomService.listMyChatRooms(member) |             val response = chatRoomService.listMyChatRooms(member, page) | ||||||
|             ApiResponse.ok(response) |             ApiResponse.ok(response) | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -4,6 +4,7 @@ import kr.co.vividnext.sodalive.chat.character.ChatCharacter | |||||||
| import kr.co.vividnext.sodalive.chat.room.ChatRoom | import kr.co.vividnext.sodalive.chat.room.ChatRoom | ||||||
| import kr.co.vividnext.sodalive.chat.room.dto.ChatRoomListQueryDto | import kr.co.vividnext.sodalive.chat.room.dto.ChatRoomListQueryDto | ||||||
| import kr.co.vividnext.sodalive.member.Member | import kr.co.vividnext.sodalive.member.Member | ||||||
|  | import org.springframework.data.domain.Pageable | ||||||
| import org.springframework.data.jpa.repository.JpaRepository | import org.springframework.data.jpa.repository.JpaRepository | ||||||
| import org.springframework.data.jpa.repository.Query | import org.springframework.data.jpa.repository.Query | ||||||
| import org.springframework.data.repository.query.Param | import org.springframework.data.repository.query.Param | ||||||
| @@ -55,6 +56,7 @@ interface ChatRoomRepository : JpaRepository<ChatRoom, Long> { | |||||||
|         """ |         """ | ||||||
|     ) |     ) | ||||||
|     fun findMemberRoomsOrderByLastMessageDesc( |     fun findMemberRoomsOrderByLastMessageDesc( | ||||||
|         @Param("member") member: Member |         @Param("member") member: Member, | ||||||
|  |         pageable: Pageable | ||||||
|     ): List<ChatRoomListQueryDto> |     ): List<ChatRoomListQueryDto> | ||||||
| } | } | ||||||
|   | |||||||
| @@ -21,6 +21,7 @@ import kr.co.vividnext.sodalive.common.SodaException | |||||||
| import kr.co.vividnext.sodalive.member.Member | import kr.co.vividnext.sodalive.member.Member | ||||||
| import org.slf4j.LoggerFactory | import org.slf4j.LoggerFactory | ||||||
| import org.springframework.beans.factory.annotation.Value | import org.springframework.beans.factory.annotation.Value | ||||||
|  | import org.springframework.data.domain.PageRequest | ||||||
| import org.springframework.http.HttpEntity | import org.springframework.http.HttpEntity | ||||||
| import org.springframework.http.HttpHeaders | import org.springframework.http.HttpHeaders | ||||||
| import org.springframework.http.HttpMethod | import org.springframework.http.HttpMethod | ||||||
| @@ -183,8 +184,13 @@ class ChatRoomService( | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Transactional(readOnly = true) |     @Transactional(readOnly = true) | ||||||
|     fun listMyChatRooms(member: Member): List<ChatRoomListItemDto> { |     fun listMyChatRooms(member: Member, page: Int): List<ChatRoomListItemDto> { | ||||||
|         val rooms: List<ChatRoomListQueryDto> = chatRoomRepository.findMemberRoomsOrderByLastMessageDesc(member) |         // 기본 페이지당 20개 고정 | ||||||
|  |         val pageable = PageRequest.of(if (page < 0) 0 else page, 20) | ||||||
|  |         val rooms: List<ChatRoomListQueryDto> = chatRoomRepository.findMemberRoomsOrderByLastMessageDesc( | ||||||
|  |             member, | ||||||
|  |             pageable | ||||||
|  |         ) | ||||||
|         return rooms.map { q -> |         return rooms.map { q -> | ||||||
|             val room = ChatRoom( |             val room = ChatRoom( | ||||||
|                 sessionId = "", |                 sessionId = "", | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user