diff --git a/be/src/main/java/com/secondhand/category/CategoryController.java b/be/src/main/java/com/secondhand/category/CategoryController.java index 360004c9e..252a7bc13 100644 --- a/be/src/main/java/com/secondhand/category/CategoryController.java +++ b/be/src/main/java/com/secondhand/category/CategoryController.java @@ -2,11 +2,13 @@ import com.secondhand.category.dto.CategoriesDto; import com.secondhand.category.dto.CategoryInterestsDto; +import com.secondhand.category.dto.PostTitleDto; import com.secondhand.post.repository.InterestRepository; import com.secondhand.util.CustomResponse; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -17,6 +19,7 @@ public class CategoryController { private final CategoryService categoryService; private final InterestRepository interestRepository; + @GetMapping public ResponseEntity> getCategoryList() { return ResponseEntity @@ -40,4 +43,17 @@ public ResponseEntity> getInterestCategoryL new CategoryInterestsDto(interestRepository.interestCategory())) ); } + + @GetMapping("/recommend") + public ResponseEntity> findRecommendedCategories(@RequestBody PostTitleDto postTitleDto) { + + return ResponseEntity + .ok() + .body(new CustomResponse<>( + "success", + 200, + "관심 카테고리 목록 조회 성공", + categoryService.getRecommendedCategories(postTitleDto.getTitle()) + )); + } } diff --git a/be/src/main/java/com/secondhand/category/CategoryService.java b/be/src/main/java/com/secondhand/category/CategoryService.java index db6e3a7ca..bf5767c5c 100644 --- a/be/src/main/java/com/secondhand/category/CategoryService.java +++ b/be/src/main/java/com/secondhand/category/CategoryService.java @@ -1,10 +1,13 @@ package com.secondhand.category; import com.secondhand.category.dto.CategoriesDto; +import com.secondhand.category.dto.CategoryDto; import com.secondhand.post.repository.CategoryRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.*; + @Service @RequiredArgsConstructor public class CategoryService { @@ -15,4 +18,28 @@ public CategoriesDto getCategoryList() { return categoryRepository.findAllCategories(); } + + public CategoriesDto getRecommendedCategories(String postTitle) { + + return recommendCategories(categoryRepository.findAllCategories().getCategories()); + } + + private CategoriesDto recommendCategories(List categories) { + + List recommendedCategories = new ArrayList<>(); + + Random random = new Random(); + Set numbers = new HashSet<>(); + + while (numbers.size() < 3) { + int randomNumber = random.nextInt(categories.size() + 1); + numbers.add(randomNumber); + } + + for (Integer number : numbers) { + recommendedCategories.add(categories.get(number)); + } + + return new CategoriesDto(recommendedCategories); + } } diff --git a/be/src/main/java/com/secondhand/category/dto/CategoriesDto.java b/be/src/main/java/com/secondhand/category/dto/CategoriesDto.java index 3c1146867..337406f43 100644 --- a/be/src/main/java/com/secondhand/category/dto/CategoriesDto.java +++ b/be/src/main/java/com/secondhand/category/dto/CategoriesDto.java @@ -3,7 +3,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; -import java.util.List; +import java.util.*; @Getter @AllArgsConstructor diff --git a/be/src/main/java/com/secondhand/category/dto/PostTitleDto.java b/be/src/main/java/com/secondhand/category/dto/PostTitleDto.java new file mode 100644 index 000000000..0c48f750f --- /dev/null +++ b/be/src/main/java/com/secondhand/category/dto/PostTitleDto.java @@ -0,0 +1,9 @@ +package com.secondhand.category.dto; + +import lombok.Getter; + +@Getter +public class PostTitleDto { + + private String title; +} diff --git a/be/src/main/java/com/secondhand/category/dto/RecommendedCategoriesDto.java b/be/src/main/java/com/secondhand/category/dto/RecommendedCategoriesDto.java new file mode 100644 index 000000000..eecc51980 --- /dev/null +++ b/be/src/main/java/com/secondhand/category/dto/RecommendedCategoriesDto.java @@ -0,0 +1,11 @@ +package com.secondhand.category.dto; + +import lombok.Getter; + +import java.util.List; + +@Getter +public class RecommendedCategoriesDto { + + private List categories; +} diff --git a/be/src/main/java/com/secondhand/category/dto/RecommendedCategoryDto.java b/be/src/main/java/com/secondhand/category/dto/RecommendedCategoryDto.java new file mode 100644 index 000000000..838255611 --- /dev/null +++ b/be/src/main/java/com/secondhand/category/dto/RecommendedCategoryDto.java @@ -0,0 +1,15 @@ +package com.secondhand.category.dto; + +import com.querydsl.core.annotations.QueryProjection; + +public class RecommendedCategoryDto { + + private int id; + private String name; + + @QueryProjection + public RecommendedCategoryDto(CategoryDto categoryDto) { + this.id = categoryDto.getId(); + this.name = categoryDto.getName(); + } +} diff --git a/be/src/main/java/com/secondhand/post/repository/CategoryRepositoryCustom.java b/be/src/main/java/com/secondhand/post/repository/CategoryRepositoryCustom.java index c45d5b438..23d636122 100644 --- a/be/src/main/java/com/secondhand/post/repository/CategoryRepositoryCustom.java +++ b/be/src/main/java/com/secondhand/post/repository/CategoryRepositoryCustom.java @@ -5,4 +5,5 @@ public interface CategoryRepositoryCustom { CategoriesDto findAllCategories(); + } diff --git a/be/src/main/java/com/secondhand/post/repository/CategoryRepositoryImpl.java b/be/src/main/java/com/secondhand/post/repository/CategoryRepositoryImpl.java index 93bd9b833..333687491 100644 --- a/be/src/main/java/com/secondhand/post/repository/CategoryRepositoryImpl.java +++ b/be/src/main/java/com/secondhand/post/repository/CategoryRepositoryImpl.java @@ -3,7 +3,7 @@ import com.querydsl.jpa.impl.JPAQueryFactory; import com.secondhand.category.dto.CategoriesDto; import com.secondhand.category.dto.QCategoryDto; -import com.secondhand.post.repository.CategoryRepositoryCustom; +import com.secondhand.category.dto.RecommendedCategoriesDto; import javax.persistence.EntityManager; @@ -29,4 +29,5 @@ public CategoriesDto findAllCategories() { .from(category) .fetch()); } + }