Skip to content

Commit

Permalink
#28 [Fix] 북마크 삭제 수정
Browse files Browse the repository at this point in the history
  • Loading branch information
JSoi committed Aug 4, 2022
1 parent ccfadaf commit 24afde3
Show file tree
Hide file tree
Showing 7 changed files with 50 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -40,32 +40,16 @@ public SuccessResponse bookmark(@RequestBody BookmarkRequestDto bookmarkRequestD
return new SuccessResponse("북마크를 폴더에 저장 완료");
}

@DeleteMapping("/bookmark/{bookmarkId}")
public SuccessResponse bookmarkDelete(@PathVariable int bookmarkId,
@DeleteMapping("/bookmark/{storeId}")
public SuccessResponse bookmarkDelete(@PathVariable Long storeId,
@AuthenticationPrincipal User user) {
if (user == null) {
throw new CustomException(ErrorCode.NO_USER_FOUND);
}
bookmarkService.bookmarkDelete(bookmarkId, user.getUsername());
bookmarkService.bookmarkDelete(storeId, user.getUsername());
return new SuccessResponse("북마크를 삭제 완료");
}

/**
* @param folderId 조회하고자 하는 폴더 아이디
* @param pageable 페이징 객체
* @param user 접근하는 유저
* @return 페이징된 객체와 List를 안에 넣어 리턴한다 - bookmark는 항상 "Y"
*/
@GetMapping("/bookmark/{folderId}")
public BookmarkPagedResponseDto bookmarkList(@PathVariable int folderId,
@PageableDefault(size = 20, sort = "createdAt", direction = Sort.Direction.DESC) Pageable pageable,
@AuthenticationPrincipal User user) {
if (user == null) {
throw new CustomException(ErrorCode.NO_USER_FOUND);
}
return bookmarkService.bookmarkList(user.getUsername(), folderId, pageable);
}

@GetMapping("/bookmarkTop")
public ResponseEntity<List<BookmarkInfoDto>> bookmarkTop(@AuthenticationPrincipal User user,
@PageableDefault(page = 0, size = 5, sort = "id", direction = Sort.Direction.DESC) Pageable pageable) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@
package com.mpnp.baechelin.bookmark.controller;


import com.mpnp.baechelin.bookmark.dto.BookmarkPagedResponseDto;
import com.mpnp.baechelin.bookmark.dto.FolderRequestDto;
import com.mpnp.baechelin.bookmark.dto.FolderResponseDto;
import com.mpnp.baechelin.bookmark.service.BookmarkService;
import com.mpnp.baechelin.bookmark.service.FolderService;
import com.mpnp.baechelin.common.SuccessResponse;
import com.mpnp.baechelin.exception.CustomException;
import com.mpnp.baechelin.exception.ErrorCode;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.web.PageableDefault;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
Expand All @@ -21,6 +26,7 @@
public class FolderController {

private final FolderService folderService;
private final BookmarkService bookmarkService;

/** 폴더 신규 생성 */
@PostMapping("/folder")
Expand Down Expand Up @@ -58,4 +64,20 @@ public SuccessResponse folderUpdate (@PathVariable int folderId,
public List<FolderResponseDto> folderList (@AuthenticationPrincipal User user){
return folderService.folderList(user.getUsername());
}

/**
* @param folderId 조회하고자 하는 폴더 아이디
* @param pageable 페이징 객체
* @param user 접근하는 유저
* @return 페이징된 객체와 List를 안에 넣어 리턴한다 - bookmark는 항상 "Y"
*/
@GetMapping("/folder/{folderId}")
public BookmarkPagedResponseDto bookmarkList(@PathVariable int folderId,
@PageableDefault(size = 20, sort = "createdAt", direction = Sort.Direction.DESC) Pageable pageable,
@AuthenticationPrincipal User user) {
if (user == null) {
throw new CustomException(ErrorCode.NO_USER_FOUND);
}
return bookmarkService.bookmarkList(user.getUsername(), folderId, pageable);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
public class FolderResponseDto {
private int id;
private String folderName;
private String thumbNail;

private List<BookmarkInfoDto> bookmarkList;

Expand All @@ -32,7 +33,6 @@ public static FolderResponseDto FolderDtoRes(Folder folder) {

if(folder.getBookmarkList() != null) {
for (Bookmark bookmark : folder.getBookmarkList()) {

BookmarkInfoDto bookmarkInfoDto = new BookmarkInfoDto(bookmark);
bookmarks.add(bookmarkInfoDto);

Expand All @@ -42,6 +42,7 @@ public static FolderResponseDto FolderDtoRes(Folder folder) {
return FolderResponseDto.builder()
.folderName(folder.getFolderName())
.id(folder.getId())
.thumbNail(null)
.build();

}
Expand All @@ -50,6 +51,7 @@ public static FolderResponseDto FolderDtoRes(Folder folder) {
.folderName(folder.getFolderName())
.id(folder.getId())
.bookmarkList(bookmarks)
.thumbNail(null)
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,21 @@
import org.springframework.data.domain.Page;
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.CrudRepository;
import org.springframework.data.repository.query.Param;

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

public interface BookmarkRepository extends CrudRepository<Bookmark, Integer> {
Page<Bookmark> findAllByFolderId(Folder folderId, Pageable pageable);
boolean existsByStoreIdAndUserId(Store store, User user);

Optional<Bookmark> findByStoreIdAndUserId(Store store, User user);

@Query("select b.storeId from Bookmark b where b.folderId=:folderId order by b.createdAt desc")
List<Integer> findLatestFolder(@Param("folderId") int folderId);

Page<Bookmark> findAllByUserId(User user, Pageable pageable);
}
Original file line number Diff line number Diff line change
Expand Up @@ -57,12 +57,12 @@ public void bookmark(BookmarkRequestDto bookmarkRequestDto, String socialId) {
}
}
@Transactional
public void bookmarkDelete(int bookmarkId, String socialId) {
public void bookmarkDelete(Long storeId, String socialId) {
User user = userRepository.findBySocialId(socialId); if(user == null) { throw new CustomException(ErrorCode.NO_USER_FOUND); }
Bookmark bookmark = bookmarkRepository.findById(bookmarkId).orElseThrow(() -> new CustomException(ErrorCode.NO_BOOKMARK_FOUND));
Store store = bookmark.getStoreId();
Store store = storeRepository.findById(storeId).orElseThrow(()-> new CustomException(ErrorCode.NO_STORE_FOUND));
Bookmark bookmark = bookmarkRepository.findByStoreIdAndUserId(store, user).orElseThrow(() -> new CustomException(ErrorCode.NO_BOOKMARK_FOUND));
store.removeBookmark(bookmark);
bookmarkRepository.deleteById(bookmarkId);
bookmarkRepository.delete(bookmark);
storeService.updateBookmarkCnt(store,socialId);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public class FolderService {

private final FolderRepository folderRepository;
private final UserRepository userRepository;

private final BookmarkRepository bookmarkRepository;
/**
* 폴더 생성
*/
Expand Down Expand Up @@ -73,8 +73,13 @@ public List<FolderResponseDto> folderList(String socialId) {
}
List<FolderResponseDto> folderResponseDtoList = new ArrayList<>();
for (Folder obj : user.getFolderList()) {
folderResponseDtoList.add(FolderResponseDto.FolderDtoRes(obj));
FolderResponseDto folderResponseDto = FolderResponseDto.FolderDtoRes(obj);
List<Integer> latestFolder = bookmarkRepository.findLatestFolder(obj.getId());
// folderResponseDto.setThumbNail();
// folderResponseDtoList.add();

}
return folderResponseDtoList;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@
import com.mpnp.baechelin.store.domain.StoreImage;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

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

public interface StoreImgRepository extends JpaRepository<StoreImage, Integer> {

@Query("select si.storeImageUrl from StoreImage si where si.store=:storeId")
String findLatestImage(@Param("storeId") int storeId);
List<StoreImage> findAllByStoreId(Long storeId);

StoreImage findByStoreId(long storeId);
Expand Down

0 comments on commit 24afde3

Please sign in to comment.