Project/나혼자 미슐랭

나혼자 미슐랭 개발일지 #9 – 위시리스트 추가 및 계정 기능 개선, 핫리뷰 기능 개발

Coding Kitsune 2025. 7. 3. 22:36

📌 Scope ?

  • 위시리스트 테이블 및 기능 설계
  • 이메일/비밀번호 찾기 기능 구현
  • 사용자 폰 번호 추가 (회원정보 확장) -> 이메일 찾기 기능에서 사용하기 위
  • 리뷰 좋아요(ReviewLike) 테이블 추가
  • 홈화면에 '핫리뷰' 기능 추가 (조회 API, 향후 정렬 방식 고도화 예정)

 

 

1. 위시리스트 테이블 및 기능 설계

기존 사용자 데이터와 별도로 "가고 싶은 맛집"을 저장할 수 있는 기능이 필요해서 WishList 테이블을 새로 설계하였습니다.
이 테이블은 유저와 음식점 사이의 다대다(N:N) 관계를 단순화하여 구성했고, 다음과 같은 필드를 포함하였습니다.

 

  • 프론트에서는 특정 음식점 상세페이지에서 '위시리스트 담기' 버튼을 통해 추가 가능 ( 기능 개발 중 ) 
  • 저장된 리스트는 마이페이지 > ‘내 리스트’ 탭에서 확인 가능하도록 구성 ( 기능 개발 중 )

 

 

 

2. 계정 기능 개선 – 이메일/비밀번호 찾기

사용자 계정 관련 편의성을 개선하기 위해 이메일 찾기 / 비밀번호 재설정 기능을 추가하였습니다.

 

 

    비밀번호 찾기

  • 이메일 기반으로 비밀번호 재설정 토큰을 발급하고, 해당 토큰이 포함된 링크를 이메일로 전송
  • 사용자는 링크 클릭 후 새로운 비밀번호를 설정할 수 있음

이메일 찾기

  • 사용자가 본인의 이름 + 전화번호를 입력하면, 가입된 이메일을 조회하여 반환

 

보안 고려사항

  • 토큰은 1회성 & 만료시간 부여 (서버단에서 검증)
  • 유효하지 않은 토큰인 경우 에러 반환

 

추후 링크를 버튼으로 변경, 이메일 형식 템플릿화할 계획입니다.

 

 

 

 

3. 사용자 모델 확장 – 휴대폰 번호 추가

가입 시 입력받은 이름/이메일 외에도 휴대폰 번호를 추가하여, 인증 수단 다양화 및 이메일/비번 찾기 기능 구현에 사용하였습니다.

  • DB 필드: phone_number (문자열)
  • 회원가입 / 프로필 수정 시 함께 입력 가능
  • 이메일 찾기 시에도 이름 + 번호 조합으로 탐색
@Override
public String findEmailByUsernameAndPhone(String username, String phone_number) {
    User user = userRepository.findByUsernameAndPhoneNumber(username, phone_number)
            .orElseThrow(() -> new RuntimeException("입력하신 정보와 일치하는 계정을 찾을 수 없습니다."));

    return user.getEmail();
}

 

 

4. 리뷰 좋아요 기능 – ReviewLike 테이블 설계 및 연동

인기 리뷰를 파악할 수 있도록 리뷰 좋아요 기능을 추가하였습니다. 

 

  • 하나의 유저는 하나의 리뷰에 단 1개의 좋아요만 가능 (유니크 제약 고려)
  • 좋아요 toggle 기능 (눌렀다 → 해제 가능)
  • 프론트에서는 버튼 UI 상태에 따라 활성/비활성화 표시

 향후 활용 계획

  • 홈화면 핫리뷰 정렬 기준에 반영 ex) 좋아요 많은 순  ( 예정 )
  • 유저의 좋아요 목록을 따로 불러오는 기능도 고려 중 ( 예정 )

 

 

5. 홈화면 핫리뷰 기능 구현

처음으로 홈화면에 '핫리뷰' 영역을 추가하였습니다.

 

  • 상단 영역에서 3개의 리뷰를 슬라이드 형식으로 보여줌
  • 현재는 최신 등록 리뷰 중 랜덤 3개를 불러오고 있지만,
  • 향후에는 리뷰 좋아요 수 순으로 정렬하여 보여줄 계획 ( + 지역도 구분해서 추가할 예정 )

슬라이드 로직

  • 일정 시간마다 인덱스를 순회하면서 자동 슬라이드
  • 리뷰가 3개 이하일 경우 자동 순환 중지
  • 썸네일, 별점, 코멘트, 음식점명 등을 함께 표시

 

 

TO DO :

1. 카카오 로그인 이메일찾기 / 비밀번호 찾기  시나리오 일단 보류, (추후 판단 후 변경 or 유지)
2. 비밀번호 찾기, 이메일찾기, 비밀번호 변경 FE 페이지 만들기 ( 희범 ) 
3. 비밀번호 찾기 이메일 관련(토큰 안보여주고 버튼을 통해서 바꾸러갈 수 있게끔) (인규)
4. 회원가입때 이름/폰번호 입력받게끔 (회원가입 페이지 변경 & DB user 테이블 필드추가 (이름, 폰번호)  (희범)
5. MAP 다음주 까진 꼭...