saii12 / green_airline_project

항공사 웹 개발 프로젝트 (팀)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

로고2


🚀 프로젝트 개요

  • 모든 팀원이 풀스택으로 개발에 참여했으며, 주 포지션은 아래와 같습니다.

Name 이서영 강민정 이치승 정다운
Position 팀장 & 예약 기능 여행준비 기능 여행일지 기능 마일리지 기능

🎮 기술 스택

✨ Front-End

⚡️ FE 자세히 살펴보기
  • bootstrap : 4.6.2
  • HTML5
  • CSS3
  • JavaScript : 1.16.1
  • JQuery : 3.6.4
  • Chart.js
  • summernote : 0.8.18

💻 Back-End

⚡️ BE 자세히 살펴보기
  • springboot : 4.18.0
  • H2 Database → MySQL : 8.0.32
  • jdk : 11.0.17
  • lombok
  • MyBatis
  • JSP
  • BCrypt HASH
  • Apache Tomcat : 9.0

🛠 외부 API

⚡️ API 자세히 살펴보기
  • 카카오 소셜 로그인 API (OAuth 2.0 프로토콜)
  • 카카오페이 API
  • 이메일 전송 API (네이버 SMTP 프로토콜)
  • 구글 맵 API
  • CoolSMS API
  • DAUM 우편번호 찾기 API
  • 국가 코드 OPEN API

🙌🏻 Collaboration



⚙ 의존성

implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
implementation 'javax.servlet:jstl'
implementation 'org.springframework.boot:spring-boot-starter-aop'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.security:spring-security-crypto'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.3.0'
runtimeOnly 'com.mysql:mysql-connector-j'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation 'org.springframework.boot:spring-boot-starter-mail'
implementation 'org.springframework:spring-context-support'
implementation group: 'net.nurigo', name: 'javaSDK', version: '2.2'
implementation 'commons-io:commons-io:2.6'
implementation 'com.google.code.gson:gson:2.8.6'
implementation 'commons-fileupload:commons-fileupload:1.3.1'


1️⃣ 프로젝트 구조

⚡️ 구조 자세히 살펴보기
📦src
 ┗ 📂main
   ┣ 📂java
   ┃ ┗ 📂com
   ┃   ┗ 📂green
   ┃     ┗ 📂airline
   ┃       ┃ ┣ 📂config
   ┃       ┃ ┗ 📂controller
   ┃       ┣ 📂dto
   ┃       ┃ ┣ 📂kakao
   ┃       ┃ ┣ 📂nation
   ┃       ┃ ┣ 📂request
   ┃       ┃ ┗ 📂response
   ┃       ┣ 📂enums
   ┃       ┣ 📂handler
   ┃       ┃ ┗ 📂exception
   ┃       ┣ 📂repository
   ┃       ┃ ┣ 📂interfaces
   ┃       ┃ ┗ 📂model
   ┃       ┣ 📂service
   ┃       ┗ 📂utils
   ┣ 📂resources
   ┃ ┣ 📂db
   ┃ ┣ 📂mapper
   ┃ ┗ 📂static
   ┃   ┣ 📂css
   ┃   ┃ ┗ 📂summerNote
   ┃   ┃   ┗ 📂font
   ┃   ┣ 📂images
   ┃   ┃ ┣ 📂airplane
   ┃   ┃ ┣ 📂baggage
   ┃   ┃ ┣ 📂board
   ┃   ┃ ┣ 📂gifticon
   ┃   ┃ ┣ 📂in_flight
   ┃   ┃ ┣ 📂like
   ┃   ┃ ┣ 📂product
   ┃   ┃ ┗ 📂ticket
   ┃   ┗ 📂js
   ┃     ┗ 📂summerNote
   ┃       ┗ 📂lang
   ┗ 📂webapp
     ┗ 📂WEB-INF
       ┗ 📂view
         ┣ 📂baggage
         ┣ 📂board
         ┣ 📂faq
         ┣ 📂in_flight
         ┣ 📂layout
         ┣ 📂manager
         ┣ 📂mileage
         ┣ 📂myPage
         ┣ 📂notice
         ┣ 📂ticket
         ┣ 📂user
         ┗ 📂voc

2️⃣ 프로젝트 개요

  • 핵심 기능이 많으며 실무에서 활용할 수 있는 기능이 포함된 것들 중, 예약, 환불, 외부 API를 활용할 수 있는 항공권 예약 사이트로 주제 선정
  • 현행 시스템 벤치마킹 (아시아나 항공, 대한 항공 등)

3️⃣ 기능 구분

Member

  • 소셜 로그인 API, 항공권 예매 기능, 결제 및 환불 API
  • 기내 서비스 조회 기능, 서비스 신청 기능, 여행일지 조회 기능
  • 구글 맵 API, 마일리지 숍 구매 기능, 네이버 이메일 SMTP 프로토콜

Manager

  • 대시보드 조회, 회원관리, 항공권 관리 및 조회, 서비스 신청 관리 및 조회
  • 여행일지 관리 및 조회, 마일리지 숍 관리 및 조회, 고객센터 관리 및 조회

4️⃣ ERD & 테이블 명세서

테이블 명세서 : https://docs.google.com/spreadsheets/d/1oaUxJ4CWKrVUvi02h9mYOwBL-raDCLswAQ5Qllws7Xw/edit#gid=0



ERD Model



5️⃣ SiteMap


User Manager

6️⃣ 주요 기능

항공권 예약 - 스케줄 선택

  • 왕복/편도 선택
  • 출발지/도착지 입력 시 자동 완성 기능 제공
  • 전체 공항 조회
  • 탑승일 선택
  • 탑승 인원 선택 (성인/유아/소아)
  • 좌석 등급 선택
  • 나이 계산기
  • 옵션 선택 후, 스케줄 출력 (잔여 n석, 매진, 미운영)

항공권 예약 - 좌석 선택

  • 선택한 스케줄에 운항하는 항공기의 종류에 따라 좌석 배치가 다르게 나타남
  • 선택한 좌석 등급이 아닌 좌석 선택 불가능
  • 예약되지 않은 좌석만 선택 가능
  • 운항시간, 국내선/국제선, 탑승객 유형, 좌석 등급에 따라 가격 계산

항공권 예약 - 결제

  • 탑승객 정보 입력
  • 카카오페이 또는 마일리지로 결제 가능
  • 결제 완료 시 문자 발송 (CoolSMS API)
  • 회원 등급에 따른 적립 비율로 적립 예정 마일리지 추가
  • 적립된 마일리지는 탑승일 다음 날부터 사용 가능

항공권 환불

  • 탑승일 이전인 경우 환불 신청 가능
  • 환불 수수료 부과 (국제선/국내선, 탑승일까지 며칠 이전인지에 따라 결정됨)

마일리지샵 구매

  • 정렬 기능 (가격 높은 순, 가격 낮은 순)
  • 페이징 처리
  • 검색 기능 (브랜드, 상품명)
  • 상품별 재고량 부여
  • 구매 시 이메일로 기프티콘 이미지 발송
  • 기프티콘 유효기간 1년 부여
  • 마일리지샵 이용 내역 페이지에서 환불 가능

항공권 예약/환불 (카카오페이) 마일리지샵 구매 (이메일 SMTP)

7️⃣ 기능 - 회원

회원가입

  • 아이디 중복 확인
  • 비밀번호 확인
  • Validation 처리
  • 주소 찾기 (DAUM 우편번호 찾기 API)
  • 국적 선택 (국가 코드 오픈 API)

로그인

  • 카카오 소셜 로그인 (OAuth 2.0 프로토콜)
  • 일반 로그인
  • 아이디/비밀번호 찾기 (이메일 SMTP 프로토콜)

회원 정보

  • 회원 정보 변경
  • 비밀번호 변경

예약 이후 서비스

  • 노선에 따라 제공받을 수 있는 기내 서비스 조회
  • 특별 기내식 조회 및 신청
  • 위탁 수하물 조회 및 신청

여행일지

  • 게시글 CRUD
  • 조회수 & 좋아요 수에 기반한 인기 게시글 선정
  • MODAL을 이용한 게시글 상세 내용 출력
  • 조회수 중복 방지 (쿠키 활용)
  • 로그인 시에만 좋아요 버튼 활성화
  • 페이징 처리

공항 위치 조회

  • 구글 맵 API 활용

마일리지

  • 마일리지샵 구매/환불
  • 마일리지 조회
  • 누적 탑승 마일리지에 따라 회원 등급 변동

고객센터

  • 공지사항 조회
  • 자주 묻는 질문 조회
  • 고객의 말씀 작성

메인 회원 안내
카카오 소셜 로그인 비밀번호 찾기 (이메일 SMTP)
비밀번호 변경 회원 정보 변경
항공권 예약/환불 (카카오페이) 항공권 예약/환불 (마일리지)
기내 서비스 조회 위탁 수하물 신청
특별 기내식 조회 특별 기내식 신청
여행일지 공항 위치 정보 (구글 맵 API)
항공기 정보 마일리지샵 구매 (이메일 SMTP)
마일리지샵 환불 공지사항
자주 묻는 질문 고객의 말씀 작성

8️⃣ 기능 - 관리자

대시보드

  • chart.js 활용
  • 이번 달 매출액, 신규 회원 수, 탈퇴 회원 수, 작성된 고객의 말씀 수
  • 항공권 판매 매출액 추이 (지난 11개월 간)
  • 도착지별 이용객 수 순위
  • 마일리지샵 브랜드별 판매 순위
  • 지난 달 고객의 말씀 유형 비율 (문의/불만/칭찬/건의)
  • 처리되지 않은 고객의 말씀 알림
  • 개인 메모 공간

회원 관리

  • 회원/관리자 정보 조회 (검색 기능, 페이징 처리)
  • 회원 탈퇴 처리
  • 신규 관리자 등록

항공 서비스

  • 운항 스케줄 조회
  • 항공권 판매/환불 내역 조회
  • 특별 기내식 신청 내역 조회
  • 위탁 수하물 신청 내역 조회

마일리지샵

  • 상품 CRUD
  • 상품 판매/환불 내역 조회

게시판 관리

  • 모든 게시글 삭제 가능

고객센터

  • 공지사항 CRUD
  • 자주 묻는 질문 CRUD
  • 고객의 말씀 답변

대시보드 회원 정보 조회
관리자 정보 조회 마일리지샵 상품 등록
마일리지샵 이용 내역 조회 공지사항 작성
자주 묻는 질문 작성 고객의 말씀 답변

About

항공사 웹 개발 프로젝트 (팀)


Languages

Language:JavaScript 54.1%Language:Java 40.8%Language:CSS 5.1%