Skip to content

Commit 09c1f4f

Browse files
author
[BE9]도석환
committed
feat: 라이브 경매 낙찰 시 기본 배송지를 거래 배송지에 추가
1 parent e3e1c26 commit 09c1f4f

File tree

1 file changed

+18
-5
lines changed

1 file changed

+18
-5
lines changed

src/main/java/devut/buzzerbidder/domain/deal/service/LiveDealService.java

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@
1313
import devut.buzzerbidder.domain.liveitem.entity.LiveItem;
1414
import devut.buzzerbidder.domain.liveitem.entity.LiveItem.AuctionStatus;
1515
import devut.buzzerbidder.domain.liveitem.repository.LiveItemRepository;
16+
import devut.buzzerbidder.domain.user.entity.DeliveryAddress;
1617
import devut.buzzerbidder.domain.user.entity.User;
18+
import devut.buzzerbidder.domain.user.repository.DeliveryAddressRepository;
1719
import devut.buzzerbidder.domain.user.service.UserService;
1820
import devut.buzzerbidder.domain.wallet.service.WalletService;
1921
import devut.buzzerbidder.global.exeption.BusinessException;
@@ -23,8 +25,6 @@
2325
import org.springframework.stereotype.Service;
2426
import org.springframework.transaction.annotation.Transactional;
2527

26-
import java.util.Optional;
27-
2828
@Service
2929
@RequiredArgsConstructor
3030
@Transactional(readOnly = true)
@@ -36,27 +36,40 @@ public class LiveDealService {
3636
private final UserService userService;
3737
private final WalletService walletService;
3838
private final ApplicationEventPublisher eventPublisher;
39+
private final DeliveryAddressRepository deliveryAddressRepository;
3940

4041
public LiveDeal findByIdOrThrow(Long dealId) {
4142
return liveDealRepository.findById(dealId)
4243
.orElseThrow(() -> new BusinessException(ErrorCode.DEAL_NOT_FOUND));
4344
}
4445

45-
// TODO: 라이브 딜 생성 시 기본 배송지 자동 설정 (나중에 구현)
46-
4746
@Transactional
4847
public void createDeal(Long liveItemId, Long buyerId, Long winningPrice, Long depositAmount) {
4948
LiveItem item = liveItemRepository.findByIdWithLock(liveItemId)
5049
.orElseThrow(() -> new BusinessException(ErrorCode.NOT_FOUND_DATA));
5150
User buyer = userService.findById(buyerId);
5251

53-
// DelayedDeal 생성
52+
// 구매자의 기본 배송지 조회
53+
DeliveryAddress defaultAddress = null;
54+
if (buyer.getDefaultDeliveryAddressId() != null) {
55+
defaultAddress = deliveryAddressRepository.findByUserAndId(buyer, buyer.getDefaultDeliveryAddressId())
56+
.orElse(null);
57+
}
58+
if (defaultAddress == null) {
59+
defaultAddress = deliveryAddressRepository.findByUserAndIsDefaultTrue(buyer)
60+
.orElse(null);
61+
}
62+
63+
// LiveDeal 생성
5464
LiveDeal deal = LiveDeal.builder()
5565
.item(item)
5666
.buyer(buyer)
5767
.winningPrice(winningPrice)
5868
.depositAmount(depositAmount)
5969
.status(DealStatus.PENDING)
70+
.deliveryAddress(defaultAddress != null ? defaultAddress.getAddress() : null)
71+
.deliveryAddressDetail(defaultAddress != null ? defaultAddress.getAddressDetail() : null)
72+
.deliveryPostalCode(defaultAddress != null ? defaultAddress.getPostalCode() : null)
6073
.build();
6174

6275
liveDealRepository.save(deal);

0 commit comments

Comments
 (0)