이 프로젝트는 사용자들이 식당이나 점포를 이용하기 전에 미리 예약을 할 수 있는 서비스를 개발하는 것을 목표로 합니다.
예약 기능을 통해 사용자들은 방문 시간을 미리 정하고 대기 없이 식사나 서비스를 즐길 수 있어 더욱 편리한 이용이 가능합니다.
또한 가게 점주도 들어온 예약을 승인 및 거절을 할 수 있어 가게 운영에 어려움 없이 이용할 수 있습니다.
-
Spring Security를 이용해 메인페이지를 달리 할 수 있습니다.
- 로그인 안했을 경우
- Owner용 로그인
- User용 로그인
-
공통
- Owner 전용 회원가입, User 전용 회원가입
- 로그인
- 비밀번호 찾기 기능(회원가입 시 입력했던 이메일로 초기화 가능, 단 회원가입시 이메일 실존 유무 확인 안하므로 주의해야함)
-
- 가게 추가, 삭제, 수정
- 자신의 가게에 예약이 걸려있는 목록 확인 기능
- 예약 승인, 거절 기능
-
- 추가된 모든 가게 목록
- 예약 기능, 예약 삭제, 수정 기능(Owner가 예약 승인, 거절하지 않은 초기 예약 상태에서만 가능)
리뷰 작성 및 리뷰 확인은 추후 추가.
이 프로젝트는 타임리프 구현 전에 다음과 같은 API 엔드포인트를 제공 했으며 이를 기반으로 간단한 타임리프 View를 추가하였습니다.
- 회원가입
- 가입시 아이디와 이메일은 같은 경우 가입이 불가능 함
- 비밀번호는 암호화된 상태로 database에 저장됩니다.
- 로그인
- 로그인후 토큰 유효 시간은 1시간 입니다.
- 회원정보 수정(핸드폰 번호) > TODO
- 비밀번호 수정 > TODO
POST /auth/owner/signup
- 요청 예시
{
"userId": "owner1",
"userName": "가게주인1",
"phone": "010-0101-1111",
"email": "이메일@naver.com",
"password": "비밀번호"
}
POST /auth/owner/signin
- 요청 예시
{
"userId": "owner1",
"password": "비밀번호"
}
POST auth/signup
- 요청 예시
{
"userId": "user1",
"userName": "사용자1",
"phone": "010-0101-1111",
"email": "user이메일@naver.com",
"password": "비밀번호"
}
POST auth/signin
- 요청 예시
{
"userId": "user1",
"password": "비밀번호"
}
POST /auth/owner/register/store
- 요청 예시
{
"storeName" : "맛있는 삼겹살집",
"phone" : "010-0000-0001",
"addr" : "삼겹살집 주소1",
"addrDetail" : "삼겹살집 상세 주소 1",
"description" : "여기는 신선하고 맛있는 삼겹살을 판매하는 곳입니다."
}
POST /auth/owner/update/store
- 요청 예시
{
"storeName" : "맛있는 삼겹살집",
"phone" : "010-0000-0001",
"addr" : "삼겹살집 주소1",
"addrDetail" : "삼겹살집 상세 주소 수정1",
"description" : "여기는 신선하고 맛있는 삼겹살을 판매하는 곳입니다."
}
DELETE /auth/owner/register/store
- 가게주인 아이디로 가게 조회 기능
GET auth/owner/read/store/?ownerId=onwer1
/auth/owner/reservation/{ownerId}/{storeId}
GET /auth/owner/reservation/onwer1/1
POST /auth/owner/reservation/approve?reservationId=1
POST /auth/owner/reservation/refuse?reservationId=1
-
가게 전체 조회
GET /store/all
-
가게 이름으로 조회
GET /store/search/storename/맛있는 삼겹살집
-
가게 주소로 조회
GET /store/search/storeaddr/삼겹살집 주소1
POST /reserve
- 요청 예시
{
"storeId" : 1,
"storeName" : "맛있는 삼겹살집",
"resDt" : "2023-10-02T21:50:00",
"people" : 2
}
-
점주가 예약을 승인하거나 거절하지 않은 경우, WAITING일 경우에만 수정 가능
POST /update/reservation?reservationId=1
- 요청 예시
{
"storeId" : 1,
"storeName" : "맛있는 삼겹살집",
"resDt" : "2023-10-02T21:50:00",
"people" : 2
}
DELETE /delete/reservation?reservationId=1
-
Mypage에서 조회
GET /get/myreservations
-
승인된 예약만 조회 가능
GET kiosk/user1?storeId=1
-
예약이 승인되었을 경우에만 가능
POST /kiosk/arrive/?reservationId=1
POST /register/review?reservationId=1
- 요청 예시
{
"score" : 5,
"review" : "맛있었어요."
}
POST /update/review?reviewId=3
- 요청 예시
{
"score" : 3,
"review" : "맛은 있었지만, 간이 너무 강했습니다."
}
DELETE /delete/review?reviewId=1
GET /get/review?reviewId=1