Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feat #7] 메뉴 도메인 구현 #8

Open
wants to merge 41 commits into
base: main
Choose a base branch
from
Open

Conversation

squareCaaat
Copy link
Collaborator

@squareCaaat squareCaaat commented Nov 8, 2024

구현 내용

엔티티

  • Menu
    • aromas는 향(String) 이 Key가 되고 Review에 따른 향의 수(Integer)가 Value가 되는 Map<String, Integer> 양식으로 하였습니다.
    • Review를 등록했을 때 calculateByReview를 통해 평점과 각 속성들의 수치를 계산합니다.
  • Like
    • 단순히 유저 - 메뉴 연결관계를 표현하는 테이블입니다.
    • like 여부에 따라 형성, 삭제됩니다.
  • Review
    • @CreatedDate, @LastModifiedDate 사용해 작성일/수정일을 자동으로 관리합니다.

컨트롤러

  • MenuController /api/menus
    • 메뉴 조회 /attribute
      • ?type={ACIDITY|BODY|BITTERNESS|SWEETNESS}
      • &degree={NONE|LOW|MEDIUM|HIGH|VERY_HIGH}
      • 해당 속성의 degree에 해당하는 범위의 모든 메뉴들을 찾습니다.
      • QueryDSL을 활용하였습니다.
    • 아로마로 조회
      • ?aromas={"nutty", "mild", ...}
      • 해당 아로마를 포함하는 모든 메뉴를 반환합니다.
      • 아로마 양식은Map<String, Integer> 형식입니다.
    • 검색어로 메뉴 조회
      • ?query={keyword}
      • 검색어로 메뉴를 찾습니다. 현재 구현된 로직은 검색어를 메뉴명으로 한정해서 메뉴명으로 메뉴들을 찾습니다. QueryDSL을 활용했습니다.
    • 메뉴 데이터 조회 /{menu_id}
      • 메뉴 id로 메뉴의 상세 정보를 반환합니다. 아직 리뷰는 반환하지 않습니다.
    • 메뉴 등록
      • POST
    • 리뷰 등록 /{menu_id}/review
      • POST
    • 리뷰 삭제 /{menu_id}/review
      • DELETE
    • 메뉴 리포트 /{menu_id}/report - 미구현 ❌
    • 좋아요 /{menu_id}/like
      • POST
  • ReviewController /api/reviews
    • 메뉴로부터 리뷰 조회 /menus/{menu_id}
      • 메뉴 id로 해당 메뉴에대한 모든 리뷰를 찾습니다.

서비스 구현체

  • MenuService
  • ReviewService
    • 리뷰 생성
      • 속성의 수치는 String으로 들어온다고 가정 (e.g. LOW)해서 Degree enum을 통해 double 값을 찾고 메뉴의 평점, 각 속성들의 수치를 반영합니다.
  • LikeService
    • like 여부에 따라 Menu의 Like 수가 증가, 연결 테이블 Like가 형성됩니다.

유의 사항

📝 제가 짠 코드에서 Member는 모두 Controller 단에서는@AuthenticationPrincipal 을 활용해 socialId로 Member를 찾습니다.
📝 서비스와 레포지토리에서도 long socialId로 Member를 찾도록 하였습니다.
📝 QueryDSL 을 처음 사용해봐서 효율적인 쿼리가 아닐 수 있습니다. 😢
❗이때 socialId는 기존의 String 타입에서 Long 타입으로 변경되었습니다. 이 부분은 추후 제 코드를 참고해 수정하셔도 좋습니다!
❌ 이미지 관련 로직은 아직 구현하지 못하였습니다.
❌ Member와 다른 엔티티 간의 관계를 설정하지 않았습니다.

🙏 요청 사항

Redis 환경이 처음이고 카카오API 서비스가 비즈앱으로 전환이 안되서 이메일을 받아 올 수 없어서 구현한 로직을 테스트해주실 수 있나요?
이미지 처리 관련 로직이 없어서 어떻게 처리해야할지 모르겠어요.

@squareCaaat squareCaaat added the enhancement New feature or request label Nov 8, 2024
@squareCaaat squareCaaat self-assigned this Nov 8, 2024
@squareCaaat squareCaaat linked an issue Nov 8, 2024 that may be closed by this pull request
4 tasks
@gyehyun-bak gyehyun-bak marked this pull request as ready for review November 9, 2024 12:49
@gyehyun-bak gyehyun-bak marked this pull request as draft November 9, 2024 12:49
@squareCaaat squareCaaat marked this pull request as ready for review November 14, 2024 15:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Feat] 메뉴 도메인 구현
2 participants