Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor : order,cart 에러 문서화, 세세한 검증 추가 #231

Merged
merged 13 commits into from
Jan 29, 2023

Conversation

ImNM
Copy link
Member

@ImNM ImNM commented Jan 29, 2023

개요

작업사항

  • 오류가 날수 있는 상황을 문서화했습니당
  • 주문 과정속에서 밸리데이션을 좀더 세세하게 추가했습니다.
//이런것들
        // 이벤트가 열려있는 상태인지
        validEventIsOpen(event);
        // 티켓 예매 가능 시간이 아직 안지났는지
        validTicketingTime(event);
        // 재고가 충분히 있는지 ( 추후 티켓 발급하면서도 2차로 검증함 )
        validItemStockEnough(order, item);
        // 아이템의 종류가 1종류인지
        validItemKindIsOneType(order);
        // 아이템 구매 가능 갯수를 넘지 않았는지.
        validItemPurchaseLimit(order, item);

변경로직

  • 내용을 적어주세요.

@ImNM ImNM added For: API [이슈 대상] 외부 API Type: Docs/Chore [이슈 목적] 프로덕션 코드 수정 외의 문서, 패키지 매니저, 환경 수정 Type: Refactor [이슈 목적] 프로덕션 코드 리팩토링 labels Jan 29, 2023
@ImNM ImNM self-assigned this Jan 29, 2023
Comment on lines +165 to +170
public void validPurchaseLimit(Long quantity) {
if (this.purchaseLimit < quantity) {
throw TicketPurchaseLimitException.EXCEPTION;
}
}

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@sanbonai06 민준아 근데 아이템 구매 갯수 제한 이것도 검증 되었남?
내쪽에서도 하긴하는데 너쪽에서도 추가검증 해도좋을듯

import band.gosrock.domain.domains.event.exception.EventIsNotOpenStatusException;
import band.gosrock.domain.domains.event.exception.EventTicketingTimeIsPassedException;
import band.gosrock.domain.domains.ticket_item.exception.TicketItemQuantityLackException;
import band.gosrock.domain.domains.ticket_item.exception.TicketPurchaseLimitException;

@ExceptionDoc
public class CreateCartExceptionDocs implements SwaggerExampleExceptions {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

에러 문서화 확인!

Copy link
Member

@cofls6581 cofls6581 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다~~~!

Comment on lines +61 to +72
/** 모든 질문지 ( 옵션그룹 )에 응답했는지 검증합니다. ( 변화 했는지 검증 ) */
public void validOptionNotChange(Order order, TicketItem item) {
List<OrderLineItem> orderLineItems = order.getOrderLineItems();
List<Long> itemsOptionGroupIds = item.getOptionGroupIds();
orderLineItems.forEach(
orderLineItem -> {
if (!Objects.equals(
getAnswerOptionGroupIds(orderLineItem), itemsOptionGroupIds)) {
throw OrderItemOptionChangedException.EXCEPTION;
}
});
}
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

옵션이 변화했는지 검증로직은 일단 추가해뒀습니당!

public DuDoongCodeException 티켓팅_시간지남 = EventTicketingTimeIsPassedException.EXCEPTION;

@ExplainError("티켓 아이템이 한 종류가 아닐 떄")
public DuDoongCodeException 아이템은_한종류여야함 = CartInvalidItemKindPolicyException.EXCEPTION;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

지극히 개인적인 의견인데 CartInvalidItemKindPolicyException라는 워딩에서 티켓 아이템이 한 종류가 아닐 떄 발생하는 오류라는 직관적인 설명이 조오오금 덜 와닿는 것 같아요! NotOneItem~~이런식의 워딩도 좋은 것 같습니다.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아 옛날에 만들어뒀던건데 수정할게유! 네네 그워딩이 좋아유

Copy link
Member

@kim-wonjin kim-wonjin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

옵션 그룹 변경 검증로직 추가로 동시성 문제 해결한 부분 잘 봤습니당
티켓상품 삭제의 경우는 query수정으로 해결해볼게유
LGTM🌱

@sonarqubecloud
Copy link

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 252 Code Smells

17.8% 17.8% Coverage
0.0% 0.0% Duplication

@ImNM ImNM merged commit e3a7625 into dev Jan 29, 2023
@ImNM ImNM deleted the refactor/112-order-validation-and-docs branch January 29, 2023 18:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
For: API [이슈 대상] 외부 API Type: Docs/Chore [이슈 목적] 프로덕션 코드 수정 외의 문서, 패키지 매니저, 환경 수정 Type: Refactor [이슈 목적] 프로덕션 코드 리팩토링
Projects
None yet
Development

Successfully merging this pull request may close these issues.

🔨[refactor] 주문,장바구니 에러 세분화, 문서화
3 participants