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.1.0 #265

Merged
merged 15 commits into from
Feb 1, 2023
Merged
Changes from 1 commit
Commits
Show all changes
15 commits
Select commit Hold shift + click to select a range
87d83d1
feat : ์„œ๋ฒ„์—๋Ÿฌ ์Šฌ๋ž™ ์•Œ๋ฆผ ์ถ”๊ฐ€ (#235)
gengminy Jan 31, 2023
74f5309
feat : ์ด๋ฒคํŠธ ์กฐํšŒ ๋ถ„๋ฆฌ (#240)
gengminy Jan 31, 2023
db22551
feat : ๊ณต์—ฐ ์ƒ์„ธ ๋ฐ ์ฒดํฌ๋ฆฌ์ŠคํŠธ ์กฐํšŒ ๊ตฌํ˜„ (#246)
gengminy Jan 31, 2023
92dfad8
refactor: ๋ฐœ๊ธ‰ ํ‹ฐ์ผ“ ๊ด€๋ จ DDD ์ ์šฉ ๋ฆฌํŒฉํ† ๋ง ๋ฐ ๊ด€๋ฆฌ์ž ํ‹ฐ์ผ“ ์ทจ์†Œ API ์ž‘์„ฑ (#247)
sanbonai06 Feb 1, 2023
633adf2
feat(host) : ํ˜ธ์ŠคํŠธ ๊ถŒํ•œ ๊ฒ€์ฆ aop (#250)
ImNM Feb 1, 2023
443b8c0
feat(order) : admin event orders ๋‹ค๊ฑด ์กฐํšŒ (#248)
ImNM Feb 1, 2023
d5e10a2
feature : ์ด๋ฒคํŠธ ํ‹ฐ์ผ“์ƒํ’ˆ ์˜ต์…˜ ์ ์šฉ ํ˜„ํ™ฉ ์กฐํšŒ (์–ด๋“œ๋ฏผ์šฉ) (#251)
kim-wonjin Feb 1, 2023
c396018
feature(OptionGroup) : ์ด๋ฒคํŠธ์— ์†ํ•œ ์˜ต์…˜๊ทธ๋ฃน ์กฐํšŒ (#252)
kim-wonjin Feb 1, 2023
7d7706b
feature : ํ‹ฐ์ผ“์ƒํ’ˆ ์‚ญ์ œ (#253)
kim-wonjin Feb 1, 2023
4340168
refactor : host role Host ์šฉ ์ƒ์„ฑ, ์–ด๋…ธํ…Œ์ด์…˜ ํ•„๋“œ ๋ฆฌํŒฉํ† ๋ง (#256)
ImNM Feb 1, 2023
36f0178
refactor : HostRole ๋ช…์นญ ์ˆ˜์ • (#257)
gengminy Feb 1, 2023
e316b48
feature : ์˜ต์…˜๊ทธ๋ฃน ์‚ญ์ œ (#263)
kim-wonjin Feb 1, 2023
7a78038
feat : image url ๋ฐœ๊ธ‰ api ์ถ”๊ฐ€ (#262)
ImNM Feb 1, 2023
5f7be08
feat : user me api (#259)
ImNM Feb 1, 2023
13c13b6
feat : ์–ด๋“œ๋ฏผ ๋Œ€์‹œ๋ณด๋“œ ํ†ต๊ณ„ ์ฟผ๋ฆฌ ์ถ”๊ฐ€ (#264)
ImNM Feb 1, 2023
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
Prev Previous commit
Next Next commit
feature(OptionGroup) : ์ด๋ฒคํŠธ์— ์†ํ•œ ์˜ต์…˜๊ทธ๋ฃน ์กฐํšŒ (#252)
  • Loading branch information
kim-wonjin authored Feb 1, 2023

Verified

This commit was created on GitHub.com and signed with GitHubโ€™s verified signature.
commit c39601836d109e04a1dacf32468800be96e62926
Original file line number Diff line number Diff line change
@@ -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;
@@ -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
@@ -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;
@@ -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) {
@@ -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
@@ -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
@@ -20,6 +21,11 @@ public OptionGroup queryOptionGroup(Long optionGroupId) {
.orElseThrow(() -> OptionGroupNotFoundException.EXCEPTION);
}

public List<OptionGroup> findAllByEventId(Long eventId) {
return optionGroupRepository.findAllByEvent_IdAndOptionGroupStatus(
eventId, OptionGroupStatus.VALID);
}

public OptionGroup save(OptionGroup optionGroup) {
return optionGroupRepository.save(optionGroup);
}
Original file line number Diff line number Diff line change
@@ -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);
}