🔗ERD Password : 7o3ffx
- 개발 기획서 작성 및 역할 분담, 우선순위 결정
- 서버는 austin이 기존에 쓰던 서버로 하기로 함
- RDS 새로 구축하고 austin에게 정보 공유
- ERD 테이블 리스트업 완료
- ERD 유저 관련 테이블, 가게 관련 테이블, 마이리스트, 잇딜, 가봤어요, 가고싶다, 북마크 설계 완료
- 깃허브 각자의 브랜치 생성, 첫 커밋
-
서버 pem키 공유받음
-
Prod / Dev 디렉토리 나눈후 각 경로로 서버 코드블록 설정
-
ERD 리뷰 관련 테이블, 팔로우 테이블 설계 완료 (ERD설계 완료)
-
DB에 Prod / Dev 로 나눠서 스키마 두개에 테이블 생성 완료
-
API 리스트업 완료
-
회원가입 API 구현 완료
-Austin : 카카오 회원가입 시 전화번호, 비밀번호가 없으므로 Users 테이블에서 두개 Null가능으로 변경 회원가입 API 코드에서 null validation 처리
-
로그인 API 구현 완료
-
woody, austin → main 머지 과정에서 컨플릭트 발생 ⇒ 첫 머지여서 수동으로 해결
-
서버에서 클론하고 구동 회원가입, 로그인 테스트
-
10:00 PM 클라이언트 분들과 회의
- API 명세서 스프레드시트 공유 - 회원가입 로그인 외 개발 우선 순위 결정
-
가게 상세 조회 API
- GET 할때마다 조회수++ ⇒ 트랜잭션 처리 - 리뷰 수, 가고싶다 수 count
-
리뷰, 가고싶다가 없는 경우 조회가 안되는 문제 발생 ⇒ LEFT JOIN으로 해결
-
가게 메뉴 상세 조회 API
- 메뉴 리스트와 메뉴판 이미지 리스트 합산해서 return
-
가게 메뉴 상세조회 API 와 Austin이 개발한 지역별 가게 조회 API가 URI가 겹쳐서 컨플릭트 발생
⇒ 가게 메뉴 상세조회 URI에 /detail 추가
알게된 점 : QueryString은 uri 구분에 영향을 주지 않는다…
-
서버 반영 완료
-
메인화면 가게 리스트 거리 필터링 조회 API
- 필터링 조건에 없는 값이 들어올 경우 validation 처리 - 유저 위치와 가게 위치 거리 계산 후 필터링 - 스크롤 당 가게 10개씩 불러오도록 페이지네이션
-
리뷰 상세 조회 API
- 리뷰 정보 객체, 리뷰 이미지 리스트, 댓글 리스트를 포함한 하나의 객체로 반환
-
Austin의 안드로이드 폰에서는 메인화면이 살짝 다르게 보여서, 가게 리스트 Res가 나와 다르게 나오는 문제 발생 ⇒ 클라이언트가 IOS이므로 맞춰서 수정
-
유저 위치정보 업데이트 API
- 위도 경도값 범위에 따라 validation 처리
-
메인화면 음식 종류별 가게 리스트 조회 API
- 지역 필터가 적용된 상태를 기본으로 추가로 필터링 하는 것
-
포스트맨에서 쿼리스트링 값에 여러개가 들어 갈 경우 한글 마지막 글자가 씹히는 현상 발생
ex) 부천시,홍대 로 요청시 ‘대'가 짤림
⇒ 필터값 여러개 요청시 마지막값 뒤에도 ,를 붙이면 해결
- 스크롤당 가게 10개씩 보여지도록 페이지네이션
-
메인화면 주차가능한 가게 리스트 조회 API
- 지역 필터가 적용된 상태를 기본으로 추가로 필터링 하는 것 - 스크롤당 가게 10개씩 보여지도록 페이지네이션
-
가게 리스트 조회에서 가게 상세조회로 이어질 수 있도록 반환값에 storeId 추가
-
10:00 PM 클라이언트 분들과 회의
- 필터링 API 특성 상 쿼리스트링이 복잡해서 화면 공유하여 포스트맨 테스트법 간략히 설명 - 로그인 시 반환되는 userId 저장해두고 요청 시 path variable로 쓸 것 - 회원가입, 로그인 구현 어느정도 완료 하셨고, 다음으로 유저 페이지 구현 계획 중이라고 말씀하심 - 남은 것 중 유저 관련 API 먼저 개발하기로 결정
-
가게별 리뷰 조회 API
- 리뷰가 리스트로 보여지는데, 리뷰마다 사진이 여러장이여서 Concat 이용하여 json형식으로 연결
-
가게 가고싶다 생성 API
- 이미 가고싶다 생성한 경우, 이미 가봤어요 처리한 경우 validation처리
-
가게 가고싶다 삭제 API
- 가고싶다 생성한 적이 없는 경우, 이미 가봤어요 처리한 경우 validation처리
-
메인화면 가게 리스트 조회시, 가고싶다와 가봤어요 여부에 따라 다르게 표시됨을 발견
⇒ 메인화면 모든 API 반환값에 Bool형태의 wishCheck 와 visitedCheck 추가
-
가게 상세조회 시 유저의 가고싶다, 가봤어요(몇번) 횟수가 표시됨
⇒ wishCheck, visitedCount 추가
-
가게별 리뷰조회 시 유저의 리뷰 좋아요 여부가 표시됨
⇒ likeCheck 추가
-
리뷰 상세조회 시 해당 가게에 대한 유저의 가고싶다, 가봤어요 여부, 리뷰 좋아요 여부가 표시됨
⇒ wishCheck, visitedCheck, likeCheck 추가
-
가게 가봤어요 생성 API
- 가게당 같은 날짜에 한번만 생성 가능하도록 validation처리 - 가고싶다 생성했던 가게에 가봤어요를 생성할 경우, 가고싶다는 삭제 처리 ⇒트랜잭션 적용
-
가게 가봤어요 삭제 API
- 해당 가봤어요를 생성했던 유저만 삭제할 수 있도록 validation처리
-
가게 가봤어요 수정 API
- 해당 가봤어요를 생성했던 유저만 삭제할 수 있도록 validation처리 - 공개/비공개 여부만 수정가능 → 쿼리스트링값으로 수정사항 받음
-
가봤어요도 리뷰와 마찬가지로 좋아요, 댓글 달 수 있는 것을 알게됨…
⇒ ERD 가봤어요 댓글, 가봤어요 좋아요 테이블 추가 생성
-
가봤어요에 글을 적을 수 있는 것을 알게됨
⇒생성 시 추가해주고, 수정 API는 쿼리스트링 말고 RequestBody형식으로 변경함
-
스프링부트 타임존 설정이 계속 UTC시간으로 찍혀서 가봤어요 하루 제한이 잘 안됨
⇒ 구글링해서 여러가지 설정을 해봤지만 여전히 UTC로 찍혀서 날짜가 같을 경우 말고, 24시간 이내 재생성 불가로 변경 : 알고보니 이게 맞는거였음.
-
가봤어요 상세조회 API
- 댓글 리스트를 포함한 하나의 객체로 반환
-
가게별 리뷰 조회에 concat을 이용해 json 형식으로 했던 것
⇒ 리스트를 포함한 객체로 수정(이전 쿼리 컬럼값을 이미지 리스트를 추출하는 쿼리 인자로 넣을 수 있음)
-
가봤어요 좋아요 생성 삭제 API
-
가봤어요 댓글 생성 삭제 API
- 삭제시 해당 좋아요 or 댓글을 생성한 유저가 맞는지 확인 - 생성시 해당 가봤어요가 존재하는지 확인 - 댓글 생성시 태그할 유저 아이디가 존재하는지 확인
-
가봤어요 댓글 수정 API
- 태그할 유저 아이디, 댓글 내용만 수정 가능 - 해당 댓글을 생성한 유저가 맞는지 확인
-
가봤어요 좋아요한 유저 조회 API
- 접근한 유저의 팔로우 여부 표시
-
가봤어요 삭제시, 연결된 다른 테이블 데이터들 때문에 데이터베이스 오류 발생
⇒ 가봤어요 삭제 요청시, 해당 가봤어요의 모든 댓글, 모든 좋아요를 먼저 삭제하도록 트랜잭션 처리
-
마찬가지 방법으로 리뷰 삭제 API
⇒ 해당 리뷰의 모든 댓글, 모든 좋아요, 모든 이미지를 먼저 삭제하도록 트랜잭션 처리
-
10:00 PM 클라이언트 분들과 회의
- 메인화면 가게 조회 시 한번에 조회 가능하도록 페이지네이션 없이 보내드리는게 편하다고 말씀하심 ⇒ 모든 API 페이지네이션 없애기로 결정 - 망고픽 탭에서는 스토리, Top리스트 제외하고 Eat딜 탭만 구현하기로 결정 ⇒ 따라서 북마크도 마이리스트에만 가능하도록 구현하기로 결정 - Eat딜 결제시에는 결제방법 선택 후, 결제 버튼 누르면 결제완료 되는 형식으로 구현하기로 결정 - 가게 데이터 10개 더 생성하기로 했고, 가게 썸네일 null값 최대한 없도록 리뷰이미지 삽입 요청 - 본인 프로필 조회, 다른 유저 프로필 조회 다른 API로 짜기로 결정 ⇒ 다른 경로로 본인 프로필 조회 시 리다이렉트는 프론트단에서 해주는 걸로 결정
-
가게 데이터 15개 추가 생성
-
가게당 리뷰 & 리뷰 이미지 1개 이상씩 생성
-
내 정보 조회 API
⇒ 다른 경로로 본인 프로필 조회 시 리다이렉트는 프론트단에서 해주는 걸로
-
프론트 : 메인화면 가게 리스트 조회 시 거리순 정렬이 잘 안됨
⇒ 정렬이 (subRegion + 거리)로 되어 있어서 지역별로 따로 거리순 정렬이 되는 문제였음
⇒ 메인화면 모든 API subRegion(String)과 거리(Float)로 분리
-
마이리스트 생성 API
-
가게 마이리스트에 추가 API
- 본인이 생성한 마이리스트가 맞는지 확인
-
2차 피드백
- validation처리 잘했으니 api 30개 이상 구현하고 나서는 문자전송(네이버sends), 결제 API 등 심화 API 도전해보기
-
리뷰 상세조회, 가봤어요 상세조회 시 몇몇 유저가 작성한 리뷰만 조회가 잘 안됨
⇒ 쿼리문에서 팔로잉 테이블 연결이 잘못되어서 팔로우 관계가 없는 유저들이 조회가 안되는 거였음
⇒ 쿼리문 수정으로 해결
-
클라이언트 : 가게 상세조회, 가게 메뉴 상세조회 API 반환값에 가게 식별번호 추가 요청
⇒ 반환값에 storeId 추가
-
클라이언트 : 가게 상세조회 API 명세서에 isSuccess 데이터 타입 질문
⇒ 표기 오류 String → boolean 수정
-
수정 사항 서버 반영
-
유저 마이리스트 조회 API
- 본인 조회와 다른 유저 조회가 화면이 동일함 - 접근한 유저의 북마크 유무 표시, 해당 마이리스트의 북마크 count 표시 - 커버 이미지는 마이리스트 내 첫번째 가게의 리뷰이미지 1개를 가져옴
-
마이리스트 상세조회 API
- 마이리스트 정보, 해당 마이리스트에 포함된 가게 리스트를 포함한 하나의 객체로 반환 - 해당 메소드를 실행할때 마다 마이리스트 조회수 증가 ⇒ 트랜잭션 처리
-
유저 북마크 조회 API
- 마이리스트만 북마크 가능하도록 구현했으므로, 유저 마이리스트 조회와 비슷하게 구현
-
잇딜 관련 API 구현을 위한 데이터 추가 생성 (잇딜, 잇딜 이미지)
-
10:00 PM 클라이언트 분들과 회의
- 우지님이 화면 공유하여 직접 구현하신 내용 시뮬레이터로 보여주심😯👍🏻 - 카카오 로그인 관련하여 데이터 어떤식으로 넘겨줘야 하는지 오스틴이 한번 더 설명 - 우지님이 시간 부족으로 상세페이지 보다 전체적인 조회 API들을 우선적으로 구현하실 거라고 말씀하심
⇒ 남은 API들 전체 조회 우선으로 처리할 예정!
-
잇딜 전체조회 API
- 지역필터링 적용
-
잇딜 상세조회 API
- 잇딜 정보, 포함된 가게 리스트를 포함한 하나의 객체로 반환 - 포함된 가게 리스트 들에는 해당 가게의 리뷰가 하나씩 포함되도록 구현
-
잇딜 구매하기 API
- 신용카드 : 1 카카오페이 : 2 - int 값으로 결제 수단만 전달받음 - 수량은 항상 1개씩밖에 안되는 시스템 - 결제 성공 ⇒ EatDealPayment 테이블에 데이터 추가
-
휴대폰 인증 문자 전송 API
- 외부 API 사용해보기 ⇒ CoolSMS - 쿼리스트링으로 문자받을 전화번호를 받아오면, 랜덤으로 4자리 인증번호를 생성해서 해당 번호로 문자 전송, 같은 인증번호 반환 - 클라이언트 측에서 반환받은 인증번호와 유저가 입력한 인증번호가 일치하는지 확인
-
prod 서버 업로드 클라이언트 분들 dev 사용하고 계셔서 둘다 nohup으로 돌아가도록 설정 (동일서버)
- 영상 촬영 및 마무리