캐릭터 챗봇 #338

Merged
klaus merged 119 commits from test into main 2025-09-10 06:08:47 +00:00
3 changed files with 14 additions and 5 deletions
Showing only changes of commit c525ec0330 - Show all commits

View File

@ -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)
} }
} }

View File

@ -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>
} }

View File

@ -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 = "",