[Lotto SpringJPA] 1️⃣ 기획 및 요구사항

Welcome to Seoyun Dev Log·2022년 6월 13일
0

[🎱 개발 환경]

  • 진행기간 2022년 8월 10일 ~ 2022년 9월 14일
  • 🖥 운영체제 : macOS
  • 🛠 사용 기술 스택
    Front-end : HTML5, CSS3
    Back-end : java 8 (1.8), Springboot, SpringJPA
    Database : Mysql, H2 DB
  • API : 동행복권 API
    동행복권의 API에 의존하게 될 경우, 해당 서버가 다운되거나 에러 발생 시 그대로 영향을 받기 때문에 데이터를 자체적으로 가지고 있는 환경을 만들기 위해서 local DB에 저장하여 사용합니다.

1. 🫥Lottery(로또 번호 추출 사이트)

로또 랜덤 번호 추출 사이트

1등 : (총 당첨금 - i ) 0.75
2등 : (총 당첨금 - i )
0.125
3등 : (총 당첨금 - i ) 0.125 / 당첨자수
4등 : 전체 금액 - (50,000
당첨자 수)
5등 : 전체 금액 - (5,000 * 당첨자 수)

> 랜덤 번호 추출

  1. 사용자에게 로또 구입 금액과 번호 추출 타입을 입력받는다
  2. 타입 확인 후 랜덤으로 6개의 번호 + 보너스 번호를 반환해준다 (번호는 중복되지 않는다)

> 당첨 결과 확인

  1. 사용자에게 당첨 번호를 확인 할 회차번호를 입력받는다
  2. 응답받은 회차 번호의 당첨 결과를 화면을 통해 출력해준다

💻 비즈니스 로직(Domain,service)

👉동행복권 lotto Api 저장
: 매주 일요일 동행복권 Api 추첨 정보 자동 저장 (schedule)
👉회원 요청 로또 번호 추출
: 전자동, 반자동, 전체수동
: 로또 번호 검증(Ball)
👉당첨자 선별 도메인

  • input

    • 번호 추출 타입 선택
      • 전체자동
      • 전체수동
      • 반자동
    • 금액 입력
      • 천원 단위 (최대 100만원까지)
  • output

    • 금액 맞춰 랜덤 번호 추출
    • 랜덤 로또 번호 추출 리스트
      • 회차별
      • 전체 이용 내역

2. 데이터 설계

1️⃣ t_subscription : 랜덤번호 구독서비스 (이메일, 핸드폰 전송)
2️⃣ t_lotto_api : 1~현재 회차 당첨 정보 데이터
3️⃣ t_winning_info : 당첨자 정보
당첨자 전체 누적 데이터 회원이 정보 요청을 하거나 데이터 분석이 필요할 수 있다
4️⃣ t_winner : 이번회차 당첨자
5️⃣ t_users : 데이터 관리를 위해 회원가입 진행
6️⃣ t_cycle_storage : 당 회차 랜덤 번호 추첨 결과
=> 매회차별 다른 경우의 수가 나와야하기때문에 데이터 저장 / 검열 하는 역할을 하는 저장소이다.
따라서 한 회차가 지나면 리셋된다.
존재하는 경우(이미 존재) : 랜덤 번호 다시 추출
존재하지 않는 경우 : 사용자에게 응답
7️⃣ t_ball_storage : 사용자 추출 번호 누적 저장소 (회차가 지난 데이터 확인 가능)
cycle_storage의 동일한 데이터가 누적되어 들어간다


3. 유스케이스 다이어그램


4. JPA - Entity 테이블 생성

📊 DB 다이어그램

profile
하루 일지 보단 행동 고찰 과정에 대한 개발 블로그

0개의 댓글