2024. 11. 12. 12:56ㆍSpring/아웃소싱 프로젝트
📁️ 프로젝트 링크
- https://github.com/out-sorucing/out-sourcing
🛠️ 프로젝트 설계서
API명세서)
📚 담당역할
[가게 관리]
가게 생성)
ㄴ 기본으로 운영중(ACTIVE)상태로 생성
※ member_id - 회원 아이디는 커스텀어노테이션으로 팀원이 만들어 둔 객체를 활용하여 id만 추출해서 사용
전체 가게 목록조회)
ㄴ 생성한 가게를 전체 조회
가게 검색)
ㄴ 가게명, 메뉴명을 검색해서 포함되는 가게 데이터들을 조회
가게 단건 조회)
ㄴ 가게 고유번호(id)를 기준으로 해당 가게의 메뉴까지 한꺼번에 조회 가능
가게 수정)
ㄴ 가게명, 메뉴명을 검색해서 포함되는 가게 데이터들을 조회
가게 폐업)
ㄴ 폐업(DELETE)상태로 변경
가게관리 - 예외처리)
ㄴ 가게생성, 수정, 폐업 기능은 사장님회원만 가능
ㄴ 가게생성은 최대 3개까지만(각 사장님마다 운영중인 가게기준)
ㄴ 전체 가게목록, 가게 검색기능은 일반회원만 검색가능
ㄴ 본인의 가게만 수정과 폐업이 가능ㄴ 이미 폐업된 가게는 중복으로 폐업 불가능
[즐겨찾기 관리]
즐겨찾기 추가)
ㄴ 일반회원이 가게를 선택하여 즐겨찾기 추가
즐겨찾기 조회)
ㄴ 일반회원이 본인이 추가한 즐겨찾기 가게 조회
즐겨찾기 삭제)
ㄴ 즐겨찾기한 가게 선택하여 삭제
즐겨찾기관리 - 예외처리)
ㄴ 일반회원만 즐겨찾기 생성,조회,삭제 가능
ㄴ 운영중인가게만 즐겨찾기 추가가능
ㄴ 이미 즐겨찾기 추가한 가게는 중복으로 즐겨찾기 추가 불가
🛠️ 트러블슈팅 - 가게 단건 조회시 가게의 전체메뉴 불러오기
1. 개요
- 가게 단건 조회시 가게와 메뉴의 정보를 불러오던 과정을 작성해보겠습니다.
2. 배경
- 메뉴가 작업되기전 가게부터 작업하면서 1차로 가게정보만 가져오도록 작업을 진행했습니다.
3. 발단
- 엔티티에서 menu 객체를 따로 세팅하지 않았습니다.
4. 전개
- 2개의 객체의 정보를 어떻게 반환할지를 계속 고민했습니다
5. 위기
- 가게의 정보는 잘 받아오는데 menu는 어떻게 받을지 계속 고민했습니다.
6. 절정
- 메뉴관리 파트를 맡은 팀원이 만들어둔 responseDto를 List로 담고, 가게는 단건이기때문에 일반 객체로 담아 해결했습니다.
7. 결말
1) 엔티티에서 menu객체를 따로 활용하지 않았고, 가게 단건조회시 메뉴를 어떻게 가져올지 고민했습니다.
2) [가게 단건조회]이고 메뉴는 그 가게에 있는 전체메뉴를 가져오기때문에 이 부분을 중점적으로 생각했어야했습니다.
3) 가게는 Store 객체로 처리하여 1개의 값만 불러오고(id를 기준으로 데이터 1개추출)
4) 메뉴는 List로 MenuResponseDto를 가져와서 가게의 id(고유번호)로 해당되는 전체메뉴를 조회하여 반환해줍니다.
5) 최종으로 StoreOneResponseDto에서 가게와 메뉴를 함께 담아서 반환합니다.
간단회고)
- 객체를 자유롭게 활용하는 것에 대해서 아직 제가 유연하게 생각하지 못한다고 깨달았습니다. 이번에 가게와 메뉴의 정보를 함께 가져올때 좀 더 큰 그림을 생각했다면 충분히 빠르게 방법을 생각했을텐데란 생각도 들었습니다.
열심히 공부하겠습니다.