Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,8 @@ public void executePayment(Member buyer, PencilAccount buyerAccount, PencilAccou
}

private AcquiredPencil createAcquiredPencil(Long sharedNoteId, Member seller, Long price, AcquiredType type) {
return AcquiredPencil.create(seller, "", sharedNoteId, price, false, type);
String content = "노트 공유 완료!";
return AcquiredPencil.create(seller, content, sharedNoteId, price, false, type);
}

private void consumePurchasedPencils(Member buyer, long unpaidPencil) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import org.springframework.stereotype.Component;

import lombok.RequiredArgsConstructor;
import umc.th.juinjang.api.pencil.service.response.AcquiredPencilResponse;
import umc.th.juinjang.domain.member.model.Member;
import umc.th.juinjang.domain.pencil.acquired.model.AcquiredPencil;
import umc.th.juinjang.domain.pencil.acquired.repository.AcquiredPencilRepository;
Expand All @@ -15,8 +16,8 @@ public class AcquiredPencilFinder {

private final AcquiredPencilRepository acquiredPencilRepository;

public List<AcquiredPencil> findAllByMemberOrderByCreatedAtDesc(Member member) {
return acquiredPencilRepository.findAllByMemberOrderByCreatedAtDesc(member);
public List<AcquiredPencilResponse> findAllByMemberOrderByCreatedAtDesc(Member member) {
return acquiredPencilRepository.findAllByMemberWithBuildingNameOrderByCreatedAtDesc(member);
}

public boolean existsByMemberAndIsReadFalse(Member member) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
import umc.th.juinjang.api.pencilAccount.service.PencilAccountFinder;
import umc.th.juinjang.common.exception.handler.PencilAccountHandler;
import umc.th.juinjang.domain.member.model.Member;
import umc.th.juinjang.domain.pencil.acquired.model.AcquiredPencil;
import umc.th.juinjang.domain.pencil.purchased.model.PurchasedPencil;
import umc.th.juinjang.domain.pencil.used.model.UsedPencil;
import umc.th.juinjang.domain.pencilaccount.model.PencilAccount;
Expand All @@ -42,10 +41,7 @@ public class PencilQueryService {
private final PencilAccountFinder pencilAccountFinder;

public List<AcquiredPencilResponse> getAcquiredPencils(Member member) {
List<AcquiredPencil> acquiredPencils = acquiredPencilFinder.findAllByMemberOrderByCreatedAtDesc(member);
return acquiredPencils.stream()
.map(AcquiredPencilResponse::from)
.toList();
return acquiredPencilFinder.findAllByMemberOrderByCreatedAtDesc(member);
}

public List<PurchasedPencilResponse> getPurchasedPencils(Member member) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

import lombok.Builder;
import lombok.Getter;
import umc.th.juinjang.domain.pencil.acquired.model.AcquiredPencil;
import umc.th.juinjang.domain.pencil.acquired.model.AcquiredType;

@Getter
public class AcquiredPencilResponse {
Expand All @@ -13,31 +13,34 @@ public class AcquiredPencilResponse {
private final String content;
private final Long sharedNoteId;
private final Long acquiredQuantity;
private final String buildingName;
private final boolean isRead;
private final String type;
private final LocalDateTime createdAt;

@Builder
public AcquiredPencilResponse(Long acquiredPencilId, String content, Long sharedNoteId, Long acquiredQuantity,
boolean isRead, String type, LocalDateTime createdAt) {
String buildingName, boolean isRead, String type, LocalDateTime createdAt) {
this.acquiredPencilId = acquiredPencilId;
this.content = content;
this.sharedNoteId = sharedNoteId;
this.acquiredQuantity = acquiredQuantity;
this.buildingName = buildingName;
this.isRead = isRead;
this.type = type;
this.createdAt = createdAt;
}

public static AcquiredPencilResponse from(AcquiredPencil acquiredPencil) {
return AcquiredPencilResponse.builder()
.acquiredPencilId(acquiredPencil.getId())
.content(acquiredPencil.getContent())
.sharedNoteId(acquiredPencil.getSharedNoteId())
.acquiredQuantity(acquiredPencil.getAcquiredQuantity())
.isRead(acquiredPencil.isRead())
.type(acquiredPencil.getType().name())
.createdAt(acquiredPencil.getCreatedAt())
.build();
public AcquiredPencilResponse(Long acquiredPencilId, String content, Long sharedNoteId,
Long acquiredQuantity, boolean isRead, AcquiredType type,
LocalDateTime createdAt, String buildingName) {
this.acquiredPencilId = acquiredPencilId;
this.content = content;
this.sharedNoteId = sharedNoteId;
this.acquiredQuantity = acquiredQuantity;
this.isRead = isRead;
this.type = type.name();
this.createdAt = createdAt;
this.buildingName = buildingName;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,25 @@
import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import umc.th.juinjang.api.pencil.service.response.AcquiredPencilResponse;
import umc.th.juinjang.domain.member.model.Member;
import umc.th.juinjang.domain.pencil.acquired.model.AcquiredPencil;

public interface AcquiredPencilRepository extends JpaRepository<AcquiredPencil, Long> {
List<AcquiredPencil> findAllByMemberOrderByCreatedAtDesc(Member member);

@Query("SELECT new umc.th.juinjang.api.pencil.service.response.AcquiredPencilResponse(" +
"ap.id, ap.content, ap.sharedNoteId, ap.acquiredQuantity, " +
"ap.isRead, ap.type, ap.createdAt, sn.buildingName) " +
"FROM AcquiredPencil ap " +
"LEFT JOIN SharedNote sn ON ap.sharedNoteId = sn.sharedNoteId " +
"WHERE ap.member = :member " +
"ORDER BY ap.createdAt DESC")
List<AcquiredPencilResponse> findAllByMemberWithBuildingNameOrderByCreatedAtDesc(@Param("member") Member member);

boolean existsByMemberAndIsReadFalse(Member member);

boolean existsByMember(Member member);
}