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 @@ -26,10 +26,11 @@ public record PostCollaborationResponse(
Long saveCount,
Long viewCount,
Long totalQuantity,
Long occupiedQuantity
Long occupiedQuantity,
boolean isSavedPost
) {
public static PostCollaborationResponse from(CollaborationHub collaborationHub, Long saveCount,
Long totalQuantity, Long occupiedQuantity) {
Long totalQuantity, Long occupiedQuantity, boolean isSavedPost) {
return new PostCollaborationResponse(
collaborationHub.getId(),
collaborationHub.getPostAuth(),
Expand All @@ -42,7 +43,8 @@ public static PostCollaborationResponse from(CollaborationHub collaborationHub,
saveCount,
collaborationHub.getViewCount(),
totalQuantity,
occupiedQuantity
occupiedQuantity,
isSavedPost
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,10 @@ public record PostIdeaMarketResponse(
Long price,
Specialization specialization,
Long saveCount,
Long viewCount
Long viewCount,
boolean isSavedPost
) {
public static PostIdeaMarketResponse from(IdeaMarket ideaMarket, Long saveCount) {
public static PostIdeaMarketResponse from(IdeaMarket ideaMarket, Long saveCount, boolean isSavedPost) {
return new PostIdeaMarketResponse(
ideaMarket.getId(),
ideaMarket.getPostAuth(),
Expand All @@ -27,7 +28,8 @@ public static PostIdeaMarketResponse from(IdeaMarket ideaMarket, Long saveCount)
ideaMarket.getPrice().getPrice(),
ideaMarket.getSpecialization(),
saveCount,
ideaMarket.getViewCount()
ideaMarket.getViewCount(),
isSavedPost
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,10 @@ public record PostRequestTaskResponse(
LocalDateTime deadline,
Specialization specialization,
Long saveCount,
Long viewCount
Long viewCount,
boolean isSavedPost
) {
public static PostRequestTaskResponse from(RequestTask requestTask, Long saveCount) {
public static PostRequestTaskResponse from(RequestTask requestTask, Long saveCount, boolean isSavedPost) {
return new PostRequestTaskResponse(
requestTask.getId(),
requestTask.getPostAuth(),
Expand All @@ -37,7 +38,8 @@ public static PostRequestTaskResponse from(RequestTask requestTask, Long saveCou
requestTask.getDeadline(),
requestTask.getSpecialization(),
saveCount,
requestTask.getViewCount()
requestTask.getViewCount(),
isSavedPost
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,6 @@ public interface SavedPostRepository extends JpaRepository<SavedPost, Long>, Sav
Optional<SavedPost> findByUserAndPost(User user, Post post);

boolean existsByUserAndPost(User user, Post post);

boolean existsByUserIdAndPostId(Long userId, Long postId);
}
9 changes: 6 additions & 3 deletions src/main/java/com/brainpix/post/service/SavedPostService.java
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,8 @@ public Page<PostRequestTaskResponse> findSavedRequestTasks(long userId, Pageable
.map(savedPost -> {
RequestTask requestTask = (RequestTask)savedPost.getPost();
Long saveCount = savedPostRepository.countByPostId(requestTask.getId());
return PostRequestTaskResponse.from(requestTask, saveCount);
boolean isSavedPost = savedPostRepository.existsByUserIdAndPostId(userId, requestTask.getId());
return PostRequestTaskResponse.from(requestTask, saveCount, isSavedPost);
});
}

Expand All @@ -77,7 +78,8 @@ public Page<PostIdeaMarketResponse> findSavedIdeaMarkets(long userId, Pageable p
.map(savedPost -> {
IdeaMarket ideaMarket = (IdeaMarket)savedPost.getPost();
Long saveCount = savedPostRepository.countByPostId(ideaMarket.getId());
return PostIdeaMarketResponse.from(ideaMarket, saveCount);
boolean isSavedPost = savedPostRepository.existsByUserIdAndPostId(userId, ideaMarket.getId());
return PostIdeaMarketResponse.from(ideaMarket, saveCount, isSavedPost);
});
}

Expand All @@ -89,13 +91,14 @@ public Page<PostCollaborationResponse> findSavedCollaborationHubs(long userId, P
.map(savedPost -> {
CollaborationHub collaborationHub = (CollaborationHub)savedPost.getPost();
Long saveCount = savedPostRepository.countByPostId(collaborationHub.getId());
boolean isSavedPost = savedPostRepository.existsByUserIdAndPostId(userId, collaborationHub.getId());

// 엔티티 메서드를 호출하여 모집 데이터의 합산 계산
long totalQuantity = collaborationHub.getTotalQuantity();
long occupiedQuantity = collaborationHub.getOccupiedQuantity();

return PostCollaborationResponse.from(collaborationHub, saveCount, totalQuantity,
occupiedQuantity);
occupiedQuantity, isSavedPost);
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,11 @@ public Page<PostCollaborationResponse> findCollaborationPosts(long userId, Pagea
return collaborationHubRepository.findByWriter(writer, pageable)
.map(collaborationHub -> {
Long saveCount = savedPostRepository.countByPostId(collaborationHub.getId());
boolean isSavedPost = savedPostRepository.existsByUserIdAndPostId(userId, collaborationHub.getId());
long totalQuantity = collaborationHub.getTotalQuantity();
long occupiedQuantity = collaborationHub.getOccupiedQuantity();
return PostCollaborationResponse.from(collaborationHub, saveCount, totalQuantity, occupiedQuantity);
return PostCollaborationResponse.from(collaborationHub, saveCount, totalQuantity, occupiedQuantity,
isSavedPost);
});
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ public Page<PostIdeaMarketResponse> findIdeaMarketPosts(long userId, Pageable pa
return ideaMarketRepository.findByWriter(writer, pageable)
.map(ideaMarket -> {
Long saveCount = savedPostRepository.countByPostId(ideaMarket.getId());
return PostIdeaMarketResponse.from(ideaMarket, saveCount);
boolean isSavedPost = savedPostRepository.existsByUserIdAndPostId(userId, ideaMarket.getId());
return PostIdeaMarketResponse.from(ideaMarket, saveCount, isSavedPost);
});
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@ public Page<PostRequestTaskResponse> findReqeustTaskPosts(long userId, Pageable
return requestTaskRepository.findByWriter(writer, pageable)
.map(requestTask -> {
Long saveCount = savedPostRepository.countByPostId(requestTask.getId());
return PostRequestTaskResponse.from(requestTask, saveCount);
boolean isSavedPost = savedPostRepository.existsByUserIdAndPostId(userId, requestTask.getId());
return PostRequestTaskResponse.from(requestTask, saveCount, isSavedPost);
});
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import com.brainpix.profile.dto.PublicProfileResponseDto;
import com.brainpix.profile.service.PublicProfileService;
import com.brainpix.security.authorization.AllUser;
import com.brainpix.security.authorization.UserId;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
Expand Down Expand Up @@ -59,9 +60,10 @@ public ResponseEntity<ApiResponse<CompanyProfileResponseDto>> getPublicCompanyPr
@SwaggerPageable
public ResponseEntity<ApiResponse<CommonPageResponse<PublicProfileResponseDto.PostPreviewDto>>> getPostsByUser(
@PathVariable Long userId,
@UserId Long currentUserId,
@PageableDefault(sort = "createdAt", direction = Sort.Direction.DESC) Pageable pageable) {
CommonPageResponse<PublicProfileResponseDto.PostPreviewDto> pageResponse =
CommonPageResponse.of(publicProfileService.getPostsByUser(userId, pageable));
CommonPageResponse.of(publicProfileService.getPostsByUser(userId, currentUserId, pageable));
return ResponseEntity.ok(ApiResponse.success(pageResponse));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ public class ProfilePostConverter {
/**
* 요청 과제 미리보기용 DTO 변환
*/
public PublicProfileResponseDto.PostPreviewDto toRequestTaskPreviewDto(RequestTask task, long savedCount) {
public PublicProfileResponseDto.PostPreviewDto toRequestTaskPreviewDto(RequestTask task, long savedCount,
boolean isSavePost) {
String openScope = parseOpenScope(task.getPostAuth());

return PublicProfileResponseDto.PostPreviewDto.builder()
Expand All @@ -27,13 +28,15 @@ public PublicProfileResponseDto.PostPreviewDto toRequestTaskPreviewDto(RequestTa
.deadline(task.getDeadline())
.thumbnailImage(task.getFirstImage())
.writerImageUrl(task.getWriter().getProfileImage())
.isSavedPost(isSavePost)
.build();
}

/**
* 아이디어 마켓 미리보기용 DTO 변환
*/
public PublicProfileResponseDto.PostPreviewDto toIdeaMarketPreviewDto(IdeaMarket market, long savedCount) {
public PublicProfileResponseDto.PostPreviewDto toIdeaMarketPreviewDto(IdeaMarket market, long savedCount,
boolean isSavePost) {
String openScope = parseOpenScope(market.getPostAuth());

return PublicProfileResponseDto.PostPreviewDto.builder()
Expand All @@ -47,13 +50,15 @@ public PublicProfileResponseDto.PostPreviewDto toIdeaMarketPreviewDto(IdeaMarket
.thumbnailImage(market.getFirstImage())
.writerImageUrl(market.getWriter().getProfileImage())
.price(market.getPrice().getPrice())
.isSavedPost(isSavePost)
.build();
}

/**
* 협업 광장 미리보기용 DTO 변환
*/
public PublicProfileResponseDto.PostPreviewDto toCollaborationHubPreviewDto(CollaborationHub hub, long savedCount) {
public PublicProfileResponseDto.PostPreviewDto toCollaborationHubPreviewDto(CollaborationHub hub, long savedCount,
boolean isSavePost) {
long currentMembers = hub.getOccupiedQuantity();
long totalMembers = hub.getTotalQuantity();
String openScope = parseOpenScope(hub.getPostAuth());
Expand All @@ -71,6 +76,7 @@ public PublicProfileResponseDto.PostPreviewDto toCollaborationHubPreviewDto(Coll
.currentMembers(currentMembers)
.totalMembers(totalMembers)
.writerImageUrl(hub.getWriter().getProfileImage())
.isSavedPost(isSavePost)
.build();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ public static class PostPreviewDto {
private Long price; // (아이디어 마켓 전용)
private Long currentMembers; // (협업 광장 전용)
private Long totalMembers; // (협업 광장 전용)
private boolean isSavedPost;

}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,20 +105,22 @@ public CompanyProfileResponseDto getPublicCompanyProfile(Long userId) {
.build();
}

public Page<PublicProfileResponseDto.PostPreviewDto> getPostsByUser(Long userId, Pageable pageable) {
public Page<PublicProfileResponseDto.PostPreviewDto> getPostsByUser(Long userId, Long currentUserId,
Pageable pageable) {
User user = userRepository.findById(userId)
.orElseThrow(() -> new BrainPixException(
com.brainpix.api.code.error.CommonErrorCode.RESOURCE_NOT_FOUND));

return postRepository.findByWriter(user, pageable)
.map(post -> {
long savedCount = savedPostRepository.countByPostId(post.getId());
boolean isSavedPost = savedPostRepository.existsByUserIdAndPostId(currentUserId, post.getId());
if (post instanceof RequestTask) {
return postConverter.toRequestTaskPreviewDto((RequestTask)post, savedCount);
return postConverter.toRequestTaskPreviewDto((RequestTask)post, savedCount, isSavedPost);
} else if (post instanceof IdeaMarket) {
return postConverter.toIdeaMarketPreviewDto((IdeaMarket)post, savedCount);
return postConverter.toIdeaMarketPreviewDto((IdeaMarket)post, savedCount, isSavedPost);
} else if (post instanceof CollaborationHub) {
return postConverter.toCollaborationHubPreviewDto((CollaborationHub)post, savedCount);
return postConverter.toCollaborationHubPreviewDto((CollaborationHub)post, savedCount, isSavedPost);
}
throw new BrainPixException(CommonErrorCode.RESOURCE_NOT_FOUND);
});
Expand Down