캐릭터 챗봇 #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 = "",
|
||||||
|
|
Loading…
Reference in New Issue