1313import devut .buzzerbidder .domain .liveitem .entity .LiveItem ;
1414import devut .buzzerbidder .domain .liveitem .entity .LiveItem .AuctionStatus ;
1515import devut .buzzerbidder .domain .liveitem .repository .LiveItemRepository ;
16+ import devut .buzzerbidder .domain .user .entity .DeliveryAddress ;
1617import devut .buzzerbidder .domain .user .entity .User ;
18+ import devut .buzzerbidder .domain .user .repository .DeliveryAddressRepository ;
1719import devut .buzzerbidder .domain .user .service .UserService ;
1820import devut .buzzerbidder .domain .wallet .service .WalletService ;
1921import devut .buzzerbidder .global .exeption .BusinessException ;
2325import org .springframework .stereotype .Service ;
2426import 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