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

[DEV-312] CreatePurchase, DeletePurchaseTickets EP 마이그레이션 #116

Merged
merged 14 commits into from
Jun 17, 2024
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 @@ -21,12 +21,13 @@ public final class GetMemberPurchaseResponseDto {
private final LocalDateTime createdAt;
private final String category;
private final int runningMinute;
private final String thumbnailPath;
private final List<GetMemberPurchaseResultDto.PurchaseItem> purchaseItems;

@Builder
public GetMemberPurchaseResponseDto(UUID purchaseId, UUID ticketingId, String title, String location,
LocalDateTime eventTime, LocalDateTime createdAt, String category,
int runningMinute,
int runningMinute, String thumbnailPath,
List<GetMemberPurchaseResultDto.PurchaseItem> purchaseItems) {
this.purchaseId = purchaseId;
this.ticketingId = ticketingId;
Expand All @@ -36,6 +37,7 @@ public GetMemberPurchaseResponseDto(UUID purchaseId, UUID ticketingId, String ti
this.createdAt = createdAt;
this.category = category;
this.runningMinute = runningMinute;
this.thumbnailPath = thumbnailPath;
this.purchaseItems = purchaseItems;
}

Expand All @@ -49,6 +51,7 @@ public static GetMemberPurchaseResponseDto convertFromDto(GetMemberPurchaseResul
.createdAt(dto.getCreatedAt())
.category(dto.getCategory())
.runningMinute(dto.getRunningMinutes())
.thumbnailPath(dto.getThumbnailPath())
.purchaseItems(dto.getPurchaseItems())
.build();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
Expand All @@ -15,14 +14,11 @@

import com.tiketeer.Tiketeer.auth.SecurityContextHelper;
import com.tiketeer.Tiketeer.domain.purchase.annotation.CheckWaitingQueueAndToken;
import com.tiketeer.Tiketeer.domain.purchase.controller.dto.DeletePurchaseTicketsRequestDto;
import com.tiketeer.Tiketeer.domain.purchase.controller.dto.DeletePurchaseItemsRequestDto;
import com.tiketeer.Tiketeer.domain.purchase.controller.dto.PostPurchaseRequestDto;
import com.tiketeer.Tiketeer.domain.purchase.controller.dto.PostPurchaseResponseDto;
import com.tiketeer.Tiketeer.domain.purchase.usecase.CreatePurchaseUseCase;
import com.tiketeer.Tiketeer.domain.purchase.usecase.DeletePurchaseTicketsUseCase;
import com.tiketeer.Tiketeer.domain.purchase.usecase.GetPurchaseTicketsUseCase;
import com.tiketeer.Tiketeer.domain.purchase.usecase.dto.GetPurchaseTicketsCommandDto;
import com.tiketeer.Tiketeer.domain.purchase.usecase.dto.GetPurchaseTicketsResponseDto;
import com.tiketeer.Tiketeer.domain.purchase.usecase.DeletePurchaseItemsUseCase;
import com.tiketeer.Tiketeer.response.ApiResponse;

import jakarta.validation.Valid;
Expand All @@ -31,17 +27,14 @@
@RequestMapping("/purchases")
public class PurchaseController {
private final CreatePurchaseUseCase createPurchaseUseCase;
private final DeletePurchaseTicketsUseCase deletePurchaseTicketsUseCase;
private final GetPurchaseTicketsUseCase getPurchaseTicketsUseCase;
private final DeletePurchaseItemsUseCase deletePurchaseItemsUseCase;
private final SecurityContextHelper securityContextHelper;

@Autowired
PurchaseController(CreatePurchaseUseCase createPurchaseUseCase,
DeletePurchaseTicketsUseCase deletePurchaseTicketsUseCase, SecurityContextHelper securityContextHelper,
GetPurchaseTicketsUseCase getPurchaseTicketsUseCase) {
DeletePurchaseItemsUseCase deletePurchaseItemsUseCase, SecurityContextHelper securityContextHelper) {
this.createPurchaseUseCase = createPurchaseUseCase;
this.deletePurchaseTicketsUseCase = deletePurchaseTicketsUseCase;
this.getPurchaseTicketsUseCase = getPurchaseTicketsUseCase;
this.deletePurchaseItemsUseCase = deletePurchaseItemsUseCase;
this.securityContextHelper = securityContextHelper;
}

Expand All @@ -55,24 +48,11 @@ public ResponseEntity<ApiResponse<PostPurchaseResponseDto>> postPurchase(
return ResponseEntity.status(HttpStatus.CREATED).body(responseBody);
}

@DeleteMapping("/{purchaseId}/tickets")
public ResponseEntity<?> deletePurchaseTickets(@PathVariable UUID purchaseId,
@Valid @RequestBody DeletePurchaseTicketsRequestDto request) {
@DeleteMapping("/{purchaseId}/items")
public ResponseEntity<?> deletePurchaseItems(@PathVariable UUID purchaseId,
@Valid @RequestBody DeletePurchaseItemsRequestDto request) {
var memberEmail = securityContextHelper.getEmailInToken();
deletePurchaseTicketsUseCase.deletePurchaseTickets(request.convertToDto(memberEmail, purchaseId));
deletePurchaseItemsUseCase.deletePurchaseItems(request.convertToDto(memberEmail, purchaseId));
return ResponseEntity.status(HttpStatus.OK).build();
}

@GetMapping("/{purchaseId}/tickets")
public ResponseEntity<ApiResponse<GetPurchaseTicketsResponseDto>> getPurchaseTickets(
@PathVariable UUID purchaseId) {

var memberEmail = securityContextHelper.getEmailInToken();
var result = getPurchaseTicketsUseCase.getPurchaseTickets(
new GetPurchaseTicketsCommandDto(purchaseId, memberEmail));
var responseBody = ApiResponse.wrap(GetPurchaseTicketsResponseDto.convertFromDto(result));

return ResponseEntity.status(HttpStatus.OK).body(responseBody);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.tiketeer.Tiketeer.domain.purchase.controller.dto;

import java.util.List;
import java.util.UUID;

import com.tiketeer.Tiketeer.domain.purchase.usecase.dto.DeletePurchaseItemsCommandDto;

import jakarta.validation.constraints.NotNull;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.ToString;

@Getter
@ToString
@NoArgsConstructor(force = true)
public class DeletePurchaseItemsRequestDto {
@NotNull
private final List<UUID> purchaseItemIds;

@Builder
public DeletePurchaseItemsRequestDto(@NotNull List<UUID> purchaseItemIds) {
this.purchaseItemIds = purchaseItemIds;
}

public DeletePurchaseItemsCommandDto convertToDto(String memberEmail, UUID purchaseId) {
return DeletePurchaseItemsCommandDto.builder().memberEmail(memberEmail)
.purchaseItemIds(purchaseItemIds)
.purchaseId(purchaseId)
.build();
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package com.tiketeer.Tiketeer.domain.purchase.controller.dto;

import java.util.List;
import java.util.UUID;

import com.tiketeer.Tiketeer.domain.purchase.usecase.dto.CreatePurchaseCommandDto;

import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import lombok.Builder;
import lombok.Getter;
Expand All @@ -18,20 +20,21 @@ public class PostPurchaseRequestDto {
private final UUID ticketingId;

@NotNull
private final Integer count;
@Valid
private final List<CreatePurchaseCommandDto.Ticket> tickets;

@Builder
public PostPurchaseRequestDto(@NotNull UUID ticketingId,
@NotNull Integer count) {
@NotNull List<CreatePurchaseCommandDto.Ticket> tickets) {
this.ticketingId = ticketingId;
this.count = count;
this.tickets = tickets;

}

public CreatePurchaseCommandDto convertToDto(String memberEmail) {
return CreatePurchaseCommandDto.builder().memberEmail(memberEmail)
.ticketingId(this.ticketingId)
.count(this.count)
.tickets(this.tickets)
.build();
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
package com.tiketeer.Tiketeer.domain.purchase.repository;

import java.util.List;
import java.util.UUID;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import com.tiketeer.Tiketeer.domain.purchase.Purchase;
import com.tiketeer.Tiketeer.domain.purchase.PurchaseItem;

@Repository
public interface PurchaseItemRepository extends JpaRepository<PurchaseItem, UUID> {
List<PurchaseItem> findAllByPurchase(Purchase purchase);
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.tiketeer.Tiketeer.domain.purchase.service;

import java.time.LocalDateTime;
import java.util.List;
import java.util.UUID;

import org.springframework.beans.factory.annotation.Autowired;
Expand All @@ -12,22 +11,18 @@
import com.tiketeer.Tiketeer.domain.purchase.exception.PurchaseNotFoundException;
import com.tiketeer.Tiketeer.domain.purchase.exception.PurchaseNotInSalePeriodException;
import com.tiketeer.Tiketeer.domain.purchase.repository.PurchaseRepository;
import com.tiketeer.Tiketeer.domain.ticket.Ticket;
import com.tiketeer.Tiketeer.domain.ticket.repository.TicketRepository;
import com.tiketeer.Tiketeer.domain.ticketing.exception.TicketingNotFoundException;
import com.tiketeer.Tiketeer.domain.ticketing.repository.TicketingRepository;

@Service
@Transactional(readOnly = true)
public class PurchaseService {
private final TicketRepository ticketRepository;
private final TicketingRepository ticketingRepository;
private final PurchaseRepository purchaseRepository;

@Autowired
PurchaseService(TicketRepository ticketRepository, TicketingRepository ticketingRepository,
PurchaseService(TicketingRepository ticketingRepository,
PurchaseRepository purchaseRepository) {
this.ticketRepository = ticketRepository;
this.ticketingRepository = ticketingRepository;
this.purchaseRepository = purchaseRepository;
}
Expand All @@ -48,10 +43,4 @@ public void validatePurchaseOwnership(UUID purchaseId, String email) {
throw new AccessForNotOwnedPurchaseException();
}
}

public List<Ticket> findTicketsUnderPurchase(UUID purchaseId) {
var purchase = purchaseRepository.findById(purchaseId).orElseThrow(PurchaseNotFoundException::new);
var ticketsUnderPurchase = ticketRepository.findAll();
return ticketsUnderPurchase;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@
import java.util.List;
import java.util.UUID;

import org.springframework.data.domain.Limit;

import com.tiketeer.Tiketeer.domain.purchase.usecase.dto.CreatePurchaseCommandDto;
import com.tiketeer.Tiketeer.domain.purchase.usecase.dto.CreatePurchaseResultDto;
import com.tiketeer.Tiketeer.domain.ticket.Ticket;
Expand All @@ -19,6 +17,6 @@ default CreatePurchaseResultDto createPurchase(CreatePurchaseCommandDto command,

@FunctionalInterface
interface ListTicketStrategy {
List<Ticket> findByTicketingIdAndPurchaseIsNullOrderById(UUID ticketingId, Limit limit);
List<Ticket> findAllById(List<UUID> ticketIds);
}
}
Loading
Loading