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

feature : 이벤트에 속한 옵션그룹 조회 (어드민용) #252

Merged
merged 1 commit into from
Feb 1, 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 @@ -2,8 +2,10 @@


import band.gosrock.api.ticketItem.dto.request.CreateTicketOptionRequest;
import band.gosrock.api.ticketItem.dto.response.GetEventOptionsResponse;
import band.gosrock.api.ticketItem.dto.response.OptionGroupResponse;
import band.gosrock.api.ticketItem.service.CreateTicketOptionUseCase;
import band.gosrock.api.ticketItem.service.GetEventOptionsUseCase;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
Expand All @@ -19,12 +21,19 @@
public class TicketOptionController {

private final CreateTicketOptionUseCase createTicketOptionUseCase;
private final GetEventOptionsUseCase getEventOptionsUseCase;

@Operation(summary = "특정 이벤트에 속하는 티켓옵션을 생성합니다.")
@Operation(summary = "해당 이벤트에 속하는 티켓옵션을 생성합니다.")
@PostMapping
public OptionGroupResponse createTicketOption(
@RequestBody @Valid CreateTicketOptionRequest createTicketOptionRequest,
@PathVariable Long eventId) {
return createTicketOptionUseCase.execute(createTicketOptionRequest, eventId);
}

@Operation(summary = "해당 이벤트에 속하는 옵션을 모두 조회합니다.")
@GetMapping
public GetEventOptionsResponse getEventOptions(@PathVariable Long eventId) {
return getEventOptionsUseCase.execute(eventId);
}
}
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 GetEventOptionsResponse {

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

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

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


import band.gosrock.api.ticketItem.dto.request.CreateTicketOptionRequest;
import band.gosrock.api.ticketItem.dto.response.GetEventOptionsResponse;
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.adaptor.EventAdaptor;
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 @@ -20,6 +23,8 @@
public class TicketOptionMapper {

private final TicketItemAdaptor ticketItemAdaptor;
private final EventAdaptor eventAdaptor;
private final OptionGroupAdaptor optionGroupAdaptor;

public OptionGroup toOptionGroup(
CreateTicketOptionRequest createTicketOptionRequest, Event event) {
Expand Down Expand Up @@ -47,4 +52,15 @@ public GetTicketItemOptionsResponse toGetTicketItemOptionResponse(
return GetTicketItemOptionsResponse.from(
optionGroups.stream().map(OptionGroupResponse::from).toList());
}

@Transactional(readOnly = true)
public GetEventOptionsResponse toGetEventOptionResponse(Long eventId) {

Event event = eventAdaptor.findById(eventId);

List<OptionGroup> optionGroups = optionGroupAdaptor.findAllByEventId(event.getId());

return GetEventOptionsResponse.from(
optionGroups.stream().map(OptionGroupResponse::from).toList());
}
}
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.GetEventOptionsResponse;
import band.gosrock.api.ticketItem.mapper.TicketOptionMapper;
import band.gosrock.common.annotation.UseCase;
import lombok.RequiredArgsConstructor;

@UseCase
@RequiredArgsConstructor
public class GetEventOptionsUseCase {

private final TicketOptionMapper ticketOptionMapper;

public GetEventOptionsResponse execute(Long eventId) {

return ticketOptionMapper.toGetEventOptionResponse(eventId);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
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 @@ -20,6 +21,11 @@ public OptionGroup queryOptionGroup(Long optionGroupId) {
.orElseThrow(() -> OptionGroupNotFoundException.EXCEPTION);
}

public List<OptionGroup> findAllByEventId(Long eventId) {
return optionGroupRepository.findAllByEvent_IdAndOptionGroupStatus(
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 Author

Choose a reason for hiding this comment

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

ticketItemRepository에 노경민씨가 만들어놓은거 보구 맞춘건데 같이뺄까여? @gengminy

Copy link
Member

Choose a reason for hiding this comment

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

매핑된 여러 Entity들을 통해서 조회하는 쿼리같은 경우 QueryDsl 써서 해결하는게 더 직관적이고 좋을 것 같다는 생각이 듭니당

eventId, OptionGroupStatus.VALID);
}

public OptionGroup save(OptionGroup optionGroup) {
return optionGroupRepository.save(optionGroup);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,14 @@

import band.gosrock.domain.domains.ticket_item.domain.OptionGroup;
import band.gosrock.domain.domains.ticket_item.domain.OptionGroupStatus;
import java.util.List;
import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;

public interface OptionGroupRepository extends JpaRepository<OptionGroup, Long> {

Optional<OptionGroup> findByIdAndOptionGroupStatus(
Long optionGroupId, OptionGroupStatus status);

List<OptionGroup> findAllByEvent_IdAndOptionGroupStatus(Long eventId, OptionGroupStatus status);
}