데브코스 : 1차 프로젝트 (2일차)

슬키·2025년 12월 16일

🗓️ 2일차 진행 상황

🎯 목표

  • OrderRepository, OrderService 핵심 메서드 추가
  • OrderController를 통해 주문 생성 / 조회 API 연결
  • 서버에서 주문 생성 및 단건 조회가 가능하도록 구현

✨ 구현 기능 명세

1️⃣ 주문 생성

  • 상품 선택, 수량, 이메일, 주소, 우편번호 입력 후 주문 저장
  • orderDate
    • 주문 생성 시 서버 시간을 주문 시간으로 저장
  • deliveryDate
    • 주문 시간이 당일 14시 이전이면 당일 배송
    • 14시 이후면 다음 날 배송
  • 주문 생성 시 유저도 함께 생성
    • 이미 존재하는 유저가 주문할 경우, Order 엔티티만 추가
  • totalPrice
    • 주문한 상품 가격 기준으로 계산

API

POST /orders/create


2️⃣ 주문 조회

  • 주문 단건 조회
    GET /orders/{orderId}
  • 유저별 주문 조회 (이메일 기준)
    GET /orders/user?email=유저이메일
  • 전체 주문 조회 (관리자용)
    GET /orders

3️⃣ 주문 삭제

  • 주문 단건 삭제
    DELETE /orders/{orderId}
  • 이틀 전 주문 데이터 삭제 (스케줄러 처리)
  • 메인 클래스에 @EnableScheduling 어노테이션 추가
  • OrderCleanupScheduler 클래스 생성
  • 매일 새벽 3시에 자동 삭제되도록 설정

✅ PR Point

1️⃣ 주문 생성

  • 이메일, 주소, 우편번호, 상품 ID, 수량을 입력하면
    JSON 형태로 주문 정보 반환
  • 주문 생성 시 orderId자동으로 1씩 증가
order-create

2️⃣ 주문 조회

2-1. 단건 조회

  • orderId를 통해 주문 단건 조회 가능
order-single

2-2. 유저별 조회

  • 유저 이메일 기준으로 주문 조회 가능
order-user

2-3. 전체 조회

  • 관리자용 화면으로 전체 주문 조회 가능
order-all

3️⃣ 주문 삭제

  • orderId 기준으로 주문 삭제 가능
  • 전체 조회를 통해 삭제 여부 확인
order-delete

삭제 후 전체 조회

order-delete-after

4️⃣ 주문 시점이 2일 이상 지난 경우

  • 스케줄러를 통해 매일 새벽 3시 자동 삭제 처리
  • 현재는 로직 구현까지만 완료
  • 실제 DB 기반 테스트는 추후 진행 예정

😭 어려웠던 점

아직 DB를 제대로 연결하지 못해
H2 기반으로 Postman 테스트를 진행했다.
내일은 MySQL을 직접 띄워서 테스트해볼 계획이다.

처음에는 주문 생성만 구현하면 될 줄 알았는데,
막상 구현을 시작하니

  • 이메일 중복 처리
  • 수량 누적
  • 주문 병합 가능성
    등 고려해야 할 로직이 생각보다 많았다.

템플릿만 봤을 때는 간단해 보였지만,
실제 구현에 들어가니 로직 설계가 쉽지 않았다.
그래도 수업을 들을 때보다 이해도가 확실히 올라가고 있다는 느낌은 들었다.

초반에는
entity, repository, service, controller의 역할이 헷갈렸고
Postman 사용도 익숙하지 않았지만,
점점 오류가 발생했을 때 어디를 먼저 봐야 하는지 감이 잡히기 시작했다.

아직 많이 부족해서
주말에는 Jump To Spring으로 스프링을 좀 더 익혀볼 예정이다.


🚧 아직 구현하지 못한 부분

  • 한 고객이 하루에 여러 번 주문하더라도 하나의 주문으로 합배송 처리
  • 배송 처리 완료 시 statusCOMPLETE로 변경
  • status = COMPLETE 이고 주문일자가 2일 지난 경우 스케줄러로 삭제
  • MySQL DB 연결 후 전체 기능 테스트
  • User 생성 시 setter 대신 Builder 패턴 적용
  • 기존 주문이 존재할 경우
    (같은 유저, 같은 상품) → quantity 누적 처리
profile
풀스택 개발자 성장일기

0개의 댓글