diff --git a/README.md b/README.md index 785e0e2..f2389da 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ -## 게시판 만들기 -- 혼자 공부하면서 백엔드 개발 중 -- 차츰차츰 여러 기능을 추가하고 있는중 +# 프로젝트 + +- 개인 프로젝트 +- spring으로 게시판 만들기 +- 새로운 기술 적용해 계속 발전시키는 중 diff --git a/src/main/java/com/kms/springboard/like/controller/LikeController.java b/src/main/java/com/kms/springboard/like/controller/LikeController.java index e9be0e0..cef457d 100644 --- a/src/main/java/com/kms/springboard/like/controller/LikeController.java +++ b/src/main/java/com/kms/springboard/like/controller/LikeController.java @@ -8,48 +8,45 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; -import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.security.authentication.AnonymousAuthenticationToken; import org.springframework.security.core.Authentication; import org.springframework.web.bind.annotation.*; @RestController @RequiredArgsConstructor -@RequestMapping("/api/boards/{boardId}") +@RequestMapping("/api/boards") public class LikeController { private final LikeService likeService; - @PostMapping("/like") + @PostMapping("/{boardId}/like") public ResponseEntity> like( @PathVariable Long boardId, Authentication auth){ - - String userId = auth.getName(); - boolean isLiked = likeService.isLikeByUserId(boardId, userId); - String message = isLiked ? "좋아요 누름" : "좋아요 취소"; - + boolean isliked = likeService.toggleLike(boardId, userId); + + String message; + if(isliked){ + message = "좋아요를 눌렀습니다."; + }else{ + message = "좋아요를 취소했습니다."; + } return ResponseEntity.ok(ApiResponse.success(message,null)); } - @GetMapping("/like/count") + @GetMapping("/{boardId}/like/count") public ResponseEntity> getLikeCount( @PathVariable Long boardId){ - Long likeCount = likeService.getLikeCount(boardId); return ResponseEntity.ok(ApiResponse.success("좋아요 개수 조회", likeCount)); } - @GetMapping("/like/users") + @GetMapping("/like/{boardId}") public ResponseEntity>> getLikeUsers( @PathVariable Long boardId, @RequestParam(defaultValue = "0") int page, - @RequestParam(defaultValue = "20")int size, - Authentication auth){ - - + @RequestParam(defaultValue = "20")int size){ Pageable pageable = PageRequest.of(page, size); Page users = likeService.getLikeUsers(boardId, pageable); @@ -57,5 +54,18 @@ public ResponseEntity>> getLikeUsers( } + @GetMapping("/like/{userId}") + public ResponseEntity>> getLikeBoards( + @PathVariable String userId, + @RequestParam(defaultValue = "0") int page, + @RequestParam(defaultValue = "20") int size){ + Pageable pageable = PageRequest.of(page, size); + Page userLikeBoards = likeService.getUserLikeBoards(userId, pageable); + + return ResponseEntity.ok(ApiResponse.success("사용자가 좋아요 누른 게시글", userLikeBoards)); + } + + + } diff --git a/src/main/java/com/kms/springboard/like/repository/LikeRepository.java b/src/main/java/com/kms/springboard/like/repository/LikeRepository.java index 2dab543..182fdc2 100644 --- a/src/main/java/com/kms/springboard/like/repository/LikeRepository.java +++ b/src/main/java/com/kms/springboard/like/repository/LikeRepository.java @@ -2,6 +2,7 @@ import com.kms.springboard.like.entity.LikeEntity; +import java.util.Optional; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/src/main/java/com/kms/springboard/like/service/LikeService.java b/src/main/java/com/kms/springboard/like/service/LikeService.java index f2d56ff..13a0849 100644 --- a/src/main/java/com/kms/springboard/like/service/LikeService.java +++ b/src/main/java/com/kms/springboard/like/service/LikeService.java @@ -7,7 +7,6 @@ public interface LikeService { boolean toggleLike(Long boardId, String userId); Long getLikeCount(Long boardId); - boolean isLikeByUserId(Long boardId, String userId); Page getLikeUsers(Long boardId, Pageable pageable); Page getUserLikeBoards(String userId, Pageable pageable); } diff --git a/src/main/java/com/kms/springboard/like/service/LikeServiceImpl.java b/src/main/java/com/kms/springboard/like/service/LikeServiceImpl.java index 5a35604..67683f3 100644 --- a/src/main/java/com/kms/springboard/like/service/LikeServiceImpl.java +++ b/src/main/java/com/kms/springboard/like/service/LikeServiceImpl.java @@ -36,7 +36,6 @@ public class LikeServiceImpl implements LikeService { @Override public boolean toggleLike(Long boardId, String userId) { - boolean exists = likeRepository.existsByBoardIdAndUserId(boardId, userId); if (exists) { @@ -63,20 +62,6 @@ public Long getLikeCount(Long boardId) { return count; } - @Override - public boolean isLikeByUserId(Long boardId, String userId) { - String cacheKey = USER_LIKED_PREFIX + boardId + ":" + userId; - String cached = redisTemplate.opsForValue().get(cacheKey); - - if(cached != null) { - return Boolean.parseBoolean(cached); - } - boolean isLiked = likeRepository.existsByBoardIdAndUserId(boardId, userId); - cacheUserLiked(boardId,userId,isLiked); - - return isLiked; - } - @Override @Transactional(readOnly = true) public Page getLikeUsers(Long boardId, Pageable pageable) { @@ -89,6 +74,7 @@ public Page getUserLikeBoards(String userId, Pageable pageable) { Page likes = likeRepository.findByUserId(userId,pageable); return likes.map(LikeDto::convertToDto); } + private void addLike(Long boardId, String userId) { BoardEntity board = boardRepository.findById(boardId) .orElseThrow(() -> new EntityNotFoundException("게시글을 찾을 수 없습니다")); diff --git a/src/main/java/com/kms/springboard/member/dto/MemberDto.java b/src/main/java/com/kms/springboard/member/dto/MemberDto.java index 75b4004..753c071 100644 --- a/src/main/java/com/kms/springboard/member/dto/MemberDto.java +++ b/src/main/java/com/kms/springboard/member/dto/MemberDto.java @@ -22,6 +22,9 @@ public class MemberDto { @NotBlank(message = "이름을 입력해주세요") private String username; + @NotBlank(message = "닉네임을 입력해주세요") + private String nickname; + @NotBlank(message = "이메일을 입력해주세요") @Email(message = "이메일 형식이 올바르지 않습니다") @Size(max = 255, message = "이메일은 255자 이하여야 합니다") diff --git a/src/main/java/com/kms/springboard/member/entity/MemberEntity.java b/src/main/java/com/kms/springboard/member/entity/MemberEntity.java index ac34f0f..fc5da63 100644 --- a/src/main/java/com/kms/springboard/member/entity/MemberEntity.java +++ b/src/main/java/com/kms/springboard/member/entity/MemberEntity.java @@ -24,13 +24,13 @@ public class MemberEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "memberId") + @Column(name = "member_id") private Long id; @Column(name = "username", nullable = false, length = 100) private String username; - @Column(name = "userId", nullable = false, length = 50) + @Column(name = "user_id", nullable = false, length = 50) private String userId; @Column(name = "password", nullable = false) @@ -39,6 +39,9 @@ public class MemberEntity { @Column(name = "email" ,nullable = false, length = 255) private String email; + @Column(name = "nickname",nullable = false, unique = true) + private String nickname; + diff --git a/src/main/java/com/kms/springboard/member/service/MemberServiceImpl.java b/src/main/java/com/kms/springboard/member/service/MemberServiceImpl.java index acc51e5..fb3482b 100644 --- a/src/main/java/com/kms/springboard/member/service/MemberServiceImpl.java +++ b/src/main/java/com/kms/springboard/member/service/MemberServiceImpl.java @@ -36,6 +36,7 @@ public MemberEntity saveDto(MemberDto memberDto) { MemberEntity member = MemberEntity.builder() .userId(normalizedUserId) .username(memberDto.getUsername()) + .nickname(memberDto.getNickname()) .email(normalizedEmail) .password(encoded) .build();