Coder Social home page Coder Social logo

mangoplateclone's Introduction

망고플레이트 서버 클론 코딩 개발일지

🔗API 명세서

🔗ERD Password : 7o3ffx


🔥 2022-05-21 토요일


  • 개발 기획서 작성 및 역할 분담, 우선순위 결정
  • 서버는 austin이 기존에 쓰던 서버로 하기로 함
  • RDS 새로 구축하고 austin에게 정보 공유
  • ERD 테이블 리스트업 완료
  • ERD 유저 관련 테이블, 가게 관련 테이블, 마이리스트, 잇딜, 가봤어요, 가고싶다, 북마크 설계 완료
  • 깃허브 각자의 브랜치 생성, 첫 커밋

🔥 2022-05-22 일요일


  • 서버 pem키 공유받음

  • Prod / Dev 디렉토리 나눈후 각 경로로 서버 코드블록 설정

  • ERD 리뷰 관련 테이블, 팔로우 테이블 설계 완료 (ERD설계 완료)

  • DB에 Prod / Dev 로 나눠서 스키마 두개에 테이블 생성 완료

  • API 리스트업 완료

  • 회원가입 API 구현 완료

     -Austin : 카카오 회원가입 시 전화번호, 비밀번호가 없으므로 Users 테이블에서 두개 Null가능으로 변경 
    
    
           회원가입 API 코드에서 null validation 처리
    
  • 로그인 API 구현 완료

  • woody, austin → main 머지 과정에서 컨플릭트 발생 ⇒ 첫 머지여서 수동으로 해결

  • 서버에서 클론하고 구동 회원가입, 로그인 테스트

  • 10:00 PM 클라이언트 분들과 회의

        - API 명세서 스프레드시트 공유
    
        - 회원가입 로그인 외 개발 우선 순위 결정 
    

🔥 2022-05-23 월요일


  • 가게 상세 조회 API

      - GET 할때마다 조회수++ ⇒ 트랜잭션 처리
    
      - 리뷰 수, 가고싶다 수 count
    
  • 리뷰, 가고싶다가 없는 경우 조회가 안되는 문제 발생 ⇒ LEFT JOIN으로 해결

  • 가게 메뉴 상세 조회 API

      - 메뉴 리스트와 메뉴판 이미지 리스트 합산해서 return
    
  • 가게 메뉴 상세조회 API 와 Austin이 개발한 지역별 가게 조회 API가 URI가 겹쳐서 컨플릭트 발생

    ⇒ 가게 메뉴 상세조회 URI에 /detail 추가

    알게된 점 : QueryString은 uri 구분에 영향을 주지 않는다…

  • 서버 반영 완료

🔥 2022-05-24 화요일


  • 메인화면 가게 리스트 거리 필터링 조회 API

    - 필터링 조건에 없는 값이 들어올 경우 validation 처리
    
    - 유저 위치와 가게 위치 거리 계산 후 필터링
    
    - 스크롤 당 가게 10개씩 불러오도록 페이지네이션
    
  • 리뷰 상세 조회 API

    - 리뷰 정보 객체, 리뷰 이미지 리스트, 댓글 리스트를 포함한 하나의 객체로 반환
    
  • Austin의 안드로이드 폰에서는 메인화면이 살짝 다르게 보여서, 가게 리스트 Res가 나와 다르게 나오는 문제 발생 ⇒ 클라이언트가 IOS이므로 맞춰서 수정

  • 유저 위치정보 업데이트 API

    - 위도 경도값 범위에 따라 validation 처리
    

🔥 2022-05-25 수요일


  • 메인화면 음식 종류별 가게 리스트 조회 API

    - 지역 필터가 적용된 상태를 기본으로 추가로 필터링 하는 것
    
  • 포스트맨에서 쿼리스트링 값에 여러개가 들어 갈 경우 한글 마지막 글자가 씹히는 현상 발생

    ex) 부천시,홍대 로 요청시 ‘대'가 짤림

    ⇒ 필터값 여러개 요청시 마지막값 뒤에도 ,를 붙이면 해결

    - 스크롤당 가게 10개씩 보여지도록 페이지네이션
    
  • 메인화면 주차가능한 가게 리스트 조회 API

    - 지역 필터가 적용된 상태를 기본으로 추가로 필터링 하는 것
    
    - 스크롤당 가게 10개씩 보여지도록 페이지네이션
    
  • 가게 리스트 조회에서 가게 상세조회로 이어질 수 있도록 반환값에 storeId 추가

  • 10:00 PM 클라이언트 분들과 회의

    - 필터링 API 특성 상 쿼리스트링이 복잡해서 화면 공유하여 포스트맨 테스트법 간략히 설명
    
    - 로그인 시 반환되는 userId 저장해두고 요청 시 path variable로 쓸 것 
    
    - 회원가입, 로그인 구현 어느정도 완료 하셨고, 다음으로 유저 페이지 구현 계획 중이라고 말씀하심
    
    - 남은 것 중 유저 관련 API 먼저 개발하기로 결정 
    

🔥 2022-05-26 목요일


  • 가게별 리뷰 조회 API

    - 리뷰가 리스트로 보여지는데, 리뷰마다 사진이 여러장이여서 Concat 이용하여 json형식으로 연결
    
  • 가게 가고싶다 생성 API

    - 이미 가고싶다 생성한 경우, 이미 가봤어요 처리한 경우 validation처리
    
  • 가게 가고싶다 삭제 API

    - 가고싶다 생성한 적이 없는 경우, 이미 가봤어요 처리한 경우 validation처리
    
  • 메인화면 가게 리스트 조회시, 가고싶다와 가봤어요 여부에 따라 다르게 표시됨을 발견

    ⇒ 메인화면 모든 API 반환값에 Bool형태의 wishCheck 와 visitedCheck 추가

🔥 2022-05-27 금요일


  • 가게 상세조회 시 유저의 가고싶다, 가봤어요(몇번) 횟수가 표시됨

    ⇒ wishCheck, visitedCount 추가

  • 가게별 리뷰조회 시 유저의 리뷰 좋아요 여부가 표시됨

    ⇒ likeCheck 추가

  • 리뷰 상세조회 시 해당 가게에 대한 유저의 가고싶다, 가봤어요 여부, 리뷰 좋아요 여부가 표시됨

    ⇒ wishCheck, visitedCheck, likeCheck 추가

  • 가게 가봤어요 생성 API

    - 가게당 같은 날짜에 한번만 생성 가능하도록 validation처리
    
    - 가고싶다 생성했던 가게에 가봤어요를 생성할 경우, 가고싶다는 삭제 처리 ⇒트랜잭션 적용
    
  • 가게 가봤어요 삭제 API

    - 해당 가봤어요를 생성했던 유저만 삭제할 수 있도록 validation처리
    
  • 가게 가봤어요 수정 API

    - 해당 가봤어요를 생성했던 유저만 삭제할 수 있도록 validation처리
    
    - 공개/비공개 여부만 수정가능 → 쿼리스트링값으로 수정사항 받음
    

🔥 2022-05-28 토요일


  • 가봤어요도 리뷰와 마찬가지로 좋아요, 댓글 달 수 있는 것을 알게됨…

    ⇒ ERD 가봤어요 댓글, 가봤어요 좋아요 테이블 추가 생성

  • 가봤어요에 글을 적을 수 있는 것을 알게됨

    ⇒생성 시 추가해주고, 수정 API는 쿼리스트링 말고 RequestBody형식으로 변경함

  • 스프링부트 타임존 설정이 계속 UTC시간으로 찍혀서 가봤어요 하루 제한이 잘 안됨

    ⇒ 구글링해서 여러가지 설정을 해봤지만 여전히 UTC로 찍혀서 날짜가 같을 경우 말고, 24시간 이내 재생성 불가로 변경 : 알고보니 이게 맞는거였음.

  • 가봤어요 상세조회 API

    - 댓글 리스트를 포함한 하나의 객체로 반환
    
  • 가게별 리뷰 조회에 concat을 이용해 json 형식으로 했던 것

    ⇒ 리스트를 포함한 객체로 수정(이전 쿼리 컬럼값을 이미지 리스트를 추출하는 쿼리 인자로 넣을 수 있음)

  • 가봤어요 좋아요 생성 삭제 API

  • 가봤어요 댓글 생성 삭제 API

    - 삭제시 해당 좋아요 or 댓글을 생성한 유저가 맞는지 확인
    
    - 생성시 해당 가봤어요가 존재하는지 확인
    
    - 댓글 생성시 태그할 유저 아이디가 존재하는지 확인
    

🔥 2022-05-29 일요일


  • 가봤어요 댓글 수정 API

    - 태그할 유저 아이디, 댓글 내용만 수정 가능
    
    - 해당 댓글을 생성한 유저가 맞는지 확인
    
  • 가봤어요 좋아요한 유저 조회 API

    - 접근한 유저의 팔로우 여부 표시
    
  • 가봤어요 삭제시, 연결된 다른 테이블 데이터들 때문에 데이터베이스 오류 발생

    ⇒ 가봤어요 삭제 요청시, 해당 가봤어요의 모든 댓글, 모든 좋아요를 먼저 삭제하도록 트랜잭션 처리

  • 마찬가지 방법으로 리뷰 삭제 API

    ⇒ 해당 리뷰의 모든 댓글, 모든 좋아요, 모든 이미지를 먼저 삭제하도록 트랜잭션 처리

  • 10:00 PM 클라이언트 분들과 회의

    - 메인화면 가게 조회 시 한번에 조회 가능하도록 페이지네이션 없이 보내드리는게 편하다고 말씀하심
    
    ⇒ 모든 API 페이지네이션 없애기로 결정
    
    - 망고픽 탭에서는 스토리, Top리스트 제외하고 Eat딜 탭만 구현하기로 결정
    
    ⇒ 따라서 북마크도 마이리스트에만 가능하도록 구현하기로 결정
    
    - Eat딜 결제시에는 결제방법 선택 후, 결제 버튼 누르면 결제완료 되는 형식으로 구현하기로 결정
    
    - 가게 데이터 10개 더 생성하기로 했고, 가게 썸네일 null값 최대한 없도록 리뷰이미지 삽입 요청
    
    - 본인 프로필 조회, 다른 유저 프로필 조회 다른 API로 짜기로 결정
    
    ⇒ 다른 경로로 본인 프로필 조회 시 리다이렉트는 프론트단에서 해주는 걸로 결정
    
  • 가게 데이터 15개 추가 생성

  • 가게당 리뷰 & 리뷰 이미지 1개 이상씩 생성

🔥 2022-05-30 월요일


  • 내 정보 조회 API

    ⇒ 다른 경로로 본인 프로필 조회 시 리다이렉트는 프론트단에서 해주는 걸로

  • 프론트 : 메인화면 가게 리스트 조회 시 거리순 정렬이 잘 안됨

    ⇒ 정렬이 (subRegion + 거리)로 되어 있어서 지역별로 따로 거리순 정렬이 되는 문제였음

    ⇒ 메인화면 모든 API subRegion(String)과 거리(Float)로 분리

  • 마이리스트 생성 API

  • 가게 마이리스트에 추가 API

    - 본인이 생성한 마이리스트가 맞는지 확인
    
  • 2차 피드백

    - validation처리 잘했으니 api 30개 이상 구현하고 나서는 문자전송(네이버sends), 결제 API 등 심화 API 도전해보기
    

🔥 2022-05-31 화요일


  • 리뷰 상세조회, 가봤어요 상세조회 시 몇몇 유저가 작성한 리뷰만 조회가 잘 안됨

    ⇒ 쿼리문에서 팔로잉 테이블 연결이 잘못되어서 팔로우 관계가 없는 유저들이 조회가 안되는 거였음

    ⇒ 쿼리문 수정으로 해결

  • 클라이언트 : 가게 상세조회, 가게 메뉴 상세조회 API 반환값에 가게 식별번호 추가 요청

    ⇒ 반환값에 storeId 추가

  • 클라이언트 : 가게 상세조회 API 명세서에 isSuccess 데이터 타입 질문

    ⇒ 표기 오류 String → boolean 수정

  • 수정 사항 서버 반영

🔥 2022-06-01 수요일


  • 유저 마이리스트 조회 API

    - 본인 조회와 다른 유저 조회가 화면이 동일함
    
    - 접근한 유저의 북마크 유무 표시, 해당 마이리스트의 북마크 count 표시
    
    - 커버 이미지는 마이리스트 내 첫번째 가게의 리뷰이미지 1개를 가져옴 
    
  • 마이리스트 상세조회 API

    - 마이리스트 정보, 해당 마이리스트에 포함된 가게 리스트를 포함한 하나의 객체로 반환
    
    - 해당 메소드를 실행할때 마다 마이리스트 조회수 증가 ⇒ 트랜잭션 처리
    
  • 유저 북마크 조회 API

    - 마이리스트만 북마크 가능하도록 구현했으므로, 유저 마이리스트 조회와 비슷하게 구현
    
  • 잇딜 관련 API 구현을 위한 데이터 추가 생성 (잇딜, 잇딜 이미지)

  • 10:00 PM 클라이언트 분들과 회의

    - 우지님이 화면 공유하여 직접 구현하신 내용 시뮬레이터로 보여주심😯👍🏻
    
    - 카카오 로그인 관련하여 데이터 어떤식으로 넘겨줘야 하는지 오스틴이 한번 더 설명
    
    - 우지님이 시간 부족으로 상세페이지 보다 전체적인 조회 API들을 우선적으로 구현하실 거라고 말씀하심 
    

    ⇒ 남은 API들 전체 조회 우선으로 처리할 예정!

🔥 2022-06-02 목요일


  • 잇딜 전체조회 API

    - 지역필터링 적용
    
  • 잇딜 상세조회 API

    - 잇딜 정보, 포함된 가게 리스트를 포함한 하나의 객체로 반환
    
    - 포함된 가게 리스트 들에는 해당 가게의 리뷰가 하나씩 포함되도록 구현
    
  • 잇딜 구매하기 API

    - 신용카드 : 1  카카오페이 : 2 
    
    - int 값으로 결제 수단만 전달받음
    
    - 수량은 항상 1개씩밖에 안되는 시스템
    
    - 결제 성공 ⇒ EatDealPayment 테이블에 데이터 추가
    
  • 휴대폰 인증 문자 전송 API

    - 외부 API 사용해보기 ⇒ CoolSMS
    
    - 쿼리스트링으로 문자받을 전화번호를 받아오면, 랜덤으로 4자리 인증번호를 생성해서 해당 번호로 문자 전송, 같은 인증번호 반환
    
    - 클라이언트 측에서 반환받은 인증번호와 유저가 입력한 인증번호가 일치하는지 확인
    
  • prod 서버 업로드 클라이언트 분들 dev 사용하고 계셔서 둘다 nohup으로 돌아가도록 설정 (동일서버)

🔥 2022-06-03 금요일


  • 영상 촬영 및 마무리

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.