검증 → 계산 → 재고 차감 → 상품 상태 변경 → 주문 저장
주문생성(고객ID, 상품ID, 수량, 로그인관리자ID) {
고객 = 고객ID로 고객 조회
만약 고객이 없으면
예외 발생 "존재하지 않는 고객입니다."
상품 = 상품ID로 상품 조회
만약 상품이 없으면
예외 발생 "존재하지 않는 상품입니다."
만약 수량 < 1 이면
예외 발생 "수량은 1개 이상이어야 합니다."
만약 상품상태 == 단종 이면
예외 발생 "단종된 상품은 주문할 수 없습니다."
만약 상품상태 == 품절 이면
예외 발생 "품절된 상품은 주문할 수 없습니다."
만약 상품재고 < 수량 이면
예외 발생 "상품 재고가 부족합니다."
주문번호 = 주문번호 생성
주문금액 = 상품가격 * 수량
주문상태 = 준비중
주문일 = 현재시간
상품재고 = 상품재고 - 수량
만약 상품상태 != 단종 이면
만약 상품재고 <= 0 이면
상품상태 = 품절
아니면
상품상태 = 판매중
주문 = 새 주문 생성(
주문번호,
고객,
상품,
수량,
주문금액,
주문상태,
주문일,
로그인관리자
)
주문 저장
응답 반환
}
검증 → 주문 취소 처리 → 재고 복구 → 상품 상태 변경
주문취소(주문ID, 취소사유) {
주문 = 주문ID로 주문 조회
만약 주문이 없으면
예외 발생 "존재하지 않는 주문입니다."
만약 취소사유가 비어있으면
예외 발생 "취소 사유는 필수입니다."
만약 주문상태 != 준비중 이면
예외 발생 "준비중 상태의 주문만 취소할 수 있습니다."
상품 = 주문에 연결된 상품
주문상태 = 취소됨
주문취소사유 = 취소사유
주문취소일 = 현재시간
상품재고 = 상품재고 + 주문수량
만약 상품상태 != 단종 이면
만약 상품재고 <= 0 이면
상품상태 = 품절
아니면
상품상태 = 판매중
변경 내용 저장
응답 반환
}
현재 상태에서 다음 상태로 갈 수 있는지 확인
주문상태변경(주문ID, 변경할상태) {
주문 = 주문ID로 주문 조회
만약 주문이 없으면
예외 발생 "존재하지 않는 주문입니다."
현재상태 = 주문상태
만약 현재상태 == 취소됨 이면
예외 발생 "취소된 주문은 상태를 변경할 수 없습니다."
만약 현재상태 == 배송완료 이면
예외 발생 "배송완료된 주문은 상태를 변경할 수 없습니다."
만약 현재상태 == 준비중 AND 변경할상태 == 배송중 이면
주문상태 = 배송중
아니면 만약 현재상태 == 배송중 AND 변경할상태 == 배송완료 이면
주문상태 = 배송완료
아니면
예외 발생 "잘못된 주문 상태 변경입니다."
변경 내용 저장
응답 반환
}