From 62d71b3dfaf2cb41c5334196c03cbe66a42610c9 Mon Sep 17 00:00:00 2001 From: soogoori Date: Wed, 26 Jul 2023 12:31:33 +0900 Subject: [PATCH 1/9] =?UTF-8?q?=F0=9F=8F=9D=EF=B8=8FFeat=20#36:=20[?= =?UTF-8?q?=EB=A7=88=EC=9D=B4=ED=8E=98=EC=9D=B4=EC=A7=80]=20=EA=B0=80?= =?UTF-8?q?=EA=B3=84=EB=B6=80=20=EA=B3=B5=EC=9C=A0=20=ED=94=84=EB=A1=9C?= =?UTF-8?q?=ED=95=84=20=EC=A1=B0=ED=9A=8C=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../account/sharing/dto/SharingDto.java | 17 ++- .../repository/SharingBoardRepository.java | 3 +- .../repository/SharingCommentRepository.java | 10 ++ .../repository/SharingSympathyRepository.java | 2 +- .../domain/dongnae/dto/DongnaeBoardDto.java | 2 - .../AccountBookProfileController.java | 25 +++++ .../profile/dto/AccountBookProfileDto.java | 25 +++++ .../domain/profile/dto/DongnaeProfileDto.java | 1 - .../service/AccountBookProfileService.java | 102 ++++++++++++++++++ 9 files changed, 181 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/umc/DongnaeFriend/domain/profile/controller/AccountBookProfileController.java create mode 100644 src/main/java/com/umc/DongnaeFriend/domain/profile/service/AccountBookProfileService.java diff --git a/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/dto/SharingDto.java b/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/dto/SharingDto.java index 7825ef8..c5b8a74 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/dto/SharingDto.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/dto/SharingDto.java @@ -82,6 +82,21 @@ public static class ListResponse { } - + /** + * 프로필 조회 시 필요한 정보 + */ + @Getter @Builder + @AllArgsConstructor + @NoArgsConstructor + public static class AccountBookProfileListResponse { + private Long id; + //private String town; + private int category; + private String title; + private String imageUrl; + private String createdAt; + private int commentCount; + private int likeCount; + } } diff --git a/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/repository/SharingBoardRepository.java b/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/repository/SharingBoardRepository.java index 44692ff..b508037 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/repository/SharingBoardRepository.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/repository/SharingBoardRepository.java @@ -39,7 +39,8 @@ public interface SharingBoardRepository extends JpaRepository "AND sharing_board.category = :category GROUP BY sharing_board.sharing_board_id ", nativeQuery = true) List findByKeywordOrderByLikes(@Param("keyword") String keyword, @Param("category") String category, Pageable pageable); - + List findAllByUserId(Long userId); + int countAllByUserId(Long userId); } diff --git a/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/repository/SharingCommentRepository.java b/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/repository/SharingCommentRepository.java index 91ff0ee..afb4b9e 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/repository/SharingCommentRepository.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/repository/SharingCommentRepository.java @@ -1,11 +1,21 @@ package com.umc.DongnaeFriend.domain.account.sharing.repository; import com.umc.DongnaeFriend.domain.account.sharing.entity.SharingComment; +import com.umc.DongnaeFriend.domain.dongnae.entity.DongnaeComment; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository public interface SharingCommentRepository extends JpaRepository { public int countAllBySharingBoardId(Long sharing_board_id); + int countAllByUserId(Long userId); + + @Query(value = "select c from SharingComment c join fetch c.sharingBoard sb " + + "where c.user.id = :userId order by c.createdAt desc") + List getCommentByUserIdAndBoard(@Param("userId") Long userId); } diff --git a/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/repository/SharingSympathyRepository.java b/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/repository/SharingSympathyRepository.java index fdd5e38..929aef3 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/repository/SharingSympathyRepository.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/repository/SharingSympathyRepository.java @@ -9,6 +9,6 @@ public interface SharingSympathyRepository extends JpaRepository { int countAllBySharingBoardId(Long sharing_board_id); - + int countAllByUserId(Long userId); List findByUser_Id(long user_id); } diff --git a/src/main/java/com/umc/DongnaeFriend/domain/dongnae/dto/DongnaeBoardDto.java b/src/main/java/com/umc/DongnaeFriend/domain/dongnae/dto/DongnaeBoardDto.java index 6489bcf..b4cb5e2 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/dongnae/dto/DongnaeBoardDto.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/dongnae/dto/DongnaeBoardDto.java @@ -134,7 +134,5 @@ public static class DongnaeProfileListResponse { private int commentCount; private int likeCount; } - - } diff --git a/src/main/java/com/umc/DongnaeFriend/domain/profile/controller/AccountBookProfileController.java b/src/main/java/com/umc/DongnaeFriend/domain/profile/controller/AccountBookProfileController.java new file mode 100644 index 0000000..c070924 --- /dev/null +++ b/src/main/java/com/umc/DongnaeFriend/domain/profile/controller/AccountBookProfileController.java @@ -0,0 +1,25 @@ +package com.umc.DongnaeFriend.domain.profile.controller; + +import com.umc.DongnaeFriend.domain.profile.dto.AccountBookProfileDto; +import com.umc.DongnaeFriend.domain.profile.service.AccountBookProfileService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@Slf4j +@RestController +@RequiredArgsConstructor +public class AccountBookProfileController { + + private final AccountBookProfileService accountBookProfileService; + + // 동네정보 프로필 조회 + @GetMapping({"/api/my/account-books", "/api/{userId}/account-books"}) + public AccountBookProfileDto.AccountBookProfileResponse getProfile(@PathVariable(value = "userId", required = false) Long userId, + @RequestParam int category){ + return accountBookProfileService.getAbSharing(userId, category); + } +} diff --git a/src/main/java/com/umc/DongnaeFriend/domain/profile/dto/AccountBookProfileDto.java b/src/main/java/com/umc/DongnaeFriend/domain/profile/dto/AccountBookProfileDto.java index 979eb6b..339d690 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/profile/dto/AccountBookProfileDto.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/profile/dto/AccountBookProfileDto.java @@ -1,4 +1,29 @@ package com.umc.DongnaeFriend.domain.profile.dto; +import com.umc.DongnaeFriend.domain.account.sharing.dto.SharingDto; +import com.umc.DongnaeFriend.domain.dongnae.dto.DongnaeBoardDto; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import java.util.List; + public class AccountBookProfileDto { + @Getter + @Builder + @AllArgsConstructor + @NoArgsConstructor + public static class AccountBookProfileResponse{ + + private Long userId; + private boolean isMine; + private String nickname; + private String profileImage; + private int postTotalCount; + private int commentTotalCount; + private int likedTotalCount; + private UserProfileDto.UserProfileResponseDto profile; + private List content; + } } diff --git a/src/main/java/com/umc/DongnaeFriend/domain/profile/dto/DongnaeProfileDto.java b/src/main/java/com/umc/DongnaeFriend/domain/profile/dto/DongnaeProfileDto.java index 64df6cf..ada69b9 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/profile/dto/DongnaeProfileDto.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/profile/dto/DongnaeProfileDto.java @@ -13,7 +13,6 @@ public class DongnaeProfileDto { @Getter @Builder @AllArgsConstructor - @NoArgsConstructor public static class DongnaeProfileResponse{ diff --git a/src/main/java/com/umc/DongnaeFriend/domain/profile/service/AccountBookProfileService.java b/src/main/java/com/umc/DongnaeFriend/domain/profile/service/AccountBookProfileService.java new file mode 100644 index 0000000..9cedbf7 --- /dev/null +++ b/src/main/java/com/umc/DongnaeFriend/domain/profile/service/AccountBookProfileService.java @@ -0,0 +1,102 @@ +package com.umc.DongnaeFriend.domain.profile.service; + +import com.umc.DongnaeFriend.domain.account.sharing.dto.SharingDto; +import com.umc.DongnaeFriend.domain.account.sharing.entity.SharingBoard; +import com.umc.DongnaeFriend.domain.account.sharing.entity.SharingComment; +import com.umc.DongnaeFriend.domain.account.sharing.entity.SharingImg; +import com.umc.DongnaeFriend.domain.account.sharing.repository.SharingBoardRepository; +import com.umc.DongnaeFriend.domain.account.sharing.repository.SharingCommentRepository; +import com.umc.DongnaeFriend.domain.account.sharing.repository.SharingImgRepository; +import com.umc.DongnaeFriend.domain.account.sharing.repository.SharingSympathyRepository; +import com.umc.DongnaeFriend.domain.profile.dto.AccountBookProfileDto; +import com.umc.DongnaeFriend.domain.profile.dto.UserProfileDto; +import com.umc.DongnaeFriend.domain.user.entity.User; +import com.umc.DongnaeFriend.domain.user.repository.UserRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +import static com.umc.DongnaeFriend.global.util.TimeUtil.getTime; + +@Service +@RequiredArgsConstructor +public class AccountBookProfileService { + + private final UserRepository userRepository; + private final SharingBoardRepository sharingBoardRepository; + private final SharingCommentRepository sharingCommentRepository; + private final SharingSympathyRepository sharingSympathyRepository; + private final SharingImgRepository sharingImgRepository; + + // 본인 or 타사용자 확인 + private User checkUser(Long userId){ + User user; + if(userId==null){ // 유저아이디가 없으면 본인 + user = userRepository.findById(userId/*본인인증 필요*/) + .orElseThrow(); + }else{ + user = userRepository.findById(userId) + .orElseThrow(); + } + return user; + } + + /** + * 가계부 공유 프로필 조회 + */ + public AccountBookProfileDto.AccountBookProfileResponse getAbSharing(Long userId, int category){ + User user = checkUser(userId); + + // 유저 아이디가 있으면 타사용자, 유저아이디가 없으면 본인 + + return AccountBookProfileDto.AccountBookProfileResponse.builder() + .userId(userId==null ? user.getId() /*본인인증 필요*/ : userId) + .nickname(user.getNickname()) + .isMine(userId.equals(user.getId() /*본인인증 필오*/)) + .profileImage(user.getProfileImage()) + .postTotalCount(sharingBoardRepository.countAllByUserId(user.getId())) + .commentTotalCount(sharingCommentRepository.countAllByUserId(user.getId())) + .likedTotalCount(sharingSympathyRepository.countAllByUserId(user.getId())) + .profile(UserProfileDto.UserProfileResponseDto.of(user)) + .content(getWrittenContent(user.getId(), category)) + .build(); + } + /** + * 가계부 공유 - 작성한 글 , 작성한 댓글의 게시글 조회 + */ + public List getWrittenContent(Long userId, int category) { + User user = checkUser(userId); + + List sharingBoardList; + if(category==0){ + sharingBoardList= sharingBoardRepository.findAllByUserId(user.getId()); + }else{ + sharingBoardList = sharingCommentRepository.getCommentByUserIdAndBoard(user.getId()) + .stream().map(SharingComment::getSharingBoard).distinct().collect(Collectors.toList()); + } + return getProfileListResponse(sharingBoardList); + } + + /** + * TODO : 공감, 스크랩 게시물 조회 필요 + */ + + + //ListResponse 변환 + private List getProfileListResponse(List sharingBoardList){ + return sharingBoardList.stream() + .map(sharingBoard -> SharingDto.AccountBookProfileListResponse.builder() + .id(sharingBoard.getId()) + //.town(sharingBoard.getPlaceLocation()) + .category(sharingBoard.getCategory().getValue()) + .title(sharingBoard.getTitle()) + .imageUrl(sharingImgRepository.findFirst(sharingBoard.getId()).map(SharingImg::getImageUrl).orElse("")) + .createdAt(getTime(sharingBoard.getCreatedAt())) + .commentCount(sharingCommentRepository.countAllBySharingBoardId(sharingBoard.getId())) + .likeCount(sharingSympathyRepository.countAllBySharingBoardId(sharingBoard.getId())) + .build()) + .collect(Collectors.toList()); + } +} From ad6f7ce017003da1e488041817a62720b3144880 Mon Sep 17 00:00:00 2001 From: soogoori Date: Wed, 26 Jul 2023 12:32:50 +0900 Subject: [PATCH 2/9] =?UTF-8?q?=F0=9F=8F=9D=EF=B8=8FFeat=20#36:=20[?= =?UTF-8?q?=EB=A7=88=EC=9D=B4=ED=8E=98=EC=9D=B4=EC=A7=80]=20=EA=B0=80?= =?UTF-8?q?=EA=B3=84=EB=B6=80=20=EA=B3=B5=EC=9C=A0=20=ED=94=84=EB=A1=9C?= =?UTF-8?q?=ED=95=84=20=EC=A1=B0=ED=9A=8C=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DongnaeFriend/domain/account/sharing/dto/SharingDto.java | 3 --- .../account/sharing/repository/SharingBoardRepository.java | 2 -- .../account/sharing/repository/SharingCommentRepository.java | 1 - .../account/sharing/repository/SharingSympathyRepository.java | 1 - .../umc/DongnaeFriend/domain/dongnae/dto/DongnaeBoardDto.java | 1 - .../domain/profile/dto/AccountBookProfileDto.java | 1 - 6 files changed, 9 deletions(-) diff --git a/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/dto/SharingDto.java b/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/dto/SharingDto.java index c5b8a74..101fc37 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/dto/SharingDto.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/dto/SharingDto.java @@ -1,9 +1,6 @@ package com.umc.DongnaeFriend.domain.account.sharing.dto; import com.umc.DongnaeFriend.domain.account.sharing.entity.SharingBoard; -import com.umc.DongnaeFriend.domain.dongnae.entity.Dongnae; -import com.umc.DongnaeFriend.domain.dongnae.entity.DongnaeBoard; -import com.umc.DongnaeFriend.domain.type.DongnaeBoardCategory; import com.umc.DongnaeFriend.domain.type.SharingCategory; import com.umc.DongnaeFriend.domain.user.entity.User; import lombok.AllArgsConstructor; diff --git a/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/repository/SharingBoardRepository.java b/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/repository/SharingBoardRepository.java index b508037..1191920 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/repository/SharingBoardRepository.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/repository/SharingBoardRepository.java @@ -1,8 +1,6 @@ package com.umc.DongnaeFriend.domain.account.sharing.repository; -import com.umc.DongnaeFriend.domain.account.sharing.dto.SharingDto; import com.umc.DongnaeFriend.domain.account.sharing.entity.SharingBoard; -import com.umc.DongnaeFriend.domain.dongnae.entity.DongnaeBoard; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; diff --git a/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/repository/SharingCommentRepository.java b/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/repository/SharingCommentRepository.java index afb4b9e..0eef074 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/repository/SharingCommentRepository.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/repository/SharingCommentRepository.java @@ -1,7 +1,6 @@ package com.umc.DongnaeFriend.domain.account.sharing.repository; import com.umc.DongnaeFriend.domain.account.sharing.entity.SharingComment; -import com.umc.DongnaeFriend.domain.dongnae.entity.DongnaeComment; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; diff --git a/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/repository/SharingSympathyRepository.java b/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/repository/SharingSympathyRepository.java index 929aef3..f559723 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/repository/SharingSympathyRepository.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/repository/SharingSympathyRepository.java @@ -1,7 +1,6 @@ package com.umc.DongnaeFriend.domain.account.sharing.repository; import com.umc.DongnaeFriend.domain.account.sharing.entity.SharingSympathy; -import com.umc.DongnaeFriend.domain.dongnae.entity.DongnaeSympathy; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; diff --git a/src/main/java/com/umc/DongnaeFriend/domain/dongnae/dto/DongnaeBoardDto.java b/src/main/java/com/umc/DongnaeFriend/domain/dongnae/dto/DongnaeBoardDto.java index b4cb5e2..2076f50 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/dongnae/dto/DongnaeBoardDto.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/dongnae/dto/DongnaeBoardDto.java @@ -12,7 +12,6 @@ import lombok.*; import java.util.List; -import java.util.stream.Collectors; public class DongnaeBoardDto { diff --git a/src/main/java/com/umc/DongnaeFriend/domain/profile/dto/AccountBookProfileDto.java b/src/main/java/com/umc/DongnaeFriend/domain/profile/dto/AccountBookProfileDto.java index 339d690..18e910d 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/profile/dto/AccountBookProfileDto.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/profile/dto/AccountBookProfileDto.java @@ -1,7 +1,6 @@ package com.umc.DongnaeFriend.domain.profile.dto; import com.umc.DongnaeFriend.domain.account.sharing.dto.SharingDto; -import com.umc.DongnaeFriend.domain.dongnae.dto.DongnaeBoardDto; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; From 2baa9d3f1f8cbbbf5bd788117c83e00c5d32ef31 Mon Sep 17 00:00:00 2001 From: soogoori Date: Wed, 26 Jul 2023 12:54:47 +0900 Subject: [PATCH 3/9] =?UTF-8?q?:pencil2:=20Fix=20#36=20:=20[=EB=A7=88?= =?UTF-8?q?=EC=9D=B4=ED=8E=98=EC=9D=B4=EC=A7=80]=20=ED=94=84=EB=A1=9C?= =?UTF-8?q?=ED=95=84=20=EC=A1=B0=ED=9A=8C=20DTO=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DongnaeFriend/domain/account/sharing/dto/SharingDto.java | 4 ++-- .../umc/DongnaeFriend/domain/dongnae/dto/DongnaeBoardDto.java | 4 ++-- .../domain/profile/dto/AccountBookProfileDto.java | 2 -- .../DongnaeFriend/domain/profile/dto/DongnaeProfileDto.java | 2 -- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/dto/SharingDto.java b/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/dto/SharingDto.java index 101fc37..7f3b2b2 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/dto/SharingDto.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/dto/SharingDto.java @@ -86,11 +86,11 @@ public static class ListResponse { @AllArgsConstructor @NoArgsConstructor public static class AccountBookProfileListResponse { - private Long id; - //private String town; + private Long boardId; private int category; private String title; private String imageUrl; + //private String town; private String createdAt; private int commentCount; private int likeCount; diff --git a/src/main/java/com/umc/DongnaeFriend/domain/dongnae/dto/DongnaeBoardDto.java b/src/main/java/com/umc/DongnaeFriend/domain/dongnae/dto/DongnaeBoardDto.java index 2076f50..b956d4f 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/dongnae/dto/DongnaeBoardDto.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/dongnae/dto/DongnaeBoardDto.java @@ -124,11 +124,11 @@ public static class Response { @AllArgsConstructor @NoArgsConstructor public static class DongnaeProfileListResponse { - private Long id; - private String town; + private Long boardId; private int category; private String title; private String imageUrl; + private String town; private String createdAt; private int commentCount; private int likeCount; diff --git a/src/main/java/com/umc/DongnaeFriend/domain/profile/dto/AccountBookProfileDto.java b/src/main/java/com/umc/DongnaeFriend/domain/profile/dto/AccountBookProfileDto.java index 18e910d..bc06ca6 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/profile/dto/AccountBookProfileDto.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/profile/dto/AccountBookProfileDto.java @@ -17,8 +17,6 @@ public static class AccountBookProfileResponse{ private Long userId; private boolean isMine; - private String nickname; - private String profileImage; private int postTotalCount; private int commentTotalCount; private int likedTotalCount; diff --git a/src/main/java/com/umc/DongnaeFriend/domain/profile/dto/DongnaeProfileDto.java b/src/main/java/com/umc/DongnaeFriend/domain/profile/dto/DongnaeProfileDto.java index ada69b9..f0e74b3 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/profile/dto/DongnaeProfileDto.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/profile/dto/DongnaeProfileDto.java @@ -18,8 +18,6 @@ public static class DongnaeProfileResponse{ private Long userId; private boolean isMine; - private String nickname; - private String profileImage; private int postTotalCount; private int commentTotalCount; private int likedTotalCount; From cde7adcfa0de1dd06b88458183a1190334c12a28 Mon Sep 17 00:00:00 2001 From: soogoori Date: Thu, 27 Jul 2023 13:53:44 +0900 Subject: [PATCH 4/9] =?UTF-8?q?=E2=9C=8F=EF=B8=8F=20Feat=20#36=20:=20[?= =?UTF-8?q?=EA=B0=80=EA=B3=84=EB=B6=80]=20=EC=98=88=EC=82=B0=EC=84=A4?= =?UTF-8?q?=EC=A0=95=20=EC=88=98=EC=A0=95=20=EB=A1=9C=EC=A7=81=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 0 -> 8196 bytes .../book/controller/AccountBookController.java | 7 +++++++ .../domain/account/book/entity/AccountBook.java | 4 ++++ .../account/book/service/AccountBookService.java | 10 ++++++++-- .../service/AccountBookProfileService.java | 2 +- .../profile/service/DongnaeProfileService.java | 4 +--- src/main/resources/application.yml | 1 + 7 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a178c9f76b1b7a98dfbbe423c9a26119f2a2baf1 GIT binary patch literal 8196 zcmeHML5tHs82zU0Zd0n*gDZOx0$!K3u8SgGvb75e3bGYFsMMwjYuGd?O}a%&AxFjk z;9v0OPw~Ha()Z1bYm#=0CvkN?n0b@Qdy~n_*UV0qh(u@V-6Gm1A`6AF)kL)-_&k@T zsOX*+P(V*KCZC41OYdm3#5Ntq0poyiz&KzWFb@0;4q(mZu+CZc)mc*;2aE&%r33ta zuu&KtjhRCE>Odv80Kgi$WuVR50oK?W9gUenoIwaB1uCh~TMVJ(=(jb`(U>VzauRy; zA@r4n-k}J2b&PLIItfRisf`21fn^8y=hCDBcJ5L>z@PP7S0BVtItU_vA_alxgYxP{ z5P9*e6Hg;Ak=mX*VKuBqzjbXsZ|~T*@9r&j?D@StwD<4qFBT1J>&DIdNBxs<6vgi` zdxX$0GrFvf&*~3o74H7DH;KYHI%W|{J?{+7NuV;)eKo&Z;jD{~;Ps3R+f$d~}RnNm`m zv*0Yqv#)^dgO`FI;jWXl`Nlrw)m88(G%Q|2`m%!cPvn@s<5G6P78#srHVUJoF;mE0 z+;7%@Ho}B)-~u{ORde3v{r}wu_rd)*G$a#dfU;#J;8d4s~i nyiB2#pep1${I&wrVu>{^C3XmU@GIlA9dgdH>f7e literal 0 HcmV?d00001 diff --git a/src/main/java/com/umc/DongnaeFriend/domain/account/book/controller/AccountBookController.java b/src/main/java/com/umc/DongnaeFriend/domain/account/book/controller/AccountBookController.java index 24a2b90..6dd5e69 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/account/book/controller/AccountBookController.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/account/book/controller/AccountBookController.java @@ -28,6 +28,13 @@ public void createBudget(@RequestParam(value = "year", required = false) Integer accountBookService.createBudget(year, month, budget); } + @PutMapping("/budget") + public void updateBudget(@RequestParam(value = "year", required = false) Integer year, + @RequestParam(value = "month", required = false) Integer month, + @RequestParam(value = "amount", required = false) Long budget){ + accountBookService.updateBudget(year, month, budget); + } + @GetMapping("/category") public List getTransactionAll(@RequestParam(value = "year", required = false) Integer year, @RequestParam(value = "month", required = false) Integer month){ diff --git a/src/main/java/com/umc/DongnaeFriend/domain/account/book/entity/AccountBook.java b/src/main/java/com/umc/DongnaeFriend/domain/account/book/entity/AccountBook.java index fd4f4b8..65f6afb 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/account/book/entity/AccountBook.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/account/book/entity/AccountBook.java @@ -40,4 +40,8 @@ public class AccountBook extends BaseTimeEntity { @Column(nullable = false) private Integer month; + + public void updateBudget(Long budget){ + this.budget = budget; + } } diff --git a/src/main/java/com/umc/DongnaeFriend/domain/account/book/service/AccountBookService.java b/src/main/java/com/umc/DongnaeFriend/domain/account/book/service/AccountBookService.java index 3caaf36..d932ecc 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/account/book/service/AccountBookService.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/account/book/service/AccountBookService.java @@ -23,9 +23,9 @@ public class AccountBookService { // 가계부 예산 설정 (한달) @Transactional public void createBudget(Integer year, Integer month, Long budget){ - this.accountBookRepository.findByYearAndMonth(year, month) + /*this.accountBookRepository.findByYearAndMonth(year, month) .ifPresent(ab->{throw new IllegalStateException("이미 예산이 설정되어있습니다."); - }); + });*/ accountBookRepository.save(AccountBookDto.BudgetRequest.toEntity(year, month, budget)); } @@ -35,6 +35,12 @@ public AccountBookDto.BudgetResponse getBudget(Integer year, Integer month){ return AccountBookDto.BudgetResponse.of(accountBook.getId(),accountBook.getBudget()); } + // 가계부 예산 설정 수정 + public void updateBudget(Integer year, Integer month, Long budget){ + AccountBook accountBook = accountBookRepository.findByYearAndMonth(year, month).orElseThrow(); + accountBook.updateBudget(budget); + } + // 가계부 조회 -> 이번달 남은 예산 & 지출, 저축(수입), 카테고리별 지출 public AccountBookDto.AccountBookResponse getAccountBookResponse(Integer year, Integer month) { diff --git a/src/main/java/com/umc/DongnaeFriend/domain/profile/service/AccountBookProfileService.java b/src/main/java/com/umc/DongnaeFriend/domain/profile/service/AccountBookProfileService.java index 9cedbf7..42b9057 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/profile/service/AccountBookProfileService.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/profile/service/AccountBookProfileService.java @@ -88,7 +88,7 @@ public List getWrittenContent(Long us private List getProfileListResponse(List sharingBoardList){ return sharingBoardList.stream() .map(sharingBoard -> SharingDto.AccountBookProfileListResponse.builder() - .id(sharingBoard.getId()) + .boardId(sharingBoard.getId()) //.town(sharingBoard.getPlaceLocation()) .category(sharingBoard.getCategory().getValue()) .title(sharingBoard.getTitle()) diff --git a/src/main/java/com/umc/DongnaeFriend/domain/profile/service/DongnaeProfileService.java b/src/main/java/com/umc/DongnaeFriend/domain/profile/service/DongnaeProfileService.java index 5930e3a..74834c5 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/profile/service/DongnaeProfileService.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/profile/service/DongnaeProfileService.java @@ -54,9 +54,7 @@ public DongnaeProfileDto.DongnaeProfileResponse getDongnaeProfile(Long userId, i return DongnaeProfileDto.DongnaeProfileResponse.builder() .userId(userId==null ? user.getId() /*본인인증 필요*/ : userId) - .nickname(user.getNickname()) .isMine(userId.equals(user.getId() /*본인인증 필오*/)) - .profileImage(user.getProfileImage()) .postTotalCount(dongnaeBoardRepository.countAllByUserId(user.getId())) .commentTotalCount(commentRepository.countAllByUserId(user.getId())) .likedTotalCount(dongnaeSympathyRepository.countAllByUserId(user.getId())) @@ -84,7 +82,7 @@ public List getWrittenContent(Long u private List getProfileListResponse(List dongnaeBoardList){ return dongnaeBoardList.stream() .map(dongnaeBoard -> DongnaeBoardDto.DongnaeProfileListResponse.builder() - .id(dongnaeBoard.getId()) + .boardId(dongnaeBoard.getId()) .town(dongnaeBoard.getPlaceLocation()) .category(dongnaeBoard.getCategory().getValue()) .title(dongnaeBoard.getTitle()) diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index a8707ff..482cdcd 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -20,3 +20,4 @@ spring: jpa: hibernate.ddl-auto: update database: mysql + From b6ebe091bcd5c41f9df94c16a45a96e5c4b8f772 Mon Sep 17 00:00:00 2001 From: soogoori Date: Thu, 27 Jul 2023 17:48:11 +0900 Subject: [PATCH 5/9] =?UTF-8?q?=E2=9C=8F=20Fix=20#36=20:=20[=ED=94=84?= =?UTF-8?q?=EB=A1=9C=ED=95=84=20=EC=A1=B0=ED=9A=8C]=20=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=95=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../book/controller/AccountBookController.java | 2 -- .../accountBook/AccountBookRepositoryCustomImpl.java | 1 - .../sharing/repository/SharingBoardRepository.java | 2 +- .../controller/AccountBookProfileController.java | 5 +++-- .../profile/controller/DongnaeProfileController.java | 5 +++-- .../profile/service/AccountBookProfileService.java | 11 +++++------ .../domain/profile/service/DongnaeProfileService.java | 7 ++++--- 7 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/umc/DongnaeFriend/domain/account/book/controller/AccountBookController.java b/src/main/java/com/umc/DongnaeFriend/domain/account/book/controller/AccountBookController.java index 6dd5e69..a9f0475 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/account/book/controller/AccountBookController.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/account/book/controller/AccountBookController.java @@ -3,7 +3,6 @@ import com.umc.DongnaeFriend.domain.account.book.dto.AccountBookDto; import com.umc.DongnaeFriend.domain.account.book.service.AccountBookService; import lombok.RequiredArgsConstructor; -import org.springframework.data.domain.Pageable; import org.springframework.web.bind.annotation.*; import java.util.List; @@ -34,7 +33,6 @@ public void updateBudget(@RequestParam(value = "year", required = false) Integer @RequestParam(value = "amount", required = false) Long budget){ accountBookService.updateBudget(year, month, budget); } - @GetMapping("/category") public List getTransactionAll(@RequestParam(value = "year", required = false) Integer year, @RequestParam(value = "month", required = false) Integer month){ diff --git a/src/main/java/com/umc/DongnaeFriend/domain/account/book/repository/accountBook/AccountBookRepositoryCustomImpl.java b/src/main/java/com/umc/DongnaeFriend/domain/account/book/repository/accountBook/AccountBookRepositoryCustomImpl.java index 73a7d99..d0b9eb6 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/account/book/repository/accountBook/AccountBookRepositoryCustomImpl.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/account/book/repository/accountBook/AccountBookRepositoryCustomImpl.java @@ -4,7 +4,6 @@ import com.umc.DongnaeFriend.domain.account.book.dto.Expense; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.data.domain.Pageable; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; diff --git a/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/repository/SharingBoardRepository.java b/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/repository/SharingBoardRepository.java index 1191920..6596961 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/repository/SharingBoardRepository.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/repository/SharingBoardRepository.java @@ -37,7 +37,7 @@ public interface SharingBoardRepository extends JpaRepository "AND sharing_board.category = :category GROUP BY sharing_board.sharing_board_id ", nativeQuery = true) List findByKeywordOrderByLikes(@Param("keyword") String keyword, @Param("category") String category, Pageable pageable); - List findAllByUserId(Long userId); + List findAllByUserId(Long userId, Pageable pageable); int countAllByUserId(Long userId); diff --git a/src/main/java/com/umc/DongnaeFriend/domain/profile/controller/AccountBookProfileController.java b/src/main/java/com/umc/DongnaeFriend/domain/profile/controller/AccountBookProfileController.java index c070924..89ee471 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/profile/controller/AccountBookProfileController.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/profile/controller/AccountBookProfileController.java @@ -4,6 +4,7 @@ import com.umc.DongnaeFriend.domain.profile.service.AccountBookProfileService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.data.domain.Pageable; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestParam; @@ -19,7 +20,7 @@ public class AccountBookProfileController { // 동네정보 프로필 조회 @GetMapping({"/api/my/account-books", "/api/{userId}/account-books"}) public AccountBookProfileDto.AccountBookProfileResponse getProfile(@PathVariable(value = "userId", required = false) Long userId, - @RequestParam int category){ - return accountBookProfileService.getAbSharing(userId, category); + @RequestParam int category, Pageable pageable){ + return accountBookProfileService.getAbSharing(userId, category, pageable); } } diff --git a/src/main/java/com/umc/DongnaeFriend/domain/profile/controller/DongnaeProfileController.java b/src/main/java/com/umc/DongnaeFriend/domain/profile/controller/DongnaeProfileController.java index cdeb93b..7b01050 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/profile/controller/DongnaeProfileController.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/profile/controller/DongnaeProfileController.java @@ -6,6 +6,7 @@ import com.umc.DongnaeFriend.domain.profile.service.DongnaeProfileService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.data.domain.Pageable; import org.springframework.data.repository.query.Param; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -24,8 +25,8 @@ public class DongnaeProfileController { // 동네정보 프로필 조회 @GetMapping({"/api/my/town", "/api/{userId}/town"}) public DongnaeProfileDto.DongnaeProfileResponse getProfile(@PathVariable(value = "userId", required = false) Long userId, - @RequestParam int category){ - return dongnaeProfileService.getDongnaeProfile(userId, category); + @RequestParam int category, Pageable pageable){ + return dongnaeProfileService.getDongnaeProfile(userId, category, pageable); } } diff --git a/src/main/java/com/umc/DongnaeFriend/domain/profile/service/AccountBookProfileService.java b/src/main/java/com/umc/DongnaeFriend/domain/profile/service/AccountBookProfileService.java index 42b9057..aef7669 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/profile/service/AccountBookProfileService.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/profile/service/AccountBookProfileService.java @@ -13,6 +13,7 @@ import com.umc.DongnaeFriend.domain.user.entity.User; import com.umc.DongnaeFriend.domain.user.repository.UserRepository; import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import java.util.List; @@ -46,32 +47,30 @@ private User checkUser(Long userId){ /** * 가계부 공유 프로필 조회 */ - public AccountBookProfileDto.AccountBookProfileResponse getAbSharing(Long userId, int category){ + public AccountBookProfileDto.AccountBookProfileResponse getAbSharing(Long userId, int category, Pageable pageable){ User user = checkUser(userId); // 유저 아이디가 있으면 타사용자, 유저아이디가 없으면 본인 return AccountBookProfileDto.AccountBookProfileResponse.builder() .userId(userId==null ? user.getId() /*본인인증 필요*/ : userId) - .nickname(user.getNickname()) .isMine(userId.equals(user.getId() /*본인인증 필오*/)) - .profileImage(user.getProfileImage()) .postTotalCount(sharingBoardRepository.countAllByUserId(user.getId())) .commentTotalCount(sharingCommentRepository.countAllByUserId(user.getId())) .likedTotalCount(sharingSympathyRepository.countAllByUserId(user.getId())) .profile(UserProfileDto.UserProfileResponseDto.of(user)) - .content(getWrittenContent(user.getId(), category)) + .content(getWrittenContent(user.getId(), category, pageable)) .build(); } /** * 가계부 공유 - 작성한 글 , 작성한 댓글의 게시글 조회 */ - public List getWrittenContent(Long userId, int category) { + public List getWrittenContent(Long userId, int category, Pageable pageable) { User user = checkUser(userId); List sharingBoardList; if(category==0){ - sharingBoardList= sharingBoardRepository.findAllByUserId(user.getId()); + sharingBoardList= sharingBoardRepository.findAllByUserId(user.getId(), pageable); }else{ sharingBoardList = sharingCommentRepository.getCommentByUserIdAndBoard(user.getId()) .stream().map(SharingComment::getSharingBoard).distinct().collect(Collectors.toList()); diff --git a/src/main/java/com/umc/DongnaeFriend/domain/profile/service/DongnaeProfileService.java b/src/main/java/com/umc/DongnaeFriend/domain/profile/service/DongnaeProfileService.java index 74834c5..e24c6f5 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/profile/service/DongnaeProfileService.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/profile/service/DongnaeProfileService.java @@ -13,6 +13,7 @@ import com.umc.DongnaeFriend.domain.user.entity.User; import com.umc.DongnaeFriend.domain.user.repository.UserRepository; import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import java.util.List; @@ -47,7 +48,7 @@ private User checkUser(Long userId){ /** * 동네 정보 프로필 조회 */ - public DongnaeProfileDto.DongnaeProfileResponse getDongnaeProfile(Long userId, int category){ + public DongnaeProfileDto.DongnaeProfileResponse getDongnaeProfile(Long userId, int category, Pageable pageable){ User user = checkUser(userId); // 유저 아이디가 있으면 타사용자, 유저아이디가 없으면 본인 @@ -59,14 +60,14 @@ public DongnaeProfileDto.DongnaeProfileResponse getDongnaeProfile(Long userId, i .commentTotalCount(commentRepository.countAllByUserId(user.getId())) .likedTotalCount(dongnaeSympathyRepository.countAllByUserId(user.getId())) .profile(UserProfileDto.UserProfileResponseDto.of(user)) - .content(getWrittenContent(user.getId(), category)) + .content(getWrittenContent(user.getId(), category, pageable)) .build(); } /** * 동네정보 - 작성한 글 , 작성한 댓글의 게시글 조회 * TODO : 공감, 스크랩 게시물 조회 필요 */ - public List getWrittenContent(Long userId, int category) { + public List getWrittenContent(Long userId, int category, Pageable pageable) { User user = checkUser(userId); List dongnaeBoardList; From d2f267efa62083a407ccc8a0a5884bf5f59479cb Mon Sep 17 00:00:00 2001 From: soogoori Date: Fri, 28 Jul 2023 00:49:13 +0900 Subject: [PATCH 6/9] =?UTF-8?q?=F0=9F=9B=A0=EF=B8=8F=20Fix=20#36=20:=20Con?= =?UTF-8?q?troller=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AccountBookController.java | 25 ++++++++++--------- .../book/controller/MemoController.java | 20 ++++++++++----- .../controller/TransactionController.java | 17 +++++++++---- .../AccountBookProfileController.java | 8 +++--- .../controller/DongnaeProfileController.java | 8 +++--- .../profile/controller/MyPageController.java | 10 +++++--- 6 files changed, 56 insertions(+), 32 deletions(-) diff --git a/src/main/java/com/umc/DongnaeFriend/domain/account/book/controller/AccountBookController.java b/src/main/java/com/umc/DongnaeFriend/domain/account/book/controller/AccountBookController.java index a9f0475..ee6b422 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/account/book/controller/AccountBookController.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/account/book/controller/AccountBookController.java @@ -3,6 +3,8 @@ import com.umc.DongnaeFriend.domain.account.book.dto.AccountBookDto; import com.umc.DongnaeFriend.domain.account.book.service.AccountBookService; import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.List; @@ -15,34 +17,33 @@ public class AccountBookController { private final AccountBookService accountBookService; @GetMapping("/budget") - public AccountBookDto.BudgetResponse getBudget(@RequestParam(value = "year", required = false) Integer year, - @RequestParam(value = "month", required = false) Integer month){ - return accountBookService.getBudget(year, month); + public ResponseEntity getBudget(@RequestParam(value = "year", required = false) Integer year, + @RequestParam(value = "month", required = false) Integer month){ + return ResponseEntity.status(HttpStatus.OK).body(accountBookService.getBudget(year, month)); } @PostMapping("/budget") - public void createBudget(@RequestParam(value = "year", required = false) Integer year, + public ResponseEntity createBudget(@RequestParam(value = "year", required = false) Integer year, @RequestParam(value = "month", required = false) Integer month, @RequestParam(value = "amount", required = false) Long budget){ accountBookService.createBudget(year, month, budget); + + return new ResponseEntity<>(HttpStatus.OK); } @PutMapping("/budget") - public void updateBudget(@RequestParam(value = "year", required = false) Integer year, + public ResponseEntity updateBudget(@RequestParam(value = "year", required = false) Integer year, @RequestParam(value = "month", required = false) Integer month, @RequestParam(value = "amount", required = false) Long budget){ accountBookService.updateBudget(year, month, budget); - } - @GetMapping("/category") - public List getTransactionAll(@RequestParam(value = "year", required = false) Integer year, - @RequestParam(value = "month", required = false) Integer month){ - return null; + + return new ResponseEntity<>(HttpStatus.OK); } @GetMapping("/all") - public AccountBookDto.AccountBookResponse getAccountBook(@RequestParam(value = "year", required = false) Integer year, + public ResponseEntity getAccountBook(@RequestParam(value = "year", required = false) Integer year, @RequestParam(value = "month", required = false) Integer month){ - return accountBookService.getAccountBookResponse(year, month); + return ResponseEntity.status(HttpStatus.OK).body(accountBookService.getAccountBookResponse(year, month)); } } diff --git a/src/main/java/com/umc/DongnaeFriend/domain/account/book/controller/MemoController.java b/src/main/java/com/umc/DongnaeFriend/domain/account/book/controller/MemoController.java index d53509f..b466809 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/account/book/controller/MemoController.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/account/book/controller/MemoController.java @@ -3,6 +3,8 @@ import com.umc.DongnaeFriend.domain.account.book.dto.MemoDto; import com.umc.DongnaeFriend.domain.account.book.service.MemoService; import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.List; @@ -18,26 +20,32 @@ public class MemoController { * 유저 권한 확인 필요 */ @GetMapping - public MemoDto.MemoListResponse getMemoList(@RequestParam(value = "year", required = false) Integer year, - @RequestParam(value = "month", required = false) Integer month){ - return memoService.getMemoList(year, month); + public ResponseEntity getMemoList(@RequestParam(value = "year", required = false) Integer year, + @RequestParam(value = "month", required = false) Integer month){ + return ResponseEntity.status(HttpStatus.OK).body(memoService.getMemoList(year, month)); } @PostMapping - public void createMemo(@RequestParam(value = "year", required = false) Integer year, + public ResponseEntity createMemo(@RequestParam(value = "year", required = false) Integer year, @RequestParam(value = "month", required = false) Integer month, @RequestBody MemoDto.MemoRequest requestDto){ memoService.createMemo(requestDto, year,month); + + return new ResponseEntity<>(HttpStatus.OK); } @PutMapping - public void updateMemo(@RequestParam(value = "id", required = false) Long id, + public ResponseEntity updateMemo(@RequestParam(value = "id", required = false) Long id, @RequestBody MemoDto.MemoRequest requestDto){ memoService.updateMemo(requestDto, id); + + return new ResponseEntity<>(HttpStatus.OK); } @DeleteMapping - public void deleteMemo(@RequestParam(value = "id", required = false) Long id){ + public ResponseEntity deleteMemo(@RequestParam(value = "id", required = false) Long id){ memoService.deleteMemo(id); + + return new ResponseEntity<>(HttpStatus.OK); } } diff --git a/src/main/java/com/umc/DongnaeFriend/domain/account/book/controller/TransactionController.java b/src/main/java/com/umc/DongnaeFriend/domain/account/book/controller/TransactionController.java index eb475fc..e5a517e 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/account/book/controller/TransactionController.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/account/book/controller/TransactionController.java @@ -5,6 +5,8 @@ import com.umc.DongnaeFriend.domain.account.book.service.TransactionService; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import javax.transaction.Transactional; @@ -17,25 +19,30 @@ public class TransactionController { private final TransactionService transactionService; @PostMapping - public void createTransaction(@RequestBody TransactionDto.TransactionRequest request){ + public ResponseEntity createTransaction(@RequestBody TransactionDto.TransactionRequest request){ transactionService.createTransaction(request); + + return new ResponseEntity<>(HttpStatus.OK); + } @GetMapping - public TransactionDto.TransactionListResponse getTransaction(@RequestParam(value = "year", required = false) Integer year, + public ResponseEntity getTransaction(@RequestParam(value = "year", required = false) Integer year, @RequestParam(value = "month", required = false) Integer month, @RequestParam(value = "day", required = false) Integer day, Pageable pageable){ - return transactionService.getTransactions(year, month, day, pageable); + return ResponseEntity.status(HttpStatus.OK).body(transactionService.getTransactions(year, month, day, pageable)); } @PutMapping - public void updateTransaction(@RequestBody TransactionDto.TransactionRequest requestDto, + public ResponseEntity updateTransaction(@RequestBody TransactionDto.TransactionRequest requestDto, @RequestParam(value = "id", required = false) Long id){ transactionService.updateTransaction(requestDto, id); + return new ResponseEntity<>(HttpStatus.OK); } @DeleteMapping - public void deleteTransaction(@RequestParam(value = "id", required = false) Long id){ + public ResponseEntity deleteTransaction(@RequestParam(value = "id", required = false) Long id){ transactionService.deleteTransaction(id); + return new ResponseEntity<>(HttpStatus.OK); } } diff --git a/src/main/java/com/umc/DongnaeFriend/domain/profile/controller/AccountBookProfileController.java b/src/main/java/com/umc/DongnaeFriend/domain/profile/controller/AccountBookProfileController.java index 89ee471..ba3a0d0 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/profile/controller/AccountBookProfileController.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/profile/controller/AccountBookProfileController.java @@ -5,6 +5,8 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestParam; @@ -19,8 +21,8 @@ public class AccountBookProfileController { // 동네정보 프로필 조회 @GetMapping({"/api/my/account-books", "/api/{userId}/account-books"}) - public AccountBookProfileDto.AccountBookProfileResponse getProfile(@PathVariable(value = "userId", required = false) Long userId, - @RequestParam int category, Pageable pageable){ - return accountBookProfileService.getAbSharing(userId, category, pageable); + public ResponseEntity getProfile(@PathVariable(value = "userId", required = false) Long userId, + @RequestParam int category, Pageable pageable){ + return ResponseEntity.status(HttpStatus.OK).body(accountBookProfileService.getAbSharing(userId, category, pageable)); } } diff --git a/src/main/java/com/umc/DongnaeFriend/domain/profile/controller/DongnaeProfileController.java b/src/main/java/com/umc/DongnaeFriend/domain/profile/controller/DongnaeProfileController.java index 7b01050..9847446 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/profile/controller/DongnaeProfileController.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/profile/controller/DongnaeProfileController.java @@ -8,6 +8,8 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Pageable; import org.springframework.data.repository.query.Param; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestParam; @@ -24,9 +26,9 @@ public class DongnaeProfileController { // 동네정보 프로필 조회 @GetMapping({"/api/my/town", "/api/{userId}/town"}) - public DongnaeProfileDto.DongnaeProfileResponse getProfile(@PathVariable(value = "userId", required = false) Long userId, - @RequestParam int category, Pageable pageable){ - return dongnaeProfileService.getDongnaeProfile(userId, category, pageable); + public ResponseEntity getProfile(@PathVariable(value = "userId", required = false) Long userId, + @RequestParam int category, Pageable pageable){ + return ResponseEntity.status(HttpStatus.OK).body(dongnaeProfileService.getDongnaeProfile(userId, category, pageable)); } } diff --git a/src/main/java/com/umc/DongnaeFriend/domain/profile/controller/MyPageController.java b/src/main/java/com/umc/DongnaeFriend/domain/profile/controller/MyPageController.java index 06a5527..627edd6 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/profile/controller/MyPageController.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/profile/controller/MyPageController.java @@ -5,6 +5,8 @@ import com.umc.DongnaeFriend.domain.profile.service.MyPageService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -16,15 +18,17 @@ public class MyPageController { private final MyPageService myPageService; @GetMapping("/api/user") - public MyPageDto.MyPageResponseDto getMyPage(){ - return myPageService.getMyPage(); + public ResponseEntity getMyPage(){ + return ResponseEntity.status(HttpStatus.OK).body(myPageService.getMyPage()); } @PutMapping("/api/user") - public void updateMyPage(@RequestPart(value = "request", required = false) MyPageDto.MyPageRequestDto myPageRequest, + public ResponseEntity updateMyPage(@RequestPart(value = "request", required = false) MyPageDto.MyPageRequestDto myPageRequest, @RequestPart(value = "image", required = false) MultipartFile image){ log.info("updateMyPage - 프로필 사진 변경"); myPageService.updateMyPage(myPageRequest, image); + + return new ResponseEntity<>(HttpStatus.OK); } } From c2ff8282343d82b925db217ee7d4635d50a3a982 Mon Sep 17 00:00:00 2001 From: DDonghyeo Date: Fri, 28 Jul 2023 21:43:54 +0900 Subject: [PATCH 7/9] =?UTF-8?q?=F0=9F=9B=A0=EF=B8=8FReafactor=20#28:=20?= =?UTF-8?q?=EB=8F=99=EB=84=A4=EC=A0=95=EB=B3=B4=20=EA=B2=8C=EC=8B=9C?= =?UTF-8?q?=EA=B8=80=20Paging=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/SharingBoardRepository.java | 4 +-- .../AccountBookSharingServiceImpl.java | 2 +- .../controller/DongnaeBoardController.java | 14 +++-------- .../respository/DongnaeBoardRepository.java | 13 +++++----- .../dongnae/service/DongnaeBoardService.java | 4 +-- .../service/DongnaeBoardServiceImpl.java | 25 +++---------------- 6 files changed, 17 insertions(+), 45 deletions(-) diff --git a/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/repository/SharingBoardRepository.java b/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/repository/SharingBoardRepository.java index 54bc584..f99d1f3 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/repository/SharingBoardRepository.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/repository/SharingBoardRepository.java @@ -1,8 +1,6 @@ package com.umc.DongnaeFriend.domain.account.sharing.repository; -import com.umc.DongnaeFriend.domain.account.sharing.dto.SharingDto; import com.umc.DongnaeFriend.domain.account.sharing.entity.SharingBoard; -import com.umc.DongnaeFriend.domain.dongnae.entity.DongnaeBoard; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; @@ -36,7 +34,7 @@ public interface SharingBoardRepository extends JpaRepository "LEFT JOIN sharing_sympathy ON sharing_board.sharing_board_id = sharing_sympathy.sharing_board_id\n" + "WHERE (sharing_board.title LIKE %:keyword% OR sharing_board.content LIKE %:keyword%)\n" + "AND sharing_board.category = :category GROUP BY sharing_board.sharing_board_id ", nativeQuery = true) - List findByKeywordOrderByLikes(@Param("keyword") String keyword, @Param("category") String category, Pageable pageable); + List findByKeyword(@Param("keyword") String keyword, @Param("category") String category, Pageable pageable); diff --git a/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/service/AccountBookSharingServiceImpl.java b/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/service/AccountBookSharingServiceImpl.java index 6687692..e741567 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/service/AccountBookSharingServiceImpl.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/service/AccountBookSharingServiceImpl.java @@ -55,7 +55,7 @@ public class AccountBookSharingServiceImpl implements AccountBookSharingService @Override public List searchByKeyword(String keyword, int category, Pageable pageable) { //TODO : 전체 카테고리 처리 - List sharingBoards = sharingBoardRepository.findByKeywordOrderByLikes(keyword, SharingCategory.valueOf(category).name(), pageable); + List sharingBoards = sharingBoardRepository.findByKeyword(keyword, SharingCategory.valueOf(category).name(), pageable); if (sharingBoards.isEmpty()) { throw new CustomException(ErrorCode.NO_CONTENT_FOUND); } diff --git a/src/main/java/com/umc/DongnaeFriend/domain/dongnae/controller/DongnaeBoardController.java b/src/main/java/com/umc/DongnaeFriend/domain/dongnae/controller/DongnaeBoardController.java index 51c4fe2..ec1ea11 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/dongnae/controller/DongnaeBoardController.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/dongnae/controller/DongnaeBoardController.java @@ -5,6 +5,7 @@ import com.umc.DongnaeFriend.domain.dongnae.service.DongnaeBoardService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; import org.springframework.http.ResponseEntity; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.web.bind.annotation.*; @@ -26,15 +27,6 @@ public class DongnaeBoardController { @Autowired DongnaeBoardService dongnaeBoardService; - /* - * [동네정보] 홈 화면 - */ - //TODO : 파라미터 다시 확인해보기 - @GetMapping("/home") - public ResponseEntity home(@RequestParam("category") int category, - @RequestParam("sortBy") int sort) { - return ResponseEntity.ok(dongnaeBoardService.home(category)); - } /* * [동네정보] 사용자 위치 정보 @@ -54,11 +46,11 @@ public ResponseEntity getLocation() { @GetMapping("/search") public ResponseEntity getBoards(@RequestParam("keyword") String keyword, @RequestParam("category") int category, - @RequestParam("sortBy") int sort) { + Pageable pageable) { log.info("User Id: " + SecurityContextHolder.getContext().getAuthentication().getPrincipal()); - return ResponseEntity.ok(dongnaeBoardService.searchByKeyword(keyword, category, sort)); + return ResponseEntity.ok(dongnaeBoardService.searchByKeyword(keyword, category, pageable)); } /* diff --git a/src/main/java/com/umc/DongnaeFriend/domain/dongnae/respository/DongnaeBoardRepository.java b/src/main/java/com/umc/DongnaeFriend/domain/dongnae/respository/DongnaeBoardRepository.java index eaded3e..54cd3d4 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/dongnae/respository/DongnaeBoardRepository.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/dongnae/respository/DongnaeBoardRepository.java @@ -1,6 +1,8 @@ package com.umc.DongnaeFriend.domain.dongnae.respository; +import com.umc.DongnaeFriend.domain.account.sharing.entity.SharingBoard; import com.umc.DongnaeFriend.domain.dongnae.entity.DongnaeBoard; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; @@ -13,14 +15,11 @@ @Repository public interface DongnaeBoardRepository extends JpaRepository { - @Query(value = "select * from dongnae_board where title like %?1% or content like %?1% and category = ?2 ORDER BY created_at DESC;", nativeQuery = true) - List findByKeywordOrderByCreatedAt(String keyword, String category); - - @Query(value = "SELECT dongnae_board.*, COUNT(dongnae_sympathy.dongnae_board_id) AS cnt FROM dongnae_board\n" + + @Query(value = "SELECT dongnae_board.*, COUNT(dongnae_sympathy.dongnae_board_id) AS likes FROM dongnae_board\n" + "LEFT JOIN dongnae_sympathy ON dongnae_board.dongnae_board_id = dongnae_sympathy.dongnae_board_id\n" + - "WHERE (dongnae_board.title LIKE %?1% OR dongnae_board.content LIKE %?2%)\n" + - "AND dongnae_board.category = ?2 GROUP BY dongnae_board.dongnae_board_id ORDER BY cnt DESC ;", nativeQuery = true) - List findByKeywordOrderByLikes(String keyword, String category); + "WHERE (dongnae_board.title LIKE %:keyword% OR dongnae_board.content LIKE %:keyword%)\n" + + "AND dongnae_board.category = :category GROUP BY dongnae_board.dongnae_board_id ", nativeQuery = true) + List findByKeyword(@Param("keyword") String keyword, @Param("category") String category, Pageable pageable); @Query(value = "select * from dongnae_board ORDER BY created_at DESC;", nativeQuery = true) List findAllOrderByCreatedAt(); diff --git a/src/main/java/com/umc/DongnaeFriend/domain/dongnae/service/DongnaeBoardService.java b/src/main/java/com/umc/DongnaeFriend/domain/dongnae/service/DongnaeBoardService.java index 8f1c978..02c6e4d 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/dongnae/service/DongnaeBoardService.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/dongnae/service/DongnaeBoardService.java @@ -2,19 +2,19 @@ import com.umc.DongnaeFriend.domain.dongnae.dto.DongnaeBoardDto; import com.umc.DongnaeFriend.domain.dongnae.dto.UserLocationDto; +import org.springframework.data.domain.Pageable; import javax.naming.AuthenticationException; import java.util.List; public interface DongnaeBoardService { - List searchByKeyword(String keyword, int category, int sort); + List searchByKeyword(String keyword, int category, Pageable pageable); List searchAll(int sort); void createBoard(DongnaeBoardDto.Request req); - List home(int category); UserLocationDto getUserLocation(); diff --git a/src/main/java/com/umc/DongnaeFriend/domain/dongnae/service/DongnaeBoardServiceImpl.java b/src/main/java/com/umc/DongnaeFriend/domain/dongnae/service/DongnaeBoardServiceImpl.java index 5d127bc..a0554b0 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/dongnae/service/DongnaeBoardServiceImpl.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/dongnae/service/DongnaeBoardServiceImpl.java @@ -14,6 +14,7 @@ import com.umc.DongnaeFriend.domain.user.repository.UserRepository; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -55,19 +56,6 @@ public class DongnaeBoardServiceImpl implements DongnaeBoardService { @Autowired private DongnaeRepository dongnaeRepository; - /* - * [동네정보] 홈 화면 - * 카테고리 별 게시글 2개씩 반환 - * @param sort - */ - @Override - public List home(int category) { - String category_String = DongnaeBoardCategory.valueOf(category).name(); - //TODO : 동네 인증 여부 확인하기 - (User 필요) - String category_ = "RESTAURANT"; - List dongnaeBoardList = dongnaeBoardRepository.findTwoByCategoryOrderByCreatedAt(category_); - return getListResponses(dongnaeBoardList); - } /* * [동네정보] 사용자 위치 정보 @@ -87,16 +75,10 @@ public UserLocationDto getUserLocation() { @Override // @Transactional(propagation = Propagation.REQUIRED) - public List searchByKeyword(String keyword, int category, int sort) { + public List searchByKeyword(String keyword, int category, Pageable pageable) { String categoryName = DongnaeBoardCategory.valueOf(category).name(); - - List dongnaeBoardList; - if (sort == 0) { - dongnaeBoardList = dongnaeBoardRepository.findByKeywordOrderByCreatedAt(keyword, categoryName); - } else { - dongnaeBoardList = dongnaeBoardRepository.findByKeywordOrderByLikes(keyword, categoryName); - } + List dongnaeBoardList = dongnaeBoardRepository.findByKeyword(keyword, categoryName, pageable); return getListResponses(dongnaeBoardList); } @@ -134,6 +116,7 @@ public void createBoard(DongnaeBoardDto.Request req) { } + /* * [동네정보] 게시글 상세 조회 */ From e94933204f6a08ed0707d6fcd01e578ad608f460 Mon Sep 17 00:00:00 2001 From: DDonghyeo Date: Fri, 28 Jul 2023 22:03:46 +0900 Subject: [PATCH 8/9] =?UTF-8?q?=F0=9F=9B=A0=EF=B8=8FRefactor=20#27:=20[?= =?UTF-8?q?=EB=8F=99=EB=84=A4=EC=A0=95=EB=B3=B4]=20=EA=B2=8C=EC=8B=9C?= =?UTF-8?q?=EA=B8=80=20=EC=98=88=EC=99=B8=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../account/sharing/dto/SharingDto.java | 7 +++++ .../AccountBookSharingServiceImpl.java | 12 +++++++-- .../domain/dongnae/dto/DongnaeBoardDto.java | 9 +++++++ .../service/DongnaeBoardServiceImpl.java | 26 +++++++++---------- 4 files changed, 39 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/dto/SharingDto.java b/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/dto/SharingDto.java index 7825ef8..01bb153 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/dto/SharingDto.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/dto/SharingDto.java @@ -10,7 +10,9 @@ import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; +import org.springframework.lang.Nullable; +import javax.validation.constraints.NotNull; import java.util.List; public class SharingDto { @@ -20,12 +22,17 @@ public class SharingDto { @AllArgsConstructor @NoArgsConstructor public static class Request { + + @NotNull(message = "카테고리는 필수입니다.") private int category; + @NotNull(message = "제목은 필수입니다.") private String title; + @NotNull(message = "내용은 필수입니다.") private String content; + private List images; public SharingBoard toEntity(User user) { diff --git a/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/service/AccountBookSharingServiceImpl.java b/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/service/AccountBookSharingServiceImpl.java index e741567..87338b3 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/service/AccountBookSharingServiceImpl.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/account/sharing/service/AccountBookSharingServiceImpl.java @@ -59,7 +59,6 @@ public List searchByKeyword(String keyword, int categor if (sharingBoards.isEmpty()) { throw new CustomException(ErrorCode.NO_CONTENT_FOUND); } - log.info("board found" + sharingBoards.get(0).getId()); return getListResponses(sharingBoards); } @@ -118,7 +117,7 @@ public SharingDto.Response getBoard(long board_id) { @Override public void updateBoard(long board_id, SharingDto.Request req) { SharingBoard board = sharingBoardRepository.findById(board_id).orElseThrow( - () -> new CustomException(ErrorCode.INVALID_VALUE)); + () -> new CustomException(ErrorCode.NO_CONTENT_FOUND)); board.updateBoard(req); sharingBoardRepository.save(board); @@ -132,6 +131,15 @@ public void updateBoard(long board_id, SharingDto.Request req) { */ @Override public void deleteBoard(long board_id) { + Optional sharingBoard = sharingBoardRepository.findById(board_id); + if (sharingBoard.isEmpty()) { + throw new CustomException(ErrorCode.NO_CONTENT_FOUND); + } + + if (!Objects.equals(sharingBoard.get().getUser().getId(), user.getId())) { + throw new CustomException(ErrorCode.INVALID_AUTH_TOKEN); + } + sharingBoardRepository.deleteById(board_id); } diff --git a/src/main/java/com/umc/DongnaeFriend/domain/dongnae/dto/DongnaeBoardDto.java b/src/main/java/com/umc/DongnaeFriend/domain/dongnae/dto/DongnaeBoardDto.java index 6489bcf..59ff18d 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/dongnae/dto/DongnaeBoardDto.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/dongnae/dto/DongnaeBoardDto.java @@ -11,6 +11,8 @@ import com.umc.DongnaeFriend.domain.user.entity.User; import lombok.*; +import javax.validation.Valid; +import javax.validation.constraints.NotNull; import java.util.List; import java.util.stream.Collectors; @@ -21,12 +23,19 @@ public class DongnaeBoardDto { @AllArgsConstructor @NoArgsConstructor public static class Request { + @NotNull(message = "카테고리는 필수입니다.") private int category; + + @NotNull(message = "제목은 필수입니다.") private String title; + @NotNull(message = "내응은 필수입니다.") private String content; private List images; + + @NotNull(message = "장소는 필수입니다.") private String place; + @NotNull(message = "자세한 장소는 필수입니다.") private String placeLocation; diff --git a/src/main/java/com/umc/DongnaeFriend/domain/dongnae/service/DongnaeBoardServiceImpl.java b/src/main/java/com/umc/DongnaeFriend/domain/dongnae/service/DongnaeBoardServiceImpl.java index a0554b0..97d4ef9 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/dongnae/service/DongnaeBoardServiceImpl.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/dongnae/service/DongnaeBoardServiceImpl.java @@ -12,6 +12,8 @@ import com.umc.DongnaeFriend.domain.type.YesNo; import com.umc.DongnaeFriend.domain.user.entity.User; import com.umc.DongnaeFriend.domain.user.repository.UserRepository; +import com.umc.DongnaeFriend.global.exception.CustomException; +import com.umc.DongnaeFriend.global.exception.ErrorCode; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; @@ -80,11 +82,15 @@ public List searchByKeyword(String keyword, int ca List dongnaeBoardList = dongnaeBoardRepository.findByKeyword(keyword, categoryName, pageable); + if (dongnaeBoardList.isEmpty()) { + throw new CustomException(ErrorCode.NO_CONTENT_FOUND); + } + return getListResponses(dongnaeBoardList); } /* - * [동네정보] 게시글 목록 조회 + * [동네정보] 게시글 목록 조회 DLETED * @param sort */ @Override @@ -106,12 +112,6 @@ public List searchAll(int sort) { @Override public void createBoard(DongnaeBoardDto.Request req) { //TODO : User Mapping UserRepository 필요. - - Dongnae dongnae = Dongnae.builder().id(1L).gu("서울구").dong("서울동").city("서울시").townName("무슨마을").build(); - User user = User.builder().id(1L).age(Age.AGE10).email("email").dongnae(dongnae).gender(Gender.FEMALE).infoCert(YesNo.NO).townCert(YesNo.NO).townCertCnt(10).id(1L).kakaoId(90L).nickname("nickname").refreshToken("refreshToken").build(); - - dongnaeRepository.save(dongnae); - userRepository.save(user); dongnaeBoardRepository.save(req.toEntity(user, dongnae)); } @@ -126,7 +126,7 @@ public DongnaeBoardDto.Response getBoard(long board_id) { //TODO : User 식별자 필요. Optional board = dongnaeBoardRepository.findById(board_id); if (board.isEmpty()) { - throw new RuntimeException(); + throw new CustomException(ErrorCode.NO_CONTENT_FOUND); } //Get Images @@ -165,17 +165,17 @@ public DongnaeBoardDto.Response getBoard(long board_id) { * [동네정보] 게시글 수정 */ @Override - public void updateBoard(long board_id, DongnaeBoardDto.Request request) throws AuthenticationException { + public void updateBoard(long board_id, DongnaeBoardDto.Request request) { Optional board = dongnaeBoardRepository.findById(board_id); if (board.isPresent()) { //User Validaiton if (!Objects.equals(board.get().getUser().getId(), user.getId())) { - throw new AuthenticationException(); + throw new CustomException(ErrorCode.INVALID_AUTH_TOKEN); } board.get().updateBoard(request); dongnaeBoardRepository.save(board.get()); } else { - throw new EntityNotFoundException(); + throw new CustomException(ErrorCode.INVALID_VALUE); } } @@ -183,10 +183,10 @@ public void updateBoard(long board_id, DongnaeBoardDto.Request request) throws A public void deleteBoard(long board_id) throws AuthenticationException { Optional board = dongnaeBoardRepository.findById(board_id); - if (board.isEmpty()) throw new EntityNotFoundException(); + if (board.isEmpty()) throw new CustomException(ErrorCode.NO_CONTENT_FOUND); //User Validation if (!Objects.equals(board.get().getUser().getId(), user.getId())) { - throw new AuthenticationException(); + throw new CustomException(ErrorCode.INVALID_AUTH_TOKEN); } else { dongnaeBoardRepository.deleteById(board_id); } From 02646197670cac88da8b742d86a32b1afff5e776 Mon Sep 17 00:00:00 2001 From: soogoori Date: Sat, 29 Jul 2023 10:00:07 +0900 Subject: [PATCH 9/9] =?UTF-8?q?=F0=9F=9B=A0=EF=B8=8F=20Feat=20#36=20:=20?= =?UTF-8?q?=EB=A7=88=EC=9D=B4=ED=94=84=EB=A1=9C=ED=95=84=20=EC=9C=A0?= =?UTF-8?q?=EC=A0=80=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../account/book/dto/TransactionDto.java | 19 --------------- .../book/service/AccountBookService.java | 3 --- .../book/service/TransactionService.java | 5 ---- .../service/AccountBookProfileService.java | 23 +++++++++++-------- .../service/DongnaeProfileService.java | 16 +++++++------ .../domain/profile/service/MyPageService.java | 1 - .../global/security/JwtTokenFilter.java | 2 -- src/main/resources/application.yml | 2 +- 8 files changed, 24 insertions(+), 47 deletions(-) diff --git a/src/main/java/com/umc/DongnaeFriend/domain/account/book/dto/TransactionDto.java b/src/main/java/com/umc/DongnaeFriend/domain/account/book/dto/TransactionDto.java index 7587d89..40070dc 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/account/book/dto/TransactionDto.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/account/book/dto/TransactionDto.java @@ -86,23 +86,4 @@ public static TransactionListResponse of(List transactionList){ return new TransactionListResponse(transactionResponses); } } - - - @Getter - @NoArgsConstructor - public static class TransactionByCategory{ - private TransactionCategory transactionCategory; - private Long price; - private Long expenditure; - private Long income; - private Long budget; - - public TransactionByCategory(TransactionCategory transactionCategory, Long price, Long expenditure, Long income, Long budget) { - this.transactionCategory = transactionCategory; - this.price = price; - this.expenditure = expenditure; - this.income = income; - this.budget = budget; - } - } } diff --git a/src/main/java/com/umc/DongnaeFriend/domain/account/book/service/AccountBookService.java b/src/main/java/com/umc/DongnaeFriend/domain/account/book/service/AccountBookService.java index d932ecc..2c5c95f 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/account/book/service/AccountBookService.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/account/book/service/AccountBookService.java @@ -23,9 +23,6 @@ public class AccountBookService { // 가계부 예산 설정 (한달) @Transactional public void createBudget(Integer year, Integer month, Long budget){ - /*this.accountBookRepository.findByYearAndMonth(year, month) - .ifPresent(ab->{throw new IllegalStateException("이미 예산이 설정되어있습니다."); - });*/ accountBookRepository.save(AccountBookDto.BudgetRequest.toEntity(year, month, budget)); } diff --git a/src/main/java/com/umc/DongnaeFriend/domain/account/book/service/TransactionService.java b/src/main/java/com/umc/DongnaeFriend/domain/account/book/service/TransactionService.java index c492a7f..a15cc8f 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/account/book/service/TransactionService.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/account/book/service/TransactionService.java @@ -18,11 +18,6 @@ @RequiredArgsConstructor public class TransactionService { - /** - * 월별 가계부 지출 및 수입 업데이트 시 지출(예산) 총액이 0보다 작아지면 예외 발생하게 만들기 - * 유저 권한 확인 필요 - */ - private final TransactionRepository transactionRepository; private final AccountBookRepository accountBookRepository; diff --git a/src/main/java/com/umc/DongnaeFriend/domain/profile/service/AccountBookProfileService.java b/src/main/java/com/umc/DongnaeFriend/domain/profile/service/AccountBookProfileService.java index aef7669..e226e7d 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/profile/service/AccountBookProfileService.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/profile/service/AccountBookProfileService.java @@ -14,6 +14,7 @@ import com.umc.DongnaeFriend.domain.user.repository.UserRepository; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Pageable; +import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Service; import java.util.List; @@ -21,6 +22,9 @@ import static com.umc.DongnaeFriend.global.util.TimeUtil.getTime; +/** + * TODO : 공감, 스크랩 게시물 조회 필요 + */ @Service @RequiredArgsConstructor public class AccountBookProfileService { @@ -35,8 +39,7 @@ public class AccountBookProfileService { private User checkUser(Long userId){ User user; if(userId==null){ // 유저아이디가 없으면 본인 - user = userRepository.findById(userId/*본인인증 필요*/) - .orElseThrow(); + user = findUser(); }else{ user = userRepository.findById(userId) .orElseThrow(); @@ -51,10 +54,9 @@ public AccountBookProfileDto.AccountBookProfileResponse getAbSharing(Long userId User user = checkUser(userId); // 유저 아이디가 있으면 타사용자, 유저아이디가 없으면 본인 - return AccountBookProfileDto.AccountBookProfileResponse.builder() - .userId(userId==null ? user.getId() /*본인인증 필요*/ : userId) - .isMine(userId.equals(user.getId() /*본인인증 필오*/)) + .userId(userId==null ? findUser().getId() : userId) + .isMine(user.getId().equals(findUser().getId())) .postTotalCount(sharingBoardRepository.countAllByUserId(user.getId())) .commentTotalCount(sharingCommentRepository.countAllByUserId(user.getId())) .likedTotalCount(sharingSympathyRepository.countAllByUserId(user.getId())) @@ -62,6 +64,7 @@ public AccountBookProfileDto.AccountBookProfileResponse getAbSharing(Long userId .content(getWrittenContent(user.getId(), category, pageable)) .build(); } + /** * 가계부 공유 - 작성한 글 , 작성한 댓글의 게시글 조회 */ @@ -78,10 +81,6 @@ public List getWrittenContent(Long us return getProfileListResponse(sharingBoardList); } - /** - * TODO : 공감, 스크랩 게시물 조회 필요 - */ - //ListResponse 변환 private List getProfileListResponse(List sharingBoardList){ @@ -98,4 +97,10 @@ private List getProfileListResponse(L .build()) .collect(Collectors.toList()); } + + public User findUser() { + Object userId = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); + return userRepository.findById((Long) userId) + .orElseThrow(); + } } diff --git a/src/main/java/com/umc/DongnaeFriend/domain/profile/service/DongnaeProfileService.java b/src/main/java/com/umc/DongnaeFriend/domain/profile/service/DongnaeProfileService.java index 07a4bc3..c305809 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/profile/service/DongnaeProfileService.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/profile/service/DongnaeProfileService.java @@ -22,6 +22,9 @@ import static com.umc.DongnaeFriend.global.util.TimeUtil.getTime; +/** + * TODO : 공감, 스크랩 게시물 조회 필요 + */ @Service @RequiredArgsConstructor public class DongnaeProfileService { @@ -36,8 +39,7 @@ public class DongnaeProfileService { private User checkUser(Long userId){ User user; if(userId==null){ // 유저아이디가 없으면 본인 - user = userRepository.findById(userId/*본인인증 필요*/) - .orElseThrow(); + user = findUser(); }else{ user = userRepository.findById(userId) .orElseThrow(); @@ -49,13 +51,12 @@ private User checkUser(Long userId){ * 동네 정보 프로필 조회 */ public DongnaeProfileDto.DongnaeProfileResponse getDongnaeProfile(Long userId, int category, Pageable pageable){ - User user = checkUser(userId); - // 유저 아이디가 있으면 타사용자, 유저아이디가 없으면 본인 + User user = checkUser(userId); return DongnaeProfileDto.DongnaeProfileResponse.builder() - .userId(userId==null ? user.getId() /*본인인증 필요*/ : userId) - .isMine(userId.equals(user.getId() /*본인인증 필오*/)) + .userId(userId==null ? findUser().getId() : userId) + .isMine(user.getId().equals(findUser().getId())) .postTotalCount(dongnaeBoardRepository.countAllByUserId(user.getId())) .commentTotalCount(commentRepository.countAllByUserId(user.getId())) .likedTotalCount(dongnaeSympathyRepository.countAllByUserId(user.getId())) @@ -63,9 +64,9 @@ public DongnaeProfileDto.DongnaeProfileResponse getDongnaeProfile(Long userId, i .content(getWrittenContent(user.getId(), category, pageable)) .build(); } + /** * 동네정보 - 작성한 글 , 작성한 댓글의 게시글 조회 - * TODO : 공감, 스크랩 게시물 조회 필요 */ public List getWrittenContent(Long userId, int category, Pageable pageable) { User user = checkUser(userId); @@ -79,6 +80,7 @@ public List getWrittenContent(Long u } return getProfileListResponse(dongnaeBoardList); } + //ListResponse 변환 private List getProfileListResponse(List dongnaeBoardList){ return dongnaeBoardList.stream() diff --git a/src/main/java/com/umc/DongnaeFriend/domain/profile/service/MyPageService.java b/src/main/java/com/umc/DongnaeFriend/domain/profile/service/MyPageService.java index 17e3d82..73fea1e 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/profile/service/MyPageService.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/profile/service/MyPageService.java @@ -58,7 +58,6 @@ public void updateMyPage(MyPageDto.MyPageRequestDto myPageRequest, MultipartFile user.updateProfileImage(fileName); log.info("프로필 이미지 업데이트완료"); user.updateProfile(myPageRequest.toEntity()); - log.info("프로필 업데이트 완료"); log.info("유저 닉네임 : " + user.getNickname()); log.info("유저 프로필 : " + user.getProfileImage()); diff --git a/src/main/java/com/umc/DongnaeFriend/global/security/JwtTokenFilter.java b/src/main/java/com/umc/DongnaeFriend/global/security/JwtTokenFilter.java index edb3311..ae2d9b5 100644 --- a/src/main/java/com/umc/DongnaeFriend/global/security/JwtTokenFilter.java +++ b/src/main/java/com/umc/DongnaeFriend/global/security/JwtTokenFilter.java @@ -52,7 +52,6 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse new UsernamePasswordAuthenticationToken( userId,null, null); // SecurityContextHolder에 인증 객체 저장 - SecurityContextHolder.getContext().setAuthentication(authenticationToken); filterChain.doFilter(request, response); @@ -69,6 +68,5 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse log.info("Header None"); filterChain.doFilter(request, response); } - } } \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 67434f0..b4076c7 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -12,7 +12,7 @@ spring: password: Tnqls9004^^ driver-class-name: com.mysql.cj.jdbc.Driver jpa: - hibernate.ddl-auto: update + hibernate.ddl-auto: create properties: hibernate: format_sql: true