Skip to content

Commit

Permalink
πŸš€ :: Api-v0.0.8-2
Browse files Browse the repository at this point in the history
πŸš€ :: Api-v0.0.8-2
  • Loading branch information
ImNM authored Jan 31, 2023
2 parents 4e3efb4 + a2168bd commit bd24a16
Show file tree
Hide file tree
Showing 21 changed files with 188 additions and 57 deletions.
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

0 comments on commit bd24a16

Please sign in to comment.