From 1cca4695773da5c4bc268df085cec43d553c4212 Mon Sep 17 00:00:00 2001 From: Klaus Date: Fri, 6 Sep 2024 18:52:19 +0900 Subject: [PATCH 1/7] =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=20=EC=BB=A4?= =?UTF-8?q?=EB=AE=A4=EB=8B=88=ED=8B=B0=20=EC=A0=95=EC=82=B0=20-=20?= =?UTF-8?q?=EC=BB=A4=EB=AE=A4=EB=8B=88=ED=8B=B0=20=EA=B8=80=20=EC=A0=95?= =?UTF-8?q?=EB=A0=AC=EC=9D=84=20=EC=B6=94=EA=B0=80=ED=95=98=EC=97=AC=20?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=20=EB=84=98=EC=96=B4=EA=B0=88=20?= =?UTF-8?q?=EB=95=8C=20=EB=8F=99=EC=9D=BC=ED=95=9C=20=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=EA=B0=80=20=EC=84=9E=EC=9D=B4=EB=8A=94=20=EB=B2=84?= =?UTF-8?q?=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/admin/calculate/AdminCalculateQueryRepository.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/AdminCalculateQueryRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/AdminCalculateQueryRepository.kt index 6a45e4a..f39f5a6 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/AdminCalculateQueryRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/AdminCalculateQueryRepository.kt @@ -219,7 +219,7 @@ class AdminCalculateQueryRepository(private val queryFactory: JPAQueryFactory) { .and(useCan.createdAt.loe(endDate)) ) .groupBy(formattedDate, creatorCommunity.id, creatorSettlementRatio.communitySettlementRatio) - .orderBy(member.id.asc(), formattedDate.desc()) + .orderBy(member.id.asc(), formattedDate.desc(), creatorCommunity.id.desc()) .offset(offset) .limit(limit) .fetch() -- 2.40.1 From b70c9518eb210f7962c28ad44b2478a034d9a004 Mon Sep 17 00:00:00 2001 From: Klaus Date: Fri, 6 Sep 2024 18:54:43 +0900 Subject: [PATCH 2/7] =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=20=EC=BD=98?= =?UTF-8?q?=ED=85=90=EC=B8=A0=20=ED=9B=84=EC=9B=90=20=EC=A0=95=EC=82=B0=20?= =?UTF-8?q?-=20=EC=BD=98=ED=85=90=EC=B8=A0=20=EC=A0=95=EB=A0=AC=EC=9D=84?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80=ED=95=98=EC=97=AC=20=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=20=EB=84=98=EC=96=B4=EA=B0=88=20=EB=95=8C=20=EB=8F=99?= =?UTF-8?q?=EC=9D=BC=ED=95=9C=20=EB=8D=B0=EC=9D=B4=ED=84=B0=EA=B0=80=20?= =?UTF-8?q?=EC=84=9E=EC=9D=B4=EB=8A=94=20=EB=B2=84=EA=B7=B8=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/admin/calculate/AdminCalculateQueryRepository.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/AdminCalculateQueryRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/AdminCalculateQueryRepository.kt index f39f5a6..026e9ec 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/AdminCalculateQueryRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/AdminCalculateQueryRepository.kt @@ -166,7 +166,7 @@ class AdminCalculateQueryRepository(private val queryFactory: JPAQueryFactory) { .and(useCan.createdAt.loe(endDate)) ) .groupBy(donationFormattedDate, audioContent.id) - .orderBy(member.id.asc(), donationFormattedDate.desc()) + .orderBy(member.id.asc(), donationFormattedDate.desc(), audioContent.id.desc()) .fetch() } -- 2.40.1 From da3175292b0f4c23bb4cad067f7e8b07858b725e Mon Sep 17 00:00:00 2001 From: Klaus Date: Fri, 6 Sep 2024 19:21:18 +0900 Subject: [PATCH 3/7] =?UTF-8?q?=EC=BD=98=ED=85=90=EC=B8=A0=20=EB=8C=93?= =?UTF-8?q?=EA=B8=80=20-=20=EC=A1=B0=ED=9A=8C=20=EB=B0=A9=EC=8B=9D=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20-=20=EB=8C=93=EA=B8=80=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1=EC=9E=90=EC=9D=98=20=EC=B0=A8=EB=8B=A8=20=EC=97=AC?= =?UTF-8?q?=EB=B6=80=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../comment/AudioContentCommentController.kt | 1 + .../comment/AudioContentCommentRepository.kt | 121 +++++++++++------- .../comment/AudioContentCommentService.kt | 8 +- .../GetAudioContentCommentListResponse.kt | 3 +- 4 files changed, 85 insertions(+), 48 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/comment/AudioContentCommentController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/comment/AudioContentCommentController.kt index a68faa2..bc0cfba 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/comment/AudioContentCommentController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/comment/AudioContentCommentController.kt @@ -74,6 +74,7 @@ class AudioContentCommentController(private val service: AudioContentCommentServ return ApiResponse.ok( service.getCommentReplyList( commentId = commentId, + memberId = member.id!!, timezone = timezone, pageable = pageable ) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/comment/AudioContentCommentRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/comment/AudioContentCommentRepository.kt index c78cc03..ecf14f0 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/comment/AudioContentCommentRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/comment/AudioContentCommentRepository.kt @@ -1,13 +1,14 @@ package kr.co.vividnext.sodalive.content.comment +import com.querydsl.core.types.dsl.Expressions import com.querydsl.jpa.impl.JPAQueryFactory import kr.co.vividnext.sodalive.content.QAudioContent.audioContent import kr.co.vividnext.sodalive.content.comment.QAudioContentComment.audioContentComment import kr.co.vividnext.sodalive.member.QMember.member +import kr.co.vividnext.sodalive.member.block.QBlockMember.blockMember import org.springframework.data.jpa.repository.JpaRepository import org.springframework.stereotype.Repository -import java.time.ZoneId -import java.time.format.DateTimeFormatter +import java.time.LocalDateTime @Repository interface AudioContentCommentRepository : JpaRepository, AudioContentCommentQueryRepository @@ -28,6 +29,7 @@ interface AudioContentCommentQueryRepository { fun getAudioContentCommentReplyList( cloudFrontHost: String, commentId: Long, + memberId: Long, timezone: String, offset: Long, limit: Int @@ -64,35 +66,50 @@ class AudioContentCommentQueryRepositoryImpl( ) } + val formattedDate = Expressions.stringTemplate( + "DATE_FORMAT({0}, {1})", + Expressions.dateTimeTemplate( + LocalDateTime::class.java, + "CONVERT_TZ({0},{1},{2})", + audioContentComment.createdAt, + "UTC", + "Asia/Seoul" + ), + "%Y.%m.%d %W %h:%i %p" + ) + return queryFactory - .selectFrom(audioContentComment) + .select( + QGetAudioContentCommentListItem( + audioContentComment.id, + audioContentComment.member.id, + audioContentComment.member.nickname, + audioContentComment.member.profileImage.prepend("/").prepend(cloudFrontHost), + audioContentComment.comment, + audioContentComment.isSecret, + blockMember.id.isNotNull, + audioContentComment.donationCan.coalesce(0), + formattedDate, + Expressions.constant(0) + ) + ) + .from(audioContentComment) .innerJoin(audioContentComment.audioContent, audioContent) .innerJoin(audioContentComment.member, member) + .leftJoin(blockMember) + .on( + member.id.eq(blockMember.blockedMember.id) + .and(blockMember.isActive.isTrue) + .and(blockMember.member.id.eq(memberId)) + ) .where(where) .offset(offset) .limit(limit.toLong()) .orderBy(audioContentComment.createdAt.desc()) .fetch() .map { - val date = it.createdAt!! - .atZone(ZoneId.of("UTC")) - .withZoneSameInstant(ZoneId.of(timezone)) - - GetAudioContentCommentListItem( - id = it.id!!, - writerId = it.member!!.id!!, - nickname = it.member!!.nickname, - profileUrl = if (it.member!!.profileImage != null) { - "$cloudFrontHost/${it.member!!.profileImage}" - } else { - "$cloudFrontHost/profile/default-profile.png" - }, - comment = it.comment, - isSecret = it.isSecret, - donationCan = it.donationCan ?: 0, - date = date.format(DateTimeFormatter.ofPattern("yyyy.MM.dd E hh:mm a")), - replyCount = commentReplyCountByAudioContentCommentId(it.id!!) - ) + it.replyCount = commentReplyCountByAudioContentCommentId(it.id) + it } } @@ -133,11 +150,46 @@ class AudioContentCommentQueryRepositoryImpl( override fun getAudioContentCommentReplyList( cloudFrontHost: String, commentId: Long, + memberId: Long, timezone: String, offset: Long, limit: Int ): List { - return queryFactory.selectFrom(audioContentComment) + val formattedDate = Expressions.stringTemplate( + "DATE_FORMAT({0}, {1})", + Expressions.dateTimeTemplate( + LocalDateTime::class.java, + "CONVERT_TZ({0},{1},{2})", + audioContentComment.createdAt, + "UTC", + "Asia/Seoul" + ), + "%Y.%m.%d %W %h:%i %p" + ) + + return queryFactory + .select( + QGetAudioContentCommentListItem( + audioContentComment.id, + audioContentComment.member.id, + audioContentComment.member.nickname, + audioContentComment.member.profileImage.prepend("/").prepend(cloudFrontHost), + audioContentComment.comment, + audioContentComment.isSecret, + blockMember.id.isNotNull, + audioContentComment.donationCan.coalesce(0), + formattedDate, + Expressions.constant(0) + ) + ) + .from(audioContentComment) + .innerJoin(audioContentComment.member, member) + .leftJoin(blockMember) + .on( + member.id.eq(blockMember.blockedMember.id) + .and(blockMember.isActive.isTrue) + .and(blockMember.member.id.eq(memberId)) + ) .where( audioContentComment.parent.isNotNull .and(audioContentComment.parent.id.eq(commentId)) @@ -147,29 +199,6 @@ class AudioContentCommentQueryRepositoryImpl( .limit(limit.toLong()) .orderBy(audioContentComment.createdAt.desc()) .fetch() - .asSequence() - .map { - val date = it.createdAt!! - .atZone(ZoneId.of("UTC")) - .withZoneSameInstant(ZoneId.of(timezone)) - - GetAudioContentCommentListItem( - id = it.id!!, - writerId = it.member!!.id!!, - nickname = it.member!!.nickname, - profileUrl = if (it.member!!.profileImage != null) { - "$cloudFrontHost/${it.member!!.profileImage}" - } else { - "$cloudFrontHost/profile/default-profile.png" - }, - comment = it.comment, - isSecret = it.isSecret, - donationCan = it.donationCan ?: 0, - date = date.format(DateTimeFormatter.ofPattern("yyyy.MM.dd E hh:mm a")), - replyCount = 0 - ) - } - .toList() } override fun findPushTokenByContentIdAndCommentParentIdMyMemberId( diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/comment/AudioContentCommentService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/comment/AudioContentCommentService.kt index 632ad9f..f6e8e8c 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/comment/AudioContentCommentService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/comment/AudioContentCommentService.kt @@ -132,10 +132,16 @@ class AudioContentCommentService( return GetAudioContentCommentListResponse(totalCount, commentList) } - fun getCommentReplyList(commentId: Long, timezone: String, pageable: Pageable): GetAudioContentCommentListResponse { + fun getCommentReplyList( + commentId: Long, + memberId: Long, + timezone: String, + pageable: Pageable + ): GetAudioContentCommentListResponse { val commentList = repository.getAudioContentCommentReplyList( cloudFrontHost = cloudFrontHost, commentId = commentId, + memberId = memberId, timezone = timezone, offset = pageable.offset, limit = pageable.pageSize diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/comment/GetAudioContentCommentListResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/comment/GetAudioContentCommentListResponse.kt index 2313d35..80d6af9 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/comment/GetAudioContentCommentListResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/comment/GetAudioContentCommentListResponse.kt @@ -14,7 +14,8 @@ data class GetAudioContentCommentListItem @QueryProjection constructor( val profileUrl: String, val comment: String, val isSecret: Boolean, + val isWriterBlock: Boolean, val donationCan: Int, val date: String, - val replyCount: Int + var replyCount: Int = 0 ) -- 2.40.1 From e8cb4c6ea22b25b9b58e4ea85586e2f77ca9043b Mon Sep 17 00:00:00 2001 From: Klaus Date: Fri, 6 Sep 2024 23:39:09 +0900 Subject: [PATCH 4/7] =?UTF-8?q?=EB=8B=A4=EB=A5=B8=20=ED=9A=8C=EC=9B=90=20?= =?UTF-8?q?=ED=94=84=EB=A1=9C=ED=95=84=20=EC=A1=B0=ED=9A=8C=20API=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../member/GetMemberProfileResponse.kt | 9 ++++++ .../sodalive/member/MemberController.kt | 10 +++++++ .../sodalive/member/MemberRepository.kt | 28 ++++++++++++++++++- .../sodalive/member/MemberService.kt | 4 +++ 4 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 src/main/kotlin/kr/co/vividnext/sodalive/member/GetMemberProfileResponse.kt diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/GetMemberProfileResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/GetMemberProfileResponse.kt new file mode 100644 index 0000000..dc4bbe8 --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/GetMemberProfileResponse.kt @@ -0,0 +1,9 @@ +package kr.co.vividnext.sodalive.member + +import com.querydsl.core.annotations.QueryProjection + +data class GetMemberProfileResponse @QueryProjection constructor( + val memberId: Long, + val profileImageUrl: String, + val isBlocked: Boolean +) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberController.kt index 91da556..e3312d7 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberController.kt @@ -10,6 +10,7 @@ import org.springframework.data.domain.Pageable import org.springframework.security.core.annotation.AuthenticationPrincipal import org.springframework.security.core.userdetails.User import org.springframework.web.bind.annotation.GetMapping +import org.springframework.web.bind.annotation.PathVariable import org.springframework.web.bind.annotation.PostMapping import org.springframework.web.bind.annotation.PutMapping import org.springframework.web.bind.annotation.RequestBody @@ -240,4 +241,13 @@ class MemberController(private val service: MemberService) { fun forgotPassword( @RequestBody request: ForgotPasswordRequest ) = ApiResponse.ok(service.forgotPassword(request)) + + @GetMapping("/profile/{id}") + fun getMemberProfile( + @PathVariable id: Long, + @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member? + ) = run { + if (member == null) throw SodaException("로그인 정보를 확인해주세요.") + ApiResponse.ok(service.getMemberProfile(memberId = id, myMemberId = member.id!!)) + } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberRepository.kt index 177b2d2..239f5ef 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberRepository.kt @@ -8,10 +8,12 @@ import kr.co.vividnext.sodalive.live.room.QLiveRoom.liveRoom import kr.co.vividnext.sodalive.member.QMember.member import kr.co.vividnext.sodalive.member.auth.QAuth.auth import kr.co.vividnext.sodalive.member.block.BlockMemberRepository +import kr.co.vividnext.sodalive.member.block.QBlockMember.blockMember import kr.co.vividnext.sodalive.member.following.QCreatorFollowing.creatorFollowing import kr.co.vividnext.sodalive.member.nickname.QNicknameChangeLog.nicknameChangeLog import kr.co.vividnext.sodalive.member.notification.QMemberNotification.memberNotification import kr.co.vividnext.sodalive.message.QMessage.message +import org.springframework.beans.factory.annotation.Value import org.springframework.data.jpa.repository.JpaRepository import org.springframework.stereotype.Repository @@ -54,12 +56,17 @@ interface MemberQueryRepository { fun getChangeNoticeRecipientPushTokens(creatorId: Long): Map>> fun getPushTokenFromReservationList(roomId: Long): Map>> + + fun getMemberProfile(memberId: Long, myMemberId: Long): GetMemberProfileResponse } @Repository class MemberQueryRepositoryImpl( private val queryFactory: JPAQueryFactory, - private val blockMemberRepository: BlockMemberRepository + private val blockMemberRepository: BlockMemberRepository, + + @Value("\${cloud.aws.cloud-front.host}") + private val cloudFrontHost: String ) : MemberQueryRepository { override fun findByPushToken(pushToken: String): List { return queryFactory @@ -415,4 +422,23 @@ class MemberQueryRepositoryImpl( return mapOf("aos" to aosPushTokens, "ios" to iosPushTokens) } + + override fun getMemberProfile(memberId: Long, myMemberId: Long): GetMemberProfileResponse { + return queryFactory + .select( + QGetMemberProfileResponse( + member.id, + member.profileImage.prepend("/").prepend(cloudFrontHost), + blockMember.id.isNotNull + ) + ) + .from(member) + .leftJoin(blockMember) + .on( + member.id.eq(blockMember.blockedMember.id) + .and(blockMember.isActive.isTrue) + .and(blockMember.member.id.eq(memberId)) + ) + .fetchFirst() + } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt index e658ba2..e1a96fc 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt @@ -622,6 +622,10 @@ class MemberService( ) } + fun getMemberProfile(memberId: Long, myMemberId: Long): GetMemberProfileResponse { + return repository.getMemberProfile(memberId, myMemberId) + } + private fun getOrCreateLock(memberId: Long): ReentrantReadWriteLock { return tokenLocks.computeIfAbsent(memberId) { ReentrantReadWriteLock() } } -- 2.40.1 From 307eea3ea203bd7459bb26b8094cf6d68e691f71 Mon Sep 17 00:00:00 2001 From: Klaus Date: Sat, 7 Sep 2024 00:24:47 +0900 Subject: [PATCH 5/7] =?UTF-8?q?=EB=8B=A4=EB=A5=B8=20=ED=9A=8C=EC=9B=90=20?= =?UTF-8?q?=ED=94=84=EB=A1=9C=ED=95=84=20=EC=A1=B0=ED=9A=8C=20API=20-=20?= =?UTF-8?q?=EB=8B=89=EB=84=A4=EC=9E=84=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kr/co/vividnext/sodalive/member/GetMemberProfileResponse.kt | 1 + .../kotlin/kr/co/vividnext/sodalive/member/MemberRepository.kt | 1 + 2 files changed, 2 insertions(+) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/GetMemberProfileResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/GetMemberProfileResponse.kt index dc4bbe8..196e6f7 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/GetMemberProfileResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/GetMemberProfileResponse.kt @@ -4,6 +4,7 @@ import com.querydsl.core.annotations.QueryProjection data class GetMemberProfileResponse @QueryProjection constructor( val memberId: Long, + val nickname: String, val profileImageUrl: String, val isBlocked: Boolean ) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberRepository.kt index 239f5ef..a302415 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberRepository.kt @@ -428,6 +428,7 @@ class MemberQueryRepositoryImpl( .select( QGetMemberProfileResponse( member.id, + member.nickname, member.profileImage.prepend("/").prepend(cloudFrontHost), blockMember.id.isNotNull ) -- 2.40.1 From 7f855bfc5695a80474c106b74c4935933058e48f Mon Sep 17 00:00:00 2001 From: Klaus Date: Sat, 7 Sep 2024 00:51:23 +0900 Subject: [PATCH 6/7] =?UTF-8?q?=EB=8B=A4=EB=A5=B8=20=ED=9A=8C=EC=9B=90=20?= =?UTF-8?q?=ED=94=84=EB=A1=9C=ED=95=84=20=EC=A1=B0=ED=9A=8C=20API=20-=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=ED=95=98=EB=A0=A4=EB=8A=94=20=ED=9A=8C?= =?UTF-8?q?=EC=9B=90=EC=9D=B4=20=EC=A0=95=EC=83=81=EC=A0=81=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EC=A1=B0=ED=9A=8C=EB=90=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EC=A1=B0=EA=B1=B4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kotlin/kr/co/vividnext/sodalive/member/MemberRepository.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberRepository.kt index a302415..57c9eca 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberRepository.kt @@ -438,8 +438,9 @@ class MemberQueryRepositoryImpl( .on( member.id.eq(blockMember.blockedMember.id) .and(blockMember.isActive.isTrue) - .and(blockMember.member.id.eq(memberId)) + .and(blockMember.member.id.eq(myMemberId)) ) + .where(member.id.eq(memberId)) .fetchFirst() } } -- 2.40.1 From 8e5b43a14ec98fccfce9771ea6ea1d9ebb7fdb1c Mon Sep 17 00:00:00 2001 From: Klaus Date: Sat, 7 Sep 2024 01:56:23 +0900 Subject: [PATCH 7/7] =?UTF-8?q?=EB=B6=88=ED=95=84=EC=9A=94=ED=95=9C=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../comment/AudioContentCommentController.kt | 1 - .../comment/AudioContentCommentRepository.kt | 17 ----------------- .../comment/AudioContentCommentService.kt | 2 -- .../GetAudioContentCommentListResponse.kt | 1 - 4 files changed, 21 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/comment/AudioContentCommentController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/comment/AudioContentCommentController.kt index bc0cfba..a68faa2 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/comment/AudioContentCommentController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/comment/AudioContentCommentController.kt @@ -74,7 +74,6 @@ class AudioContentCommentController(private val service: AudioContentCommentServ return ApiResponse.ok( service.getCommentReplyList( commentId = commentId, - memberId = member.id!!, timezone = timezone, pageable = pageable ) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/comment/AudioContentCommentRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/comment/AudioContentCommentRepository.kt index ecf14f0..eecd945 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/comment/AudioContentCommentRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/comment/AudioContentCommentRepository.kt @@ -5,7 +5,6 @@ import com.querydsl.jpa.impl.JPAQueryFactory import kr.co.vividnext.sodalive.content.QAudioContent.audioContent import kr.co.vividnext.sodalive.content.comment.QAudioContentComment.audioContentComment import kr.co.vividnext.sodalive.member.QMember.member -import kr.co.vividnext.sodalive.member.block.QBlockMember.blockMember import org.springframework.data.jpa.repository.JpaRepository import org.springframework.stereotype.Repository import java.time.LocalDateTime @@ -29,7 +28,6 @@ interface AudioContentCommentQueryRepository { fun getAudioContentCommentReplyList( cloudFrontHost: String, commentId: Long, - memberId: Long, timezone: String, offset: Long, limit: Int @@ -87,7 +85,6 @@ class AudioContentCommentQueryRepositoryImpl( audioContentComment.member.profileImage.prepend("/").prepend(cloudFrontHost), audioContentComment.comment, audioContentComment.isSecret, - blockMember.id.isNotNull, audioContentComment.donationCan.coalesce(0), formattedDate, Expressions.constant(0) @@ -96,12 +93,6 @@ class AudioContentCommentQueryRepositoryImpl( .from(audioContentComment) .innerJoin(audioContentComment.audioContent, audioContent) .innerJoin(audioContentComment.member, member) - .leftJoin(blockMember) - .on( - member.id.eq(blockMember.blockedMember.id) - .and(blockMember.isActive.isTrue) - .and(blockMember.member.id.eq(memberId)) - ) .where(where) .offset(offset) .limit(limit.toLong()) @@ -150,7 +141,6 @@ class AudioContentCommentQueryRepositoryImpl( override fun getAudioContentCommentReplyList( cloudFrontHost: String, commentId: Long, - memberId: Long, timezone: String, offset: Long, limit: Int @@ -176,7 +166,6 @@ class AudioContentCommentQueryRepositoryImpl( audioContentComment.member.profileImage.prepend("/").prepend(cloudFrontHost), audioContentComment.comment, audioContentComment.isSecret, - blockMember.id.isNotNull, audioContentComment.donationCan.coalesce(0), formattedDate, Expressions.constant(0) @@ -184,12 +173,6 @@ class AudioContentCommentQueryRepositoryImpl( ) .from(audioContentComment) .innerJoin(audioContentComment.member, member) - .leftJoin(blockMember) - .on( - member.id.eq(blockMember.blockedMember.id) - .and(blockMember.isActive.isTrue) - .and(blockMember.member.id.eq(memberId)) - ) .where( audioContentComment.parent.isNotNull .and(audioContentComment.parent.id.eq(commentId)) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/comment/AudioContentCommentService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/comment/AudioContentCommentService.kt index f6e8e8c..9d885c1 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/comment/AudioContentCommentService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/comment/AudioContentCommentService.kt @@ -134,14 +134,12 @@ class AudioContentCommentService( fun getCommentReplyList( commentId: Long, - memberId: Long, timezone: String, pageable: Pageable ): GetAudioContentCommentListResponse { val commentList = repository.getAudioContentCommentReplyList( cloudFrontHost = cloudFrontHost, commentId = commentId, - memberId = memberId, timezone = timezone, offset = pageable.offset, limit = pageable.pageSize diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/comment/GetAudioContentCommentListResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/comment/GetAudioContentCommentListResponse.kt index 80d6af9..37bd46a 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/comment/GetAudioContentCommentListResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/comment/GetAudioContentCommentListResponse.kt @@ -14,7 +14,6 @@ data class GetAudioContentCommentListItem @QueryProjection constructor( val profileUrl: String, val comment: String, val isSecret: Boolean, - val isWriterBlock: Boolean, val donationCan: Int, val date: String, var replyCount: Int = 0 -- 2.40.1