Skip to content

Commit c6d6864

Browse files
authored
Merge pull request #86 from Decodeat/feat/85-like-products-page
Feat/85 like products page
2 parents 5b9d733 + 845f34e commit c6d6864

File tree

6 files changed

+30
-4
lines changed

6 files changed

+30
-4
lines changed

src/main/java/com/DecodEat/domain/products/controller/ProductController.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,4 +127,14 @@ public ApiResponse<UserBasedRecommendationResponseDto> getUserBasedRecommendatio
127127
return ApiResponse.onSuccess(productService.getUserBasedRecommendation(user));
128128
}
129129

130+
@GetMapping("/my-like")
131+
@Operation(summary = "내가 좋아요 한 상품", description ="내가 좋아요한 상품 페이징")
132+
public ApiResponse<PageResponseDto<ProductSearchResponseDto.ProductPrevDto>> getMyLikedProducts(@CurrentUser User user,
133+
@RequestParam(defaultValue = "1") int page,
134+
@RequestParam(defaultValue = "20") int size){
135+
Pageable pageable = PageRequest.of(page - 1, size, Sort.by("createdAt").descending()); // 0-based
136+
137+
return ApiResponse.onSuccess(productService.getMyLikedProducts(user, pageable));
138+
}
139+
130140
}

src/main/java/com/DecodEat/domain/products/dto/response/UserBasedRecommendationResponseDto.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@
1313
@Builder
1414
public class UserBasedRecommendationResponseDto {
1515
private String message;
16-
private ProductSearchResponseDto.SearchResultPrevDto standardProduct;
16+
private ProductSearchResponseDto.ProductPrevDto standardProduct;
1717
private List<ProductSearchResponseDto.ProductPrevDto> products;
1818
}

src/main/java/com/DecodEat/domain/products/entity/Product.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ public class Product extends BaseEntity {
5454
@OneToMany(mappedBy = "product", cascade = CascadeType.REMOVE, orphanRemoval = true)
5555
private List<UserBehavior> userBehaviors = new ArrayList<>();
5656

57+
@OneToMany(mappedBy = "product", cascade = CascadeType.REMOVE, orphanRemoval = true)
58+
private List<ProductLike> productLikes = new ArrayList<>();
59+
5760
/**
5861
* 상품의 대표 이미지를 새로운 URL로 업데이트
5962
*/

src/main/java/com/DecodEat/domain/products/repository/ProductRepository.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,7 @@ Slice<Product> findCompletedProductsByCursor(@Param("cursorId") Long cursorId,
3131

3232
@Query(value = "SELECT p.product_id FROM product p JOIN user_behavior ub ON p.product_id = ub.product_id WHERE ub.user_id = :userId AND ub.behavior = :behavior ORDER BY RAND() LIMIT 1", nativeQuery = true)
3333
Optional<Long> findRandomProductIdByUserIdAndBehavior(@Param("userId") Long userId, @Param("behavior") Behavior behavior);
34+
35+
@Query("SELECT pl.product FROM ProductLike pl WHERE pl.user.id = :userId")
36+
Page<Product> findLikedProductsByUserId(@Param("userId") Long userId, Pageable pageable);
3437
}

src/main/java/com/DecodEat/domain/products/service/ProductService.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,16 @@ public PageResponseDto<ProductRegisterHistoryDto> getRegisterHistory(User user,
192192
return new PageResponseDto<>(result);
193193
}
194194

195+
public PageResponseDto<ProductSearchResponseDto.ProductPrevDto> getMyLikedProducts(User user, Pageable pageable) {
196+
197+
Long userId = user.getId();
198+
199+
Page<Product> pagedProducts = productRepository.findLikedProductsByUserId(userId, pageable);
200+
Page<ProductSearchResponseDto.ProductPrevDto> result = pagedProducts.map(ProductConverter::toProductPrevDto);
201+
202+
return new PageResponseDto<>(result);
203+
}
204+
195205
public List<ProductSearchResponseDto.ProductPrevDto> getProductBasedRecommendation(Long productId, int limit) {
196206

197207
ProductBasedRecommendationRequestDto request =
@@ -239,10 +249,10 @@ public UserBasedRecommendationResponseDto getUserBasedRecommendation(User user)
239249
.orElseThrow(()-> new GeneralException(NO_USER_BEHAVIOR_EXISTED));
240250
Product standardProduct = productRepository.findById(standardProductId).orElseThrow(()->new GeneralException(NO_RESULT));
241251

242-
List<ProductSearchResponseDto.ProductPrevDto> products = getProductBasedRecommendation(standardProductId, 5);
252+
List<ProductSearchResponseDto.ProductPrevDto> products = getProductBasedRecommendation(standardProductId, 10);
243253

244254
return UserBasedRecommendationResponseDto.builder()
245-
.standardProduct(ProductConverter.toSearchResultPrevDto(standardProduct))
255+
.standardProduct(ProductConverter.toProductPrevDto(standardProduct))
246256
.message(message)
247257
.products(products)
248258
.build();

src/main/java/com/DecodEat/domain/report/entity/ImageReport.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
@NoArgsConstructor(access = AccessLevel.PROTECTED)
2121
public class ImageReport extends ReportRecord {
2222

23-
@Column(name = "image_url")
23+
@Column(name = "image_url",length = 2048)
2424
private String imageUrl;
2525

2626
}

0 commit comments

Comments
 (0)