Git Product home page Git Product logo

hotel-java's Introduction

header

➲ 프로젝트 설명


호텔 자바(잡아) = 호텔을 예약할 수 있게 도와주는 Back-end 프로젝트 입니다.


➲ 사용 기술 및 스택


Java 17, Spring Boot 3.0.3, Jpa(Hibernate 6.1.7), RDS(MariaDB 10.6.10), Spring Batch 5.0.1, Gradle, AWS, Github Action, Iamport


➲ 배포 인프라 구조


image

➲ UML(클래스 다이어그램)


image

➲ UseCase


Use Case: https://github.com/f-lab-edu/hotel-java/wiki/%08Use-Case

hotel-java's People

Contributors

devktak avatar f-lab-bot avatar f-lab-lyan avatar f-lab-scott avatar korjun1993 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

hotel-java's Issues

숙소 수정

기능

  • 숙소 정보 수정

상세내용

  • 이름, 번호, 주소, 숙소 사진, 설명 수정
  • 숙소 정보 수정 테스트

회원가입 기능 구현

  • 사용자가 Hotel-Java의 서비스 이용을 위해 회원가입 기능이 필요하다.
  • 사용자는 다음 값으로 정의된다.
    • 이메일
    • 이름
    • 비밀번호
    • 휴대폰 번호
    • 역할 (USER/ADMIN)
    • 등급 - 역할이 USER일 경우 (VIP/NORMAL)
  • 회원가입시 회원의 상태는 기본적으로 역할:USER, 등급:NORMAL이며 사용자로부터 다음 값을 입력받는다:
    • 이메일
    • 이름
    • 비밀번호
    • 휴대폰 번호

숙소 조회 기능 추가

숙소의 유형과 지역을 선택하여 해당하는 숙소들을 조회하는 기능

  • 숙소 유형: 모텔, 호텔 / 리조트, 펜션, 게스트하우스, 캠핑 / 글램핑
  • 지역:
    서울 - (강남/역삼/삼성/논현, 잠실/방이, 종로/대학로 ...)
    경기 - (수원/인계, 고양/일산 ...)
    ...

회원 로그인 기능 구현

  • 사용자는 Email, Password를 가지고 로그인을 할 수 있다.
  • 로그인 기능은 JWT 토큰을 기반으로 한다.

숙소 등록 로직 구현

기능

  • 숙소와 룸 등록

상세내용

  • 숙소 하나당 하나의 숙소 사진과 하나 이상의 룸을 등록할 수 있다.
  • 룸 하나당 하나 이상의 룸 사진을 등록할 수 있다.

재고 추가

해야할 일

  • 스프링 배치와 스케쥴드를 사용하여 모든 룸에 대하여 재고 추가 저장
  • 자정마다 체크하여 항상 모든 룸은 3개월치의 재고가 저장되어 있어야 한다.

Exception 체계 변경

🤔 As-is

  • 도메인별로 Exception이 존재하고, 해당 Exception을 처리하는 ExceptionHandler가 존재 (1:1)
  • Exception을 만들때마다 ExceptionHandler를 추가해야한다.

🎯 To-be

  • 비즈니스에서 발생하는 Exception을 큰 의미 단위로 그룹화해서 생각해보자.
  • RuntimeException
    • Common Exception (우리의 비즈니스 로직에서 발생하는 예외)
      • BadRequest Exception (사용자 요청이 잘못됐을 때, 400번대)
      • Internal Exception (서버 내부 오류가 발생했을 때, 500번대)
        • ServerError Exception
      • Validation Exception (사용자 입력값 유효하지 않을 때)
        • DuplicatedAccommodationNameException
        • DuplicatedMemberEmailException
      • etc...
  • Common Exception 타입을 처리하는 ExceptionHandler 하나를 통해서 여러 Exception을 처리할 수 있다.
  • RuntimeException의 서브클래스로 BadRequestException, InternalException, ValidationException을 만들 수도 있다. CommonException을 만든 이유는 프레임워크에서 발생하는 RuntimeException과 구분하기 위해서다.
    -필요하다면 특정 예외 타입에 맞춰서 ExceptionHandler 로직을 구현할 수 있다. 이전에 비해서 유연한 구조이다.

숙소 등록 테스트

기능

  • 숙소 등록 테스트

상세내용

  • 숙소명 중복 테스트
  • 숙소와 룸 등록 테스트

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.