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

fix : 승인 대기중인 주문시 티켓 미발급으로 인한 널접근 오류 #334

Merged
merged 5 commits into from
Feb 10, 2023
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
@RequestMapping("/v1/auth")
@RequiredArgsConstructor
@Slf4j
@Tag(name = "인증 관련 컨트롤러")
@Tag(name = "1-1. [인증]")
public class AuthController {

private final RegisterUseCase registerUseCase;
Expand All @@ -54,14 +54,14 @@ public class AuthController {
private final CookieGenerateHelper cookieGenerateHelper;

@Operation(summary = "kakao oauth 링크발급 (백엔드용 )", description = "kakao 링크를 받아볼수 있습니다.")
@Tag(name = "카카오 oauth")
@Tag(name = "1-2. [카카오]")
@GetMapping("/oauth/kakao/link/test")
public OauthLoginLinkResponse getKakaoOauthLinkTest() {
return registerUseCase.getKaKaoOauthLinkTest();
}

@Operation(summary = "kakao oauth 링크발급 (클라이언트용)", description = "kakao 링크를 받아볼수 있습니다.")
@Tag(name = "카카오 oauth")
@Tag(name = "1-2. [카카오]")
@GetMapping("/oauth/kakao/link")
public OauthLoginLinkResponse getKakaoOauthLink(
@RequestHeader(value = "referer", required = false) String referer,
Expand All @@ -84,7 +84,7 @@ public OauthLoginLinkResponse getKakaoOauthLink(
}

@Operation(summary = "카카오 code 요청받는 곳입니다. referer,host는 건들이지 말아주세요!안보내셔도됩니다.")
@Tag(name = "카카오 oauth")
@Tag(name = "1-2. [카카오]")
@GetMapping("/oauth/kakao")
@ApiErrorCodeExample(KakaoKauthErrorCode.class)
public OauthTokenResponse getCredentialFromKaKao(
Expand All @@ -108,7 +108,7 @@ public OauthTokenResponse getCredentialFromKaKao(
}

@Operation(summary = "개발용 회원가입입니다 클라이언트가 몰라도 됩니다.", deprecated = true)
@Tag(name = "카카오 oauth")
@Tag(name = "1-2. [카카오]")
@DevelopOnlyApi
@GetMapping("/oauth/kakao/develop")
public ResponseEntity<TokenAndUserResponse> developUserSign(@RequestParam("code") String code) {
Expand All @@ -119,15 +119,15 @@ public ResponseEntity<TokenAndUserResponse> developUserSign(@RequestParam("code"
}

@Operation(summary = "회원가입이 가능한지 id token 으로 확인합니다.")
@Tag(name = "카카오 oauth")
@Tag(name = "1-2. [카카오]")
@GetMapping("/oauth/kakao/register/valid")
public AvailableRegisterResponse kakaoAuthCheckRegisterValid(
@RequestParam("id_token") String token) {
return registerUseCase.checkAvailableRegister(token);
}

@Operation(summary = "id_token 으로 회원가입을 합니다.")
@Tag(name = "카카오 oauth")
@Tag(name = "1-2. [카카오]")
@PostMapping("/oauth/kakao/register")
public ResponseEntity<TokenAndUserResponse> kakaoAuthCheckRegisterValid(
@RequestParam("id_token") String token,
Expand All @@ -141,7 +141,7 @@ public ResponseEntity<TokenAndUserResponse> kakaoAuthCheckRegisterValid(

@NotNull
@Operation(summary = "id_token 으로 로그인을 합니다.")
@Tag(name = "카카오 oauth")
@Tag(name = "1-2. [카카오]")
@PostMapping("/oauth/kakao/login")
public ResponseEntity<TokenAndUserResponse> kakaoOauthUserLogin(
@RequestParam("id_token") String token) {
Expand All @@ -152,7 +152,7 @@ public ResponseEntity<TokenAndUserResponse> kakaoOauthUserLogin(
}

@Operation(summary = "accessToken 으로 oauth user 정보를 가져옵니다.")
@Tag(name = "카카오 oauth")
@Tag(name = "1-2. [카카오]")
@PostMapping("/oauth/kakao/info")
public OauthUserInfoResponse kakaoOauthUserInfo(
@RequestParam("access_token") String accessToken) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
import org.springframework.web.bind.annotation.RestController;

@SecurityRequirement(name = "access-token")
@Tag(name = "장바구니 관련 컨트롤러")
@Tag(name = "5. [장바구니]")
@RestController
@RequestMapping("/v1/carts")
@RequiredArgsConstructor
Expand All @@ -28,42 +28,13 @@ public class CartController {
private final CreateCartUseCase createCartUseCase;
private final ReadCartUseCase readCartUseCase;

// @Operation(summary = "상품 아이디에 답변을 해야하는 옵션이 있는지 확인합니다.(추후 아이템 도메인으로 이전?)")
// @GetMapping("/check/answer")
// public void createCartLines() {
// createOrderLineUseCase.execute(ticketItemId);
// }
@Operation(summary = "상품을 장바구니에 담습니다. 상품에 답변해야하는 응답이 있다면, 응답도 보내주시면 됩니다.")
@ApiErrorExceptionsExample(CreateCartExceptionDocs.class)
@PostMapping
public CartResponse createCartLines(@RequestBody @Valid AddCartRequest addCartRequest) {
return createCartUseCase.execute(addCartRequest);
}

// @Operation(summary = "내 장바구니에 담긴 상품들의 목록을 불러옵니다.")
// @GetMapping
// public void createCartLines() {
// createOrderLineUseCase.execute(ticketItemId);
// }

// @Operation(summary = "장바구니에 담은 상품의 정보를 가져옵니다. 옵션이있으면 옵션마다 다른 라인을 가집니다.")
// @GetMapping("/lines/{line_id}")
// public void getCartLineInfo(@PathVariable("line_id") Long ticketItemId) {
// createOrderLineUseCase.execute(ticketItemId);
// }

// @Operation(summary = "장바구니에 담은 상품의 옵션을")
// @GetMapping("/{cart_id}/lines/{line_id}/option")
// public void getItemOptions(@PathVariable("cart_id") Long cartId,@PathVariable("line_id")
// Long ticketItemId) {
// createOrderLineUseCase.execute(ticketItemId);
// }

// @Operation(summary = "티켓상품의 갯수와 사용자가 입력한 옵션을 가진 orderLine 을 만듭니다.")
// @PostMapping("/option")
// public void createOrderLine(@PathVariable("line_id") Long ticketItemId) {
// createOrderLineUseCase.execute(ticketItemId);
// }
@Operation(summary = "사용자가 최근에 만들었던 장바구니를 불러옵니다. 없으면 data null (구현 안해도 됨)")
@GetMapping("/recent")
public CartResponse getRecentMyCart() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
import org.springframework.web.bind.annotation.RestController;

@SecurityRequirement(name = "access-token")
@Tag(name = "응원톡 컨트롤러")
@Tag(name = "9. [응원톡]")
@RestController
@RequestMapping("/v1/events/{eventId}/comments")
@Validated
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import org.springframework.web.bind.annotation.*;

@SecurityRequirement(name = "access-token")
@Tag(name = "쿠폰 관련 컨트롤러")
@Tag(name = "a0. [쿠폰]")
@RestController
@RequestMapping("/v1/coupons")
@RequiredArgsConstructor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public class OrderMailInfoHelper {
private final HostAdaptor hostAdaptor;

public OrderMailDto execute(String orderUuid) {
Order order = orderAdaptor.find(orderUuid);
Order order = orderAdaptor.findByOrderUuid(orderUuid);
User user = userAdaptor.queryUser(order.getUserId());
Event event = eventAdaptor.findById(order.getEventId());
Host host = hostAdaptor.findById(event.getHostId());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
import org.springframework.web.bind.annotation.*;

@SecurityRequirement(name = "access-token")
@Tag(name = "이벤트(공연) 관련 컨트롤러")
@Tag(name = "3. [이벤트(공연)]")
@RestController
@RequestMapping("/v1/events")
@RequiredArgsConstructor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
@RequestMapping("/v1/examples")
@RequiredArgsConstructor
@SecurityRequirement(name = "access-token")
@Tag(name = "예시 컨트롤러, 실사용 용도가 아닙니다. 에러코드들의 목록을 가지고 있는 api 도 있습니다.")
@Tag(name = "xx. [예시] 에러코드 문서화")
public class ExampleController {

private final ExampleApiService exampleApiService;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
import org.springframework.web.bind.annotation.*;

@SecurityRequirement(name = "access-token")
@Tag(name = "호스트 관련 컨트롤러")
@Tag(name = "4. [호스트]")
@RestController
@RequestMapping("/v1/hosts")
@RequiredArgsConstructor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
import org.springframework.web.bind.annotation.RestController;

@SecurityRequirement(name = "access-token")
@Tag(name = "이미지 관련 컨트롤러")
@Tag(name = "a1. [이미지]")
@RestController
@RequestMapping("/v1")
@RequiredArgsConstructor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
import org.springframework.web.bind.annotation.RestController;

@SecurityRequirement(name = "access-token")
@Tag(name = "발급 티켓 관련 어드민 컨트롤러")
@Tag(name = "8-1. [이벤트관리] 발급 티켓 관리 ")
@RestController
@RequestMapping("/v1/events/{eventId}/issuedTickets")
@RequiredArgsConstructor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
import org.springframework.web.bind.annotation.RestController;

@SecurityRequirement(name = "access-token")
@Tag(name = "발급 티켓 관련 컨트롤러")
@Tag(name = "8-2. [발급티켓]")
@RestController
@RequestMapping("/v1/issuedTickets")
@RequiredArgsConstructor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
import org.springframework.web.bind.annotation.RestController;

@SecurityRequirement(name = "access-token")
@Tag(name = "주문 관련 컨트롤러")
@Tag(name = "6-2. [이벤트관리] 주문관리 ")
@RestController
@RequestMapping("/v1/events/{eventId}/orders")
@RequiredArgsConstructor
Expand All @@ -48,4 +48,11 @@ public OrderResponse confirmOrder(
@PathVariable Long eventId, @PathVariable("order_uuid") String orderUuid) {
return approveOrderUseCase.execute(eventId, orderUuid);
}

@Operation(summary = "주문관리 리스트 페이지에서 주문 상세정보 조회할때")
@GetMapping("/{order_uuid}")
public OrderResponse getEventOrderDetail(
@PathVariable Long eventId, @PathVariable("order_uuid") String orderUuid) {
return readOrderUseCase.getEventOrderDetail(eventId, orderUuid);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
import org.springframework.web.bind.annotation.RestController;

@SecurityRequirement(name = "access-token")
@Tag(name = "주문 관련 컨트롤러")
@Tag(name = "6-1. [주문]")
@RestController
@RequestMapping("/v1/orders")
@RequiredArgsConstructor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public static OrderBriefElement of(Order order, Event event, IssuedTickets issue
.orderNo(order.getOrderNo())
.orderStatus(order.getOrderStatus())
.eventProfile(event.toEventProfileVo())
.itemName(issuedTickets.getItemName())
.itemName(order.getOrderName())
.totalQuantity(issuedTickets.getTotalQuantity())
.build();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package band.gosrock.api.order.service;

import static band.gosrock.api.common.aop.hostRole.FindHostFrom.EVENT_ID;
import static band.gosrock.api.common.aop.hostRole.HostQualification.GUEST;

import band.gosrock.api.common.UserUtils;
import band.gosrock.api.common.aop.hostRole.HostRolesAllowed;
import band.gosrock.api.common.page.PageResponse;
import band.gosrock.api.common.slice.SliceResponse;
import band.gosrock.api.order.model.dto.request.AdminOrderTableQueryRequest;
Expand All @@ -11,9 +14,7 @@
import band.gosrock.api.order.model.mapper.OrderMapper;
import band.gosrock.common.annotation.UseCase;
import band.gosrock.domain.domains.event.adaptor.EventAdaptor;
import band.gosrock.domain.domains.event.domain.Event;
import band.gosrock.domain.domains.host.adaptor.HostAdaptor;
import band.gosrock.domain.domains.host.domain.Host;
import band.gosrock.domain.domains.order.adaptor.OrderAdaptor;
import band.gosrock.domain.domains.order.domain.Order;
import band.gosrock.domain.domains.order.domain.validator.OrderValidator;
Expand Down Expand Up @@ -63,19 +64,21 @@ public SliceResponse<OrderBriefElement> getMyOrders(Boolean showing, Pageable pa
return SliceResponse.of(orderBriefElements);
}

@HostRolesAllowed(role = GUEST, findHostFrom = EVENT_ID)
public PageResponse<OrderAdminTableElement> getEventOrders(
Long eventId,
AdminOrderTableQueryRequest adminOrderTableQueryRequest,
Pageable pageable) {

Event event = eventAdaptor.findById(eventId);
Host host = hostAdaptor.findById(event.getHostId());
Long userId = userUtils.getCurrentUserId();
host.validateHostUser(userId);

Page<Order> orders =
orderAdaptor.findEventOrders(
adminOrderTableQueryRequest.toCondition(eventId), pageable);
return PageResponse.of(orderMapper.toOrderAdminTableElement(orders));
}

@HostRolesAllowed(role = GUEST, findHostFrom = EVENT_ID)
public OrderResponse getEventOrderDetail(Long eventId, String orderUuid) {
Order order = orderAdaptor.findByOrderUuid(orderUuid);
return orderMapper.toOrderResponse(order);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
import org.springframework.web.bind.annotation.RestController;

@SecurityRequirement(name = "access-token")
@Tag(name = "어드민 통계관련")
@Tag(name = "a2. [이벤트관리] 통계관련")
@RestController
@RequestMapping("/v1/events/{eventId}/statistics")
@RequiredArgsConstructor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
import org.springframework.web.bind.annotation.*;

@SecurityRequirement(name = "access-token")
@Tag(name = "티켓 상품 관련 컨트롤러")
@Tag(name = "7-1. [티켓상품]")
@RestController
@RequestMapping("/v1/events/{eventId}/ticketItems")
@RequiredArgsConstructor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
import org.springframework.web.bind.annotation.*;

@SecurityRequirement(name = "access-token")
@Tag(name = "티켓상품 옵션 관련 컨트롤러")
@Tag(name = "7-2. [티켓상품옵션]")
@RestController
@RequestMapping("/v1/events/{eventId}/ticketOptions")
@RequiredArgsConstructor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
@SecurityRequirement(name = "access-token")
@RequiredArgsConstructor
@Slf4j
@Tag(name = "유저 관련 컨트롤러")
@Tag(name = "2. [유저]")
public class UserController {

private final ReadUserUseCase readUserUseCase;
Expand Down
2 changes: 2 additions & 0 deletions DuDoong-Api/src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ spring:
springdoc:
default-produces-media-type: application/json
default-consumes-media-type: application/json
swagger-ui:
tags-sorter: alpha

server:
servlet:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,6 @@ public List<String> getNos() {
return this.issuedTickets.stream().map(IssuedTicket::getIssuedTicketNo).toList();
}

public String getItemName() {
IssuedTicket issuedTicket = issuedTickets.stream().findFirst().orElseThrow();
return issuedTicket.getItemInfo().getTicketName();
}

public int getTotalQuantity() {
return issuedTickets.size();
}
Expand All @@ -40,6 +35,7 @@ public String getTicketNoName() {
}

public IssuedTicketsStage getIssuedTicketsStage() {
if (getTotalQuantity() == 0) return IssuedTicketsStage.APPROVE_WAITING;
List<IssuedTicketStatus> issuedTicketStatuses = getIssuedTicketStatuses();
if (isCanceled(issuedTicketStatuses)) {
return IssuedTicketsStage.CANCELED;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
@Getter
@AllArgsConstructor
public enum IssuedTicketsStage {
APPROVE_WAITING("APPROVE_WAITING", "승인대기"),
// 입장완료
AFTER_ENTRANCE("AFTER_ENTRANCE", "입장완료"),
// 관람예정
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,13 @@ public Order findById(Long orderId) {
}

public Order findByOrderUuid(String uuid) {
return orderRepository.findByUuid(uuid).orElseThrow(() -> OrderNotFoundException.EXCEPTION);
}

public Order find(String uuid) {
return orderRepository.find(uuid).orElseThrow(() -> OrderNotFoundException.EXCEPTION);
return orderRepository
.findByOrderUuid(uuid)
.orElseThrow(() -> OrderNotFoundException.EXCEPTION);
}

public Optional<Order> findRecentOrderByUserId(Long userId) {
return orderRepository.findFirstByUserIdOrderByIdDesc(userId);
return orderRepository.findRecentOrder(userId);
}

public Slice<Order> findMyOrders(FindMyPageOrderCondition condition, Pageable pageable) {
Expand Down
Loading