자바가 모잘라서 자바 공부를 합니다.

사실 서버 배포도 공부해야하는데 자바를 모르는게 더 시급하다고 생각해서 자바의 정석을 들었습니다. 

Map, List, Set, Stream 등등 이번주는 컬렉션 프레임웍 뽀개기를 할겁니다.

그다음에 Spring 강의도 들어야겠습니다.

 

오늘은 전체 코드를 refactoring을 하고 발표자료를 만들었습니다. 다들 엄청 잘하셔서 든든합니다.

 

데이터에 좋아요 수를 넣어서 보내주는 것으로 변경했습니다.

자바가 뭐양

 

좋아요 true/false 와 좋아요 수 반환

 

@Service

@Transactional
public LikePostResponseDto likePost(Long postId, User user) {
    Post post = postRepository.findById(postId).orElseThrow(
            () -> new CustomException(ErrorCode.CONTENT_NOT_FOUND)
    );
    Long userId = user.getId();

    boolean likeCheck;

    Optional <LikePost> likePost = likePostRepository.findByPostIdAndUserId(postId, userId);

    if (likePost.isPresent()) {
        LikePost like = likePost.get();
        likePostRepository.delete(like);
        post.setLikeCount(post.getLikeCount()-1);

        likeCheck = false;

    } else{
        LikePost like = new LikePost(postId, userId);
        likePostRepository.save(like);
        post.setLikeCount(post.getLikeCount()+1);
        likeCheck = true;
    }


    return new LikePostResponseDto(likeCheck, post.getLikeCount());
}
  • boolean 으로 true/ false 만 반환했었는데 LikeCount도 같이 LikePostResponseDto에 넣어주었습니다.

 

@Controller

@ApiOperation(value = "게시글 좋아요")
@PostMapping("/post/{postId}")
public ResponseEntity<ResponseMessage> likePost(@PathVariable Long postId, @ApiIgnore @AuthenticationPrincipal UserDetailsImpl userDetails){

    LikePostResponseDto likePostResponseDto = likeService.likePost(postId, userDetails.getUser());

    ResponseMessage<LikePostResponseDto> responseMessage = new ResponseMessage<>("게시글 좋아요 성공", 200, likePostResponseDto);

    return new ResponseEntity<>(responseMessage, HttpStatus.valueOf(responseMessage.getStatusCode()));
}
  • LikePostResponseDto 의 parameter를 추가해줘서 프론트에서 요청한 '좋아요했는지 여부 true/false'와 좋아요 갯수'LikeCount' 를 반환합니다.

 

LikePostResponseDto

@Getter
@Setter
@NoArgsConstructor
public class LikePostResponseDto {
    private boolean postLiked;

    private Long likeCount;


    public LikePostResponseDto(boolean postLiked, Long likeCount) {
        this.postLiked = postLiked;
        this.likeCount = likeCount;
    }
}

 

  • 좋아요 갯수를 담을 Long likeCount와 좋아요 여부를 확인할 boolean postLiked를 넣어줬습니다.
  • 댓글 좋아요도 마찬가지로 진행했습니다.

 

 

 

+ Recent posts