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

🚀 :: Api-v0.0.8-2 #243

Merged
merged 1 commit into from
Jan 31, 2023
Merged
Show file tree
Hide file tree
Changes from all 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 @@ -4,10 +4,12 @@
import band.gosrock.api.ticketItem.dto.request.ApplyTicketOptionRequest;
import band.gosrock.api.ticketItem.dto.request.CreateTicketItemRequest;
import band.gosrock.api.ticketItem.dto.response.ApplyTicketOptionResponse;
import band.gosrock.api.ticketItem.dto.response.CreateTicketItemResponse;
import band.gosrock.api.ticketItem.dto.response.GetTicketItemOptionResponse;
import band.gosrock.api.ticketItem.dto.response.GetEventTicketItemsResponse;
import band.gosrock.api.ticketItem.dto.response.GetTicketItemOptionsResponse;
import band.gosrock.api.ticketItem.dto.response.TicketItemResponse;
import band.gosrock.api.ticketItem.service.ApplyTicketOptionUseCase;
import band.gosrock.api.ticketItem.service.CreateTicketItemUseCase;
import band.gosrock.api.ticketItem.service.GetEventTicketItemsUseCase;
import band.gosrock.api.ticketItem.service.GetTicketOptionsUseCase;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
Expand All @@ -26,12 +28,13 @@ public class TicketItemController {
public final CreateTicketItemUseCase createTicketItemUseCase;
public final ApplyTicketOptionUseCase applyTicketOptionUseCase;
public final GetTicketOptionsUseCase getTicketOptionsUseCase;
public final GetEventTicketItemsUseCase getEventTicketItemsUseCase;

@Operation(
summary = "특정 이벤트에 속하는 티켓 상품을 생성합니다.",
description = "제휴 되지 않은 회원은 티켓 가격 0으로 강제해 보내주세요!")
@PostMapping
public CreateTicketItemResponse createTicketItem(
public TicketItemResponse createTicketItem(
@RequestBody @Valid CreateTicketItemRequest createTicketItemRequest,
@PathVariable Long eventId) {
return createTicketItemUseCase.execute(createTicketItemRequest, eventId);
Expand All @@ -46,9 +49,15 @@ public ApplyTicketOptionResponse applyTicketOption(
return applyTicketOptionUseCase.execute(applyTicketOptionRequest, eventId, ticketItemId);
}

@Operation(summary = "해당 이벤트의 티켓상품을 모두 조회합니다.")
@GetMapping
public GetEventTicketItemsResponse getEventTicketItems(@PathVariable Long eventId) {
return getEventTicketItemsUseCase.execute(eventId);
}

@Operation(summary = "해당 티켓상품의 옵션을 모두 조회합니다.")
@GetMapping("/{ticketItemId}/options")
public GetTicketItemOptionResponse getTicketItemOptions(
public GetTicketItemOptionsResponse getTicketItemOptions(
@PathVariable Long eventId, @PathVariable Long ticketItemId) {
return getTicketOptionsUseCase.execute(eventId, ticketItemId);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@


import band.gosrock.api.ticketItem.dto.request.CreateTicketOptionRequest;
import band.gosrock.api.ticketItem.dto.response.TicketOptionResponse;
import band.gosrock.api.ticketItem.dto.response.OptionGroupResponse;
import band.gosrock.api.ticketItem.service.CreateTicketOptionUseCase;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
Expand All @@ -22,7 +22,7 @@ public class TicketOptionController {

@Operation(summary = "특정 이벤트에 속하는 티켓옵션을 생성합니다.")
@PostMapping
public TicketOptionResponse createTicketOption(
public OptionGroupResponse createTicketOption(
@RequestBody @Valid CreateTicketOptionRequest createTicketOptionRequest,
@PathVariable Long eventId) {
return createTicketOptionUseCase.execute(createTicketOptionRequest, eventId);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package band.gosrock.api.ticketItem.dto.response;


import io.swagger.v3.oas.annotations.media.Schema;
import java.util.List;
import lombok.Builder;
import lombok.Getter;

@Getter
@Builder
public class GetEventTicketItemsResponse {

@Schema(description = "티켓상품 리스트")
private List<TicketItemResponse> ticketItems;

public static GetEventTicketItemsResponse from(List<TicketItemResponse> ticketItems) {

return GetEventTicketItemsResponse.builder().ticketItems(ticketItems).build();
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package band.gosrock.api.ticketItem.dto.response;


import io.swagger.v3.oas.annotations.media.Schema;
import java.util.List;
import lombok.Builder;
import lombok.Getter;

@Getter
@Builder
public class GetTicketItemOptionsResponse {

@Schema(description = "옵션그룹 리스트")
private List<OptionGroupResponse> optionGroups;

public static GetTicketItemOptionsResponse from(List<OptionGroupResponse> optionGroups) {

return GetTicketItemOptionsResponse.builder().optionGroups(optionGroups).build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@

@Getter
@Builder
public class TicketOptionResponse {
public class OptionGroupResponse {
@Schema(description = "옵션그룹 id")
private final Long optionGroupId;

@Schema(description = "티켓 타입")
@Schema(description = "옵션그룹 타입")
private final OptionGroupType type;

@Schema(description = "이름")
Expand All @@ -25,9 +25,9 @@ public class TicketOptionResponse {

private final List<OptionResponse> options;

public static TicketOptionResponse from(OptionGroup optionGroup) {
public static OptionGroupResponse from(OptionGroup optionGroup) {

return TicketOptionResponse.builder()
return OptionGroupResponse.builder()
.optionGroupId(optionGroup.getId())
.type(optionGroup.getType())
.name(optionGroup.getName())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

@Getter
@Builder
public class CreateTicketItemResponse {
public class TicketItemResponse {
@Schema(description = "티켓상품 id")
private final Long ticketItemId;

Expand All @@ -35,9 +35,9 @@ public class CreateTicketItemResponse {
@Schema(description = "재고")
private final Long quantity;

public static CreateTicketItemResponse from(TicketItem ticketItem) {
public static TicketItemResponse from(TicketItem ticketItem) {

return CreateTicketItemResponse.builder()
return TicketItemResponse.builder()
.ticketItemId(ticketItem.getId())
.ticketName(ticketItem.getName())
.description(ticketItem.getDescription())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,25 @@


import band.gosrock.api.ticketItem.dto.request.CreateTicketItemRequest;
import band.gosrock.api.ticketItem.dto.response.GetEventTicketItemsResponse;
import band.gosrock.api.ticketItem.dto.response.TicketItemResponse;
import band.gosrock.common.annotation.Mapper;
import band.gosrock.domain.common.vo.Money;
import band.gosrock.domain.domains.event.adaptor.EventAdaptor;
import band.gosrock.domain.domains.event.domain.Event;
import band.gosrock.domain.domains.ticket_item.adaptor.TicketItemAdaptor;
import band.gosrock.domain.domains.ticket_item.domain.TicketItem;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.transaction.annotation.Transactional;

@Mapper
@RequiredArgsConstructor
public class TicketItemMapper {

private final TicketItemAdaptor ticketItemAdaptor;
private final EventAdaptor eventAdaptor;

public TicketItem toTicketItem(CreateTicketItemRequest createTicketItemRequest, Event event) {

return TicketItem.builder()
Expand All @@ -26,4 +35,13 @@ public TicketItem toTicketItem(CreateTicketItemRequest createTicketItemRequest,
.event(event)
.build();
}

@Transactional(readOnly = true)
public GetEventTicketItemsResponse toGetEventTicketItemsResponse(Long eventId) {

Event event = eventAdaptor.findById(eventId);
List<TicketItem> ticketItems = ticketItemAdaptor.findAllByEventId(event.getId());
return GetEventTicketItemsResponse.from(
ticketItems.stream().map(TicketItemResponse::from).toList());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,10 @@


import band.gosrock.api.ticketItem.dto.request.CreateTicketOptionRequest;
import band.gosrock.api.ticketItem.dto.response.GetTicketItemOptionResponse;
import band.gosrock.api.ticketItem.dto.response.TicketOptionResponse;
import band.gosrock.api.ticketItem.dto.response.GetTicketItemOptionsResponse;
import band.gosrock.api.ticketItem.dto.response.OptionGroupResponse;
import band.gosrock.common.annotation.Mapper;
import band.gosrock.domain.domains.event.domain.Event;
import band.gosrock.domain.domains.ticket_item.adaptor.OptionGroupAdaptor;
import band.gosrock.domain.domains.ticket_item.adaptor.TicketItemAdaptor;
import band.gosrock.domain.domains.ticket_item.domain.ItemOptionGroup;
import band.gosrock.domain.domains.ticket_item.domain.OptionGroup;
Expand All @@ -21,7 +20,6 @@
public class TicketOptionMapper {

private final TicketItemAdaptor ticketItemAdaptor;
private final OptionGroupAdaptor optionGroupAdaptor;

public OptionGroup toOptionGroup(
CreateTicketOptionRequest createTicketOptionRequest, Event event) {
Expand All @@ -36,7 +34,7 @@ public OptionGroup toOptionGroup(
}

@Transactional(readOnly = true)
public GetTicketItemOptionResponse toGetTicketItemOptionResponse(
public GetTicketItemOptionsResponse toGetTicketItemOptionResponse(
Long eventId, Long ticketItemId) {

TicketItem ticketItem = ticketItemAdaptor.queryTicketItem(ticketItemId);
Expand All @@ -46,7 +44,7 @@ public GetTicketItemOptionResponse toGetTicketItemOptionResponse(
.map(ItemOptionGroup::getOptionGroup)
.toList();

return GetTicketItemOptionResponse.from(
optionGroups.stream().map(TicketOptionResponse::from).toList());
return GetTicketItemOptionsResponse.from(
optionGroups.stream().map(OptionGroupResponse::from).toList());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

import band.gosrock.api.common.UserUtils;
import band.gosrock.api.ticketItem.dto.request.CreateTicketItemRequest;
import band.gosrock.api.ticketItem.dto.response.CreateTicketItemResponse;
import band.gosrock.api.ticketItem.dto.response.TicketItemResponse;
import band.gosrock.api.ticketItem.mapper.TicketItemMapper;
import band.gosrock.common.annotation.UseCase;
import band.gosrock.domain.domains.event.adaptor.EventAdaptor;
Expand All @@ -29,7 +29,7 @@ public class CreateTicketItemUseCase {
private final TicketItemMapper ticketItemMapper;

@Transactional
public CreateTicketItemResponse execute(
public TicketItemResponse execute(
CreateTicketItemRequest createTicketItemRequest, Long eventId) {
User user = userUtils.getCurrentUser();
Event event = eventAdaptor.findById(eventId);
Expand All @@ -42,6 +42,6 @@ public CreateTicketItemResponse execute(
ticketItemService.createTicketItem(
ticketItemMapper.toTicketItem(createTicketItemRequest, event), isPartner);

return CreateTicketItemResponse.from(ticketItem);
return TicketItemResponse.from(ticketItem);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

import band.gosrock.api.common.UserUtils;
import band.gosrock.api.ticketItem.dto.request.CreateTicketOptionRequest;
import band.gosrock.api.ticketItem.dto.response.TicketOptionResponse;
import band.gosrock.api.ticketItem.dto.response.OptionGroupResponse;
import band.gosrock.api.ticketItem.mapper.TicketOptionMapper;
import band.gosrock.common.annotation.UseCase;
import band.gosrock.domain.common.vo.Money;
Expand All @@ -30,7 +30,7 @@ public class CreateTicketOptionUseCase {
private final HostService hostService;

@Transactional
public TicketOptionResponse execute(
public OptionGroupResponse execute(
CreateTicketOptionRequest createTicketOptionRequest, Long eventId) {
User user = userUtils.getCurrentUser();
Event event = eventAdaptor.findById(eventId);
Expand All @@ -44,6 +44,6 @@ public TicketOptionResponse execute(
.createTicketOption(
Money.wons(createTicketOptionRequest.getAdditionalPrice()));
OptionGroup ticketOptionResult = ticketOptionService.createTicketOption(ticketOption);
return TicketOptionResponse.from(ticketOptionResult);
return OptionGroupResponse.from(ticketOptionResult);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package band.gosrock.api.ticketItem.service;


import band.gosrock.api.ticketItem.dto.response.GetEventTicketItemsResponse;
import band.gosrock.api.ticketItem.mapper.TicketItemMapper;
import band.gosrock.common.annotation.UseCase;
import lombok.RequiredArgsConstructor;

@UseCase
@RequiredArgsConstructor
public class GetEventTicketItemsUseCase {

private final TicketItemMapper ticketItemMapper;

public GetEventTicketItemsResponse execute(Long eventId) {

return ticketItemMapper.toGetEventTicketItemsResponse(eventId);
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package band.gosrock.api.ticketItem.service;


import band.gosrock.api.ticketItem.dto.response.GetTicketItemOptionResponse;
import band.gosrock.api.ticketItem.dto.response.GetTicketItemOptionsResponse;
import band.gosrock.api.ticketItem.mapper.TicketOptionMapper;
import band.gosrock.common.annotation.UseCase;
import lombok.RequiredArgsConstructor;
Expand All @@ -12,7 +12,7 @@ public class GetTicketOptionsUseCase {

private final TicketOptionMapper ticketOptionMapper;

public GetTicketItemOptionResponse execute(Long eventId, Long ticketItemId) {
public GetTicketItemOptionsResponse execute(Long eventId, Long ticketItemId) {

return ticketOptionMapper.toGetTicketItemOptionResponse(eventId, ticketItemId);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@

import band.gosrock.common.annotation.Adaptor;
import band.gosrock.domain.domains.ticket_item.domain.OptionGroup;
import band.gosrock.domain.domains.ticket_item.domain.OptionGroupStatus;
import band.gosrock.domain.domains.ticket_item.exception.OptionGroupNotFoundException;
import band.gosrock.domain.domains.ticket_item.repository.OptionGroupRepository;
import java.util.List;
import lombok.RequiredArgsConstructor;

@Adaptor
Expand All @@ -16,15 +16,11 @@ public class OptionGroupAdaptor {

public OptionGroup queryOptionGroup(Long optionGroupId) {
return optionGroupRepository
.findById(optionGroupId)
.findByIdAndOptionGroupStatus(optionGroupId, OptionGroupStatus.VALID)
.orElseThrow(() -> OptionGroupNotFoundException.EXCEPTION);
}

public OptionGroup save(OptionGroup optionGroup) {
return optionGroupRepository.save(optionGroup);
}

public List<OptionGroup> findAllByIds(List<Long> ids) {
return optionGroupRepository.findAllById(ids);
}
}
Loading