Skip to content

Commit

Permalink
Merge pull request #108 from team-winey/dev
Browse files Browse the repository at this point in the history
merge to main
  • Loading branch information
sss4920 authored Aug 11, 2023
2 parents 9ca33b7 + 2693796 commit dda2aac
Show file tree
Hide file tree
Showing 7 changed files with 105 additions and 8 deletions.
7 changes: 7 additions & 0 deletions src/main/java/org/winey/server/controller/FeedController.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import org.winey.server.controller.request.CreateFeedRequestDto;
import org.winey.server.controller.response.feed.CreateFeedResponseDto;
import org.winey.server.controller.response.feed.GetAllFeedResponseDto;
import org.winey.server.controller.response.feed.GetFeedDetailResponseDto;
import org.winey.server.exception.Error;
import org.winey.server.exception.Success;
import org.winey.server.external.client.aws.S3Service;
Expand Down Expand Up @@ -75,4 +76,10 @@ public ApiResponse<GetAllFeedResponseDto> getMyFeed(@RequestParam int page, @Use
return ApiResponse.error(Error.PAGE_REQUEST_VALIDATION_EXCEPTION, Error.PAGE_REQUEST_VALIDATION_EXCEPTION.getMessage());
return ApiResponse.success(Success.GET_MYFEED_SUCCESS, feedService.getMyFeed(page, userId));
}
@GetMapping(value = "/{feedId}")
@ResponseStatus(HttpStatus.OK)
@Operation(summary = "ํ”ผ๋“œ detail ์กฐํšŒ API", description = "ํ”ผ๋“œ detail์„ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.")
public ApiResponse<GetFeedDetailResponseDto> getFeedDetail(@UserId Long userId, @PathVariable Long feedId) {
return ApiResponse.success(Success.GET_DETAIL_SUCCESS, feedService.getFeedDetail(feedId, userId));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package org.winey.server.controller.response.comment;

import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.winey.server.domain.user.User;

import java.time.LocalDate;
import java.time.LocalDateTime;

@Getter
@NoArgsConstructor(access = AccessLevel.PRIVATE)
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public class GetCommentResponseDto {
private Long commentId;
private String author;
private String content;
private int authorLevel;
private LocalDateTime createdAt;

public static GetCommentResponseDto of(Long commentId,String author, String content, int authorLevel, LocalDateTime createdAt) {
return new GetCommentResponseDto(commentId, author, content, authorLevel, createdAt);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package org.winey.server.controller.response.feed;

import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.winey.server.controller.response.PageResponseDto;
import org.winey.server.controller.response.comment.CreateCommentResponseDto;
import org.winey.server.controller.response.comment.GetCommentResponseDto;

import java.util.List;

@Getter
@NoArgsConstructor(access = AccessLevel.PRIVATE)
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public class GetFeedDetailResponseDto {

private GetFeedResponseDto getFeedResponseDto;
private List<GetCommentResponseDto> getCommentResponseList;

public static GetFeedDetailResponseDto of(GetFeedResponseDto getFeedResponseDto, List<GetCommentResponseDto> getCommentResponseList) {
return new GetFeedDetailResponseDto(getFeedResponseDto,getCommentResponseList);
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,11 @@ public class GetFeedResponseDto {
private Long feedMoney;
private Boolean isLiked;
private Long likes;
private LocalDate createdAt;
private LocalDateTime createdAt;


public static GetFeedResponseDto of(Long feedId,Long userId, String nickName, int writerLevel,String feedTitle, String feedImage,
Long feedMoney, Boolean isLiked, Long likes, LocalDate createdAt){
Long feedMoney, Boolean isLiked, Long likes, LocalDateTime createdAt){
return new GetFeedResponseDto(feedId,userId,nickName,writerLevel, feedTitle, feedImage, feedMoney, isLiked, likes, createdAt);
}
}
2 changes: 2 additions & 0 deletions src/main/java/org/winey/server/exception/Success.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ public enum Success {
GET_USER_SUCCESS(HttpStatus.OK, "์œ ์ € ์กฐํšŒ ์„ฑ๊ณต"),
GET_MYFEED_SUCCESS(HttpStatus.OK, "๋งˆ์ด ํ”ผ๋“œ ์กฐํšŒ ์„ฑ๊ณต"),

GET_DETAIL_SUCCESS(HttpStatus.OK, "ํ”ผ๋“œ ๋””ํ…Œ์ผ ํŽ˜์ด์ง€ ์กฐํšŒ ์„ฑ๊ณต"),

RE_ISSUE_TOKEN_SUCCESS(HttpStatus.OK, "ํ† ํฐ ์žฌ๋ฐœ๊ธ‰ ์„ฑ๊ณต"),
UPDATE_NICKNAME_SUCCESS(HttpStatus.OK, "๋‹‰๋„ค์ž„ ๋ณ€๊ฒฝ ์„ฑ๊ณต"),
CHECK_NICKNAME_DUPLICATE_SUCCESS(HttpStatus.OK, "๋‹‰๋„ค์ž„ ์ค‘๋ณต ํ™•์ธ ์„ฑ๊ณต"),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
package org.winey.server.infrastructure;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.repository.Repository;
import org.winey.server.domain.comment.Comment;
import org.winey.server.domain.feed.Feed;
import org.winey.server.domain.feed.FeedLike;
import org.winey.server.domain.user.User;

import java.util.List;
import java.util.Optional;

public interface CommentRepository extends Repository<Comment,Long> {
Expand All @@ -16,5 +20,7 @@ public interface CommentRepository extends Repository<Comment,Long> {

Long deleteByCommentId(Long commentId);

List<Comment> findAllByFeedOrderByCreatedAtDesc(Feed feed);


}
44 changes: 38 additions & 6 deletions src/main/java/org/winey/server/service/FeedService.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,11 @@
import org.winey.server.common.dto.ApiResponse;
import org.winey.server.controller.request.CreateFeedRequestDto;
import org.winey.server.controller.response.PageResponseDto;
import org.winey.server.controller.response.comment.CreateCommentResponseDto;
import org.winey.server.controller.response.comment.GetCommentResponseDto;
import org.winey.server.controller.response.feed.*;
import org.winey.server.controller.response.recommend.RecommendResponseDto;
import org.winey.server.domain.comment.Comment;
import org.winey.server.domain.feed.Feed;
import org.winey.server.domain.goal.Goal;
import org.winey.server.domain.user.User;
Expand All @@ -19,10 +22,7 @@
import org.winey.server.exception.model.ForbiddenException;
import org.winey.server.exception.model.NotFoundException;
import org.winey.server.exception.model.UnauthorizedException;
import org.winey.server.infrastructure.FeedLikeRepository;
import org.winey.server.infrastructure.FeedRepository;
import org.winey.server.infrastructure.GoalRepository;
import org.winey.server.infrastructure.UserRepository;
import org.winey.server.infrastructure.*;

import java.time.LocalDate;
import java.util.List;
Expand All @@ -36,6 +36,7 @@ public class FeedService {

private final GoalRepository goalRepository;
private final FeedLikeRepository feedLikeRepository;
private final CommentRepository commentRepository;

@Transactional
public CreateFeedResponseDto createFeed(CreateFeedRequestDto request, Long userId, String imageUrl) {
Expand Down Expand Up @@ -119,7 +120,7 @@ public GetAllFeedResponseDto getAllFeed(int page, Long userId) {
feed.getFeedMoney(),
feedLikeRepository.existsByFeedAndUser(feed, user), //ํ˜„์žฌ ์ ‘์†ํ•œ ์œ ์ €๊ฐ€ ์ข‹์•„์š” ๋ˆŒ๋ €๋Š”์ง€
(long) feedLikeRepository.countByFeed(feed), //ํ•ด๋‹น ํ”ผ๋“œ์˜ ์ข‹์•„์š” ๊ฐœ์ˆ˜ ์„ธ๊ธฐ.
feed.getCreatedAt().toLocalDate() //ํ•ด๋‹น ํ”ผ๋“œ ๋งŒ๋“  ๋‚ ์งœ localdate๋กœ ๋ฐ”๊ฟ”์„œ ์ฃผ๊ธฐ.
feed.getCreatedAt() //ํ•ด๋‹น ํ”ผ๋“œ ๋งŒ๋“  ๋‚ ์งœ localdate๋กœ ๋ฐ”๊ฟ”์„œ ์ฃผ๊ธฐ.
)).collect(Collectors.toList());
return GetAllFeedResponseDto.of(pageInfo, feeds);
}
Expand All @@ -141,9 +142,40 @@ public GetAllFeedResponseDto getMyFeed(int page, Long userId) {
myFeed.getFeedMoney(),
feedLikeRepository.existsByFeedAndUser(myFeed, myUser), //ํ˜„์žฌ ์ ‘์†ํ•œ ์œ ์ €๊ฐ€ ์ข‹์•„์š” ๋ˆŒ๋ €๋Š”์ง€
(long) feedLikeRepository.countByFeed(myFeed), //ํ•ด๋‹น ํ”ผ๋“œ์˜ ์ข‹์•„์š” ๊ฐœ์ˆ˜ ์„ธ๊ธฐ.
myFeed.getCreatedAt().toLocalDate() //ํ•ด๋‹น ํ”ผ๋“œ ๋งŒ๋“  ๋‚ ์งœ localdate๋กœ ๋ฐ”๊ฟ”์„œ ์ฃผ๊ธฐ.
myFeed.getCreatedAt() //ํ•ด๋‹น ํ”ผ๋“œ ๋งŒ๋“  ๋‚ ์งœ localdate๋กœ ๋ฐ”๊ฟ”์„œ ์ฃผ๊ธฐ.
)).collect(Collectors.toList());
return GetAllFeedResponseDto.of(pageInfo, feeds);
}

@Transactional(readOnly = true)
public GetFeedDetailResponseDto getFeedDetail(Long feedId, Long userId) {
Feed detailFeed = feedRepository.findByFeedId(feedId)
.orElseThrow(() -> new NotFoundException(Error.NOT_FOUND_FEED_EXCEPTION, Error.NOT_FOUND_FEED_EXCEPTION.getMessage()));
User connectedUser = userRepository.findByUserId(userId)
.orElseThrow(() -> new NotFoundException(Error.NOT_FOUND_USER_EXCEPTION, Error.NOT_FOUND_USER_EXCEPTION.getMessage()));
List<GetCommentResponseDto> comments = commentRepository.findAllByFeedOrderByCreatedAtDesc(detailFeed)
.stream().map(comment -> GetCommentResponseDto.of(
comment.getCommentId(),
comment.getUser().getNickname(),
comment.getContent(),
comment.getUser().getUserLevel().getLevelNumber(),
comment.getCreatedAt()
)).collect(Collectors.toList());

GetFeedResponseDto detailResponse = GetFeedResponseDto.of(
detailFeed.getFeedId(),
detailFeed.getUser().getUserId(),
detailFeed.getUser().getNickname(),
detailFeed.getUser().getUserLevel().getLevelNumber(),
detailFeed.getFeedTitle(),
detailFeed.getFeedImage(),
detailFeed.getFeedMoney(),
feedLikeRepository.existsByFeedAndUser(detailFeed, connectedUser), //ํ˜„์žฌ ์ ‘์†ํ•œ ์œ ์ €๊ฐ€ detail feed์— ์ข‹์•„์š” ๋ˆŒ๋ €๋Š”์ง€
(long) feedLikeRepository.countByFeed(detailFeed), //ํ•ด๋‹น ํ”ผ๋“œ์˜ ์ข‹์•„์š” ๊ฐœ์ˆ˜ ์„ธ๊ธฐ.
detailFeed.getCreatedAt() //ํ•ด๋‹น ํ”ผ๋“œ ๋งŒ๋“  ๋‚ ์งœ localdate๋กœ ๋ฐ”๊ฟ”์„œ ์ฃผ๊ธฐ.
);

return GetFeedDetailResponseDto.of(detailResponse, comments);

}
}

0 comments on commit dda2aac

Please sign in to comment.