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

✏️ QA 수정사항 반영 #15

Merged
merged 9 commits into from
Jan 16, 2024
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ dependencies {
testImplementation "org.junit.jupiter:junit-jupiter:5.8.1"
testImplementation "org.testcontainers:junit-jupiter:1.16.3"

implementation group: 'io.github.lotteon-maven', name: 'blooming-blooms-utils', version: '202401080033'
implementation group: 'io.github.lotteon-maven', name: 'blooming-blooms-utils', version: '202401160417'
}

dependencyManagement {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ public class PickupDetailDto {
private LocalDate pickupDate;
private String pickupTime;
private String productId;
private Long orderProductId;

public static PickupDetailDto fromEntity(Pickup pickup) {
return PickupDetailDto.builder()
Expand All @@ -57,6 +58,7 @@ public static PickupDetailDto fromEntity(Pickup pickup) {
.pickupDate(LocalDate.parse(pickup.getPickupDate()))
.pickupTime(pickup.getPickupTime())
.productId(pickup.getProductId())
.orderProductId(pickup.getOrderProductId())
.build();
}

Expand Down
16 changes: 16 additions & 0 deletions src/main/java/kr/bb/orderquery/domain/pickup/entity/Pickup.java
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,24 @@ public class Pickup implements Comparable<Pickup>{
@DynamoDBAttribute(attributeName = "product_id")
private String productId;

@DynamoDBAttribute(attributeName = "is_canceled")
@DynamoDBTyped(DynamoDBMapperFieldModel.DynamoDBAttributeType.BOOL)
private Boolean isCanceled;

@DynamoDBAttribute(attributeName = "order_product_id")
private Long orderProductId;

@Override
public int compareTo(@NotNull Pickup o) {
return this.getPickupDateTime().compareTo(o.getPickupDateTime());
}

public void updateStatus(String reservationStatus, String cardStatus, String reviewStatus) {
this.reservationStatus = reservationStatus;
if("CANCELED".equals(reservationStatus)) {
this.isCanceled = true;
}
this.cardStatus = cardStatus;
this.reviewStatus = reviewStatus;
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package kr.bb.orderquery.domain.pickup.facade;

import bloomingblooms.domain.StatusChangeDto;
import bloomingblooms.domain.card.CardStatus;
import bloomingblooms.domain.order.PickupStatusChangeDto;
import bloomingblooms.domain.pickup.PickupCreateDto;
import bloomingblooms.domain.store.StoreNameAndAddressDto;
import com.fasterxml.jackson.core.JsonProcessingException;
Expand All @@ -23,7 +25,6 @@
import org.springframework.messaging.handler.annotation.Payload;
import org.springframework.stereotype.Component;

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

Expand All @@ -43,27 +44,28 @@ public void create(PickupCreateDto pickupCreateDto) {
}

@KafkaListener(topics = "pickup-status-update", groupId = "pick-update")
public void updateReservationStatus(StatusChangeDto statusChangeDto) {
pickupService.updateReservationStatus(statusChangeDto.getId(), statusChangeDto.getStatus());
public void updateReservationStatus(PickupStatusChangeDto pickupStatusChangeDto) {
pickupService.updateReservationStatus(pickupStatusChangeDto.getOrderId(), pickupStatusChangeDto.getPickupStatus(),
pickupStatusChangeDto.getCardStatus(), pickupStatusChangeDto.getReviewStatus());
}

@SqsListener(
value = "${cloud.aws.sqs.pickup-card-status-queue.name}",
deletionPolicy = SqsMessageDeletionPolicy.NEVER
)
public void updateCardStatus(@Payload String message, Acknowledgment ack) throws JsonProcessingException {
public void doneCardStatus(@Payload String message, Acknowledgment ack) throws JsonProcessingException {
StatusChangeDto statusChangeDto = objectMapper.readValue(message, StatusChangeDto.class);
pickupService.updateCardStatus(statusChangeDto.getId(), statusChangeDto.getStatus());
pickupService.updateCardStatus(statusChangeDto.getId(), CardStatus.DONE.toString());
ack.acknowledge();
}

@SqsListener(
value = "${cloud.aws.sqs.pickup-review-status-queue.name}",
deletionPolicy = SqsMessageDeletionPolicy.NEVER
)
public void updateReviewStatus(@Payload String message, Acknowledgment ack) throws JsonProcessingException {
public void doneReviewStatus(@Payload String message, Acknowledgment ack) throws JsonProcessingException {
StatusChangeDto statusChangeDto = objectMapper.readValue(message, StatusChangeDto.class);
pickupService.updateReviewStatus(statusChangeDto.getId(), statusChangeDto.getStatus());
pickupService.updateReviewStatus(statusChangeDto.getId(), CardStatus.DONE.toString());
ack.acknowledge();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package kr.bb.orderquery.domain.pickup.handler;


import bloomingblooms.domain.pickup.PickupCreateDto;
import bloomingblooms.domain.store.StoreNameAndAddressDto;
import kr.bb.orderquery.domain.pickup.entity.Pickup;
Expand Down Expand Up @@ -44,6 +45,8 @@ public Pickup create(StoreNameAndAddressDto storeAddress, PickupCreateDto pickup
.reviewStatus(pickupCreateDto.getReviewStatus())
.cardStatus(pickupCreateDto.getCardStatus())
.productId(pickupCreateDto.getProductId())
.isCanceled(false)
.orderProductId(pickupCreateDto.getOrderProductId())
.build();

return pickupRepository.save(pickup);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ public void changeReviewStatus(Pickup pickup, String reviewStatus) {
pickupRepository.save(pickup);
}

public void changeReservationStatus(Pickup pickup, String reservationStatus) {
pickup.setReviewStatus(reservationStatus);
public void changeReservationStatus(Pickup pickup, String reservationStatus, String cardStatus, String reviewStatus) {
pickup.updateStatus(reservationStatus, cardStatus, reviewStatus);
pickupRepository.save(pickup);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,6 @@ public class PickupReader {
public List<Pickup> readByUserId(Long userId) {
return pickupRepository.findAllByUserId(userId);
}
public Long userPickupCount() {
return pickupRepository.count();
}

public List<Pickup> readByStoreIdAndPickupDate(Long storeId, String pickupDate) {
return pickupRepository.findAllByStoreIdAndPickupDate(storeId, pickupDate);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package kr.bb.orderquery.domain.pickup.service;

import bloomingblooms.domain.card.CardStatus;
import bloomingblooms.domain.pickup.PickupCreateDto;
import bloomingblooms.domain.review.ReviewStatus;
import bloomingblooms.domain.store.StoreNameAndAddressDto;
import kr.bb.orderquery.domain.pickup.dto.PickupDetailDto;
import kr.bb.orderquery.domain.pickup.dto.PickupsForDateDto;
Expand All @@ -18,6 +20,7 @@
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.*;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;

Expand All @@ -34,13 +37,14 @@ public Pickup createPickup(StoreNameAndAddressDto storeAddress, PickupCreateDto
return pickupCreator.create(storeAddress, pickupCreateDto);
}



public Page<PickupsInMypageDto> getPickupsForUser(Long userId, Pageable pageable, LocalDateTime now) {
List<Pickup> contents = pickupReader.readByUserId(userId);
List<Pickup> sortedPickups = sortAroundToday(contents, now);
List<Pickup> validPickups = contents.stream()
.filter(Predicate.not(Pickup::getIsCanceled))
.collect(Collectors.toList());
List<Pickup> sortedPickups = sortAroundToday(validPickups, now);
List<Pickup> slicedPickups = sliceList(sortedPickups, pageable);
Long count = pickupReader.userPickupCount();
long count = validPickups.size();

List<PickupsInMypageDto> pickupsInMyPageDtos = slicedPickups.stream()
.map(PickupsInMypageDto::fromEntity)
Expand All @@ -51,6 +55,7 @@ public Page<PickupsInMypageDto> getPickupsForUser(Long userId, Pageable pageable
public List<PickupsForDateDto> getPickupsForDate(Long storeId, String pickupDate) {
return pickupReader.readByStoreIdAndPickupDate(storeId, pickupDate)
.stream()
.filter(Predicate.not(Pickup::getIsCanceled))
.sorted(Comparator.comparing(Pickup::getPickupDateTime))
.map(PickupsForDateDto::fromEntity)
.collect(Collectors.toList());
Expand All @@ -61,7 +66,10 @@ public PickupDetailDto getPickup(String pickupReservationId) {
}

public List<Pickup> getPickupByStoreId(Long storeId) {
return pickupReader.readByStoreId(storeId);
return pickupReader.readByStoreId(storeId)
.stream()
.filter(Predicate.not(Pickup::getIsCanceled))
.collect(Collectors.toList());
}

public void updateCardStatus(String subscriptionId, String cardStatus) {
Expand All @@ -74,9 +82,10 @@ public void updateReviewStatus(String subscriptionId, String reviewStatus) {
pickupManager.changeReviewStatus(pickup, reviewStatus);
}

public void updateReservationStatus(String subscriptionId, String reservationStatus) {
public void updateReservationStatus(String subscriptionId, String reservationStatus,
CardStatus cardStatus, ReviewStatus reviewStatus) {
Pickup pickup = pickupReader.read(subscriptionId);
pickupManager.changeReservationStatus(pickup, reservationStatus);
pickupManager.changeReservationStatus(pickup, reservationStatus, cardStatus.toString(), reviewStatus.toString());
}

/*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ public class SubscriptionDetailDto {
private LocalDate nextDeliveryDate;
private String deliveryRequest;
private String productId;
private Boolean isUnsubscribed;


public static SubscriptionDetailDto fromEntity(Subscription subscription) {
Expand Down Expand Up @@ -66,6 +67,7 @@ public static SubscriptionDetailDto fromEntity(Subscription subscription) {
.nextDeliveryDate(LocalDate.parse(subscription.getNextDeliveryDate()))
.deliveryRequest(subscription.getDeliveryRequest())
.productId(subscription.getProductId())
.isUnsubscribed(subscription.getIsUnsubscribed())
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -106,4 +106,11 @@ public class Subscription {
@DynamoDBAttribute(attributeName = "product_id")
private String productId;

public void updateStatus(String subscriptionStatus, String reviewStatus) {
if ("CANCELED".equals(subscriptionStatus)) {
this.isUnsubscribed = true;
}
this.reviewStatus = reviewStatus;
}

}
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package kr.bb.orderquery.domain.subscription.facade;

import bloomingblooms.domain.StatusChangeDto;
import bloomingblooms.domain.order.SubscriptionStatusChangeDto;
import bloomingblooms.domain.review.ReviewStatus;
import bloomingblooms.domain.subscription.SubscriptionCreateDto;
import bloomingblooms.domain.subscription.SubscriptionDateDtoList;
import com.fasterxml.jackson.core.JsonProcessingException;
Expand Down Expand Up @@ -31,25 +33,26 @@ public void create(SubscriptionCreateDto subscriptionCreateDto) {
subscriptionService.createSubscription(subscriptionCreateDto);
}

@KafkaListener(topics = "subscription-date-update", groupId = "sub-update")
@KafkaListener(topics = "subscription-date-update", groupId = "sub-date-update")
public void updateSubscriptionDate(SubscriptionDateDtoList subscriptionDateDtoList) {
subscriptionDateDtoList.getSubscriptionDateDtoList()
.forEach(subscriptionDateDto -> subscriptionService.updateSubscriptionDate(subscriptionDateDto.getSubscriptionId(),
subscriptionDateDto.getNextDeliveryDate(), subscriptionDateDto.getNextPaymentDate()));
}

@KafkaListener(topics= "unsubscribe", groupId = "unsub")
public void unSubscribe(String subscriptionId) {
subscriptionService.unSubscribe(subscriptionId);
@KafkaListener(topics = "subscription-status-update", groupId = "sub-update")
public void updateSubscriptionStatus(SubscriptionStatusChangeDto statusChangeDto) {
subscriptionService.updateSubscriptionStatus(statusChangeDto.getOrderId(), statusChangeDto.getSubscriptionStatus(),
statusChangeDto.getReviewStatus());
}

@SqsListener(
value = "${cloud.aws.sqs.subscription-review-status-queue.name}",
deletionPolicy = SqsMessageDeletionPolicy.NEVER
)
public void updateReviewStatus(@Payload String message, Acknowledgment ack) throws JsonProcessingException {
public void doneReviewStatus(@Payload String message, Acknowledgment ack) throws JsonProcessingException {
StatusChangeDto statusChangeDto = objectMapper.readValue(message, StatusChangeDto.class);
subscriptionService.updateReviewStatus(statusChangeDto.getId(), statusChangeDto.getStatus());
subscriptionService.updateReviewStatus(statusChangeDto.getId(), ReviewStatus.DONE.toString());
ack.acknowledge();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ public void updateNextDeliveryDate(Subscription subscription, LocalDate nextDeli
subscriptionRepository.save(subscription);
}

public void unSubscribe(Subscription subscription) {
subscription.setIsUnsubscribed(true);
public void changeSubscriptionStatus(Subscription subscription, String subscriptionStatus, String reviewStatus) {
subscription.updateStatus(subscriptionStatus, reviewStatus);
subscriptionRepository.save(subscription);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,6 @@ public Subscription read(String subscriptionId) {
}

public List<Subscription> readByStoreId(Long storeId) {
return subscriptionRepository.findByStoreId(storeId);
return subscriptionRepository.findAllByStoreId(storeId);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

@EnableScan
public interface SubscriptionRepository extends CrudRepository<Subscription, String> {
List<Subscription> findByStoreId(Long storeId);
List<Subscription> findAllByStoreId(Long storeId);
List<Subscription> findAllByUserIdOrderByNextPaymentDateDesc(Long userId);
List<Subscription> findAllByStoreIdAndNextDeliveryDate(Long storeId, String nextDeliveryDate);
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package kr.bb.orderquery.domain.subscription.service;

import bloomingblooms.domain.review.ReviewStatus;
import bloomingblooms.domain.subscription.SubscriptionCreateDto;
import kr.bb.orderquery.domain.subscription.dto.SubscriptionDetailDto;
import kr.bb.orderquery.domain.subscription.dto.SubscriptionForDateDto;
Expand Down Expand Up @@ -31,7 +32,11 @@ public Subscription createSubscription(SubscriptionCreateDto subscriptionCreateD
public List<SubscriptionForUserDto> getSubscriptionsOfUser(Long userId) {
return subscriptionReader.readByUserId(userId)
.stream()
.filter(Predicate.not(Subscription::getIsUnsubscribed))
.filter(Predicate.not(subscription -> {
LocalDate now = LocalDate.now();
LocalDate nextDeliveryDate = LocalDate.parse(subscription.getNextDeliveryDate());
return subscription.getIsUnsubscribed() && now.isAfter(nextDeliveryDate);
}))
.map(SubscriptionForUserDto::fromEntity)
.collect(Collectors.toList());
}
Expand All @@ -56,9 +61,9 @@ public void updateSubscriptionDate(String subscriptionId, LocalDate nextDelivery
subscriptionManager.updateNextDeliveryDate(subscription, nextDeliveryDate, nextPaymentDate);
}

public void unSubscribe(String subscriptionId) {
public void updateSubscriptionStatus(String subscriptionId, String subscriptionStatus, ReviewStatus reviewStatus) {
Subscription subscription = subscriptionReader.read(subscriptionId);
subscriptionManager.unSubscribe(subscription);
subscriptionManager.changeSubscriptionStatus(subscription, subscriptionStatus, reviewStatus.toString());
}

public void updateReviewStatus(String subscriptionId, String reviewStatus) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,7 @@ private Pickup createPickupWithStoreIdAndPickupDate(Long storeId, LocalDate pick
.reviewStatus("REVIEW_READY")
.cardStatus("CARD_READY")
.productId("p1")
.isCanceled(false)
.build();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,7 @@ private Pickup createPickupWithUserId(Long userId) {
.reservationStatus("RESERVATION_READY")
.reviewStatus("REVIEW_READY")
.cardStatus("CARD_READY")
.isCanceled(false)
.build();
}
private Pickup createPickupWithId(String pickupId) {
Expand Down Expand Up @@ -294,6 +295,7 @@ private Pickup createPickupWithId(String pickupId) {
.reservationStatus("RESERVATION_READY")
.reviewStatus("REVIEW_READY")
.cardStatus("CARD_READY")
.isCanceled(false)
.build();
}

Expand Down Expand Up @@ -322,6 +324,7 @@ private Pickup createPickupWithPickupDate(Long userId, LocalDateTime pickupDateT
.reservationStatus("RESERVATION_READY")
.reviewStatus("REVIEW_READY")
.cardStatus("CARD_READY")
.isCanceled(false)
.build();

}
Expand Down Expand Up @@ -350,6 +353,7 @@ private Pickup createPickupWithPickupTime(Long userId, String pickupTime) {
.reservationStatus("RESERVATION_READY")
.reviewStatus("REVIEW_READY")
.cardStatus("CARD_READY")
.isCanceled(false)
.build();

}
Expand Down Expand Up @@ -379,6 +383,7 @@ private Pickup createPickupWithStoreIdAndPickupDate(Long storeId, LocalDate pick
.reservationStatus("RESERVATION_READY")
.reviewStatus("REVIEW_READY")
.cardStatus("CARD_READY")
.isCanceled(false)
.build();
}

Expand Down
Loading
Loading