Skip to content
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
1 change: 0 additions & 1 deletion back/src/main/java/com/bubble/giju/GijuApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.bubble.giju.domain.order.controller;

import com.bubble.giju.domain.cart.dto.response.CartListResponseDto;
import com.bubble.giju.domain.order.dto.request.DirectOrderRequestDto;
import com.bubble.giju.domain.order.dto.request.OrderRequestDto;
import com.bubble.giju.domain.order.dto.request.RefundRequestDto;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
package com.bubble.giju.domain.order.dto.request;

import com.bubble.giju.domain.order.entity.OrderStatus;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.util.List;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@
@NoArgsConstructor
public class RefundRequestDto {
private Long orderId;
private List<Long> OrderDetailId;
private List<Long> orderDetailId;

@Builder
public RefundRequestDto(Long orderId, List<Long> OrderDetailId) {
public RefundRequestDto(Long orderId, List<Long> orderDetailId) {
this.orderId = orderId;
this.OrderDetailId = OrderDetailId;
this.orderDetailId = orderDetailId;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import lombok.Getter;
import lombok.NoArgsConstructor;

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,11 @@
import com.bubble.giju.domain.payment.entity.Payment;
import com.bubble.giju.domain.user.entity.User;

import com.bubble.giju.global.config.CustomException;
import com.bubble.giju.global.config.ErrorCode;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.CreatedDate;


import java.time.LocalDateTime;
import java.time.OffsetDateTime;
import java.time.ZoneId;
import java.util.ArrayList;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.bubble.giju.domain.order.entity;


import com.bubble.giju.domain.user.entity.User;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Builder;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.time.LocalDateTime;
import java.time.OffsetDateTime;
import java.util.List;
import java.util.Optional;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import java.time.LocalDateTime;
import java.time.OffsetDateTime;

@Component
Expand All @@ -28,7 +27,7 @@ public class OrderCleanUpScheduler {

@Scheduled(fixedRate = 5 * 60 * 1000) // 5분 간격
@Transactional
public void CleanUpExpiredPendingOrder(){
public void cleanUpExpiredPendingOrder(){
OffsetDateTime cutoff = OffsetDateTime.now().minusMinutes(expirationMinutes);
log.info("[OrderCleanUpScheduler] {}분 경과 주문 소프트 삭제 시작 - 기준 시각: {}", expirationMinutes, cutoff);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,8 @@ public void hardDeleteExpiredSoftDeletedOrders() {
* 트랜잭션 블럭을 벗어나면 자동으로 commit됨
* 만약 예외가 발생하면 자동으로 rollback됨
*/
txTemplate.executeWithoutResult(status -> {
orderRepository.hardDeleteByOrderIds(chunk);
});
txTemplate.executeWithoutResult(status -> orderRepository.hardDeleteByOrderIds(chunk));

log.info("[HardDelete] {} ~ {}번 주문 삭제 처리 완료", i + 1, i + chunk.size());
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.bubble.giju.domain.order.service.serviceImpl;
package com.bubble.giju.domain.order.service.impl;

import com.bubble.giju.domain.cart.entity.Cart;
import com.bubble.giju.domain.cart.repository.CartRepository;
Expand Down Expand Up @@ -55,12 +55,24 @@ public class OrderServiceImpl implements OrderService {
private String failUrl;

@Value("${order.delivery-charge}")
private int deliveryCharge;
private int deliveryFee;

@Value("${order.targetPrice}")
private int targetPrice;


/**
* 장바구니 기반 주문 생성
* - 사용자가 장바구니에서 선택한 상품들을 주문으로 생성
* - 각 장바구니 항목의 상품 정보와 수량을 기반으로 주문 상세(OrderDetail) 생성
* - 주문 총액, 배달비, 주문명, 고객 Key 생성 및 주문 저장
* - 결제 서비스 연동용 고유 주문 ID 생성
* - 주문과 장바구니 매핑 정보 저장
*
* @param cartItemIds 주문에 포함할 장바구니 항목 ID 리스트
* @param principal 현재 로그인한 사용자 정보
* @return OrderResponseDto 생성된 주문에 대한 결제 요청 정보
*/
@Transactional
@Override
public OrderResponseDto createOrder(List<Long> cartItemIds, CustomPrincipal principal) {
Expand Down Expand Up @@ -152,9 +164,6 @@ public OrderResponseDto createOrder(List<Long> cartItemIds, CustomPrincipal prin
@Override
public DirectOrderResponseDto getDirectBuyInfo(Long drinkId, int quantity, CustomPrincipal customPrincipal) {

// 사용자 조회
User user = userRepository.findById(UUID.fromString(customPrincipal.getUserId()))
.orElseThrow(() -> new CustomException(ErrorCode.NON_EXISTENT_USER));

// 전통주 상품 조회
Drink drink = drinkRepository.findById(drinkId)
Expand Down Expand Up @@ -274,10 +283,18 @@ private String buildOrderName(List<Cart> cartItems) {


private int calculateDeliveryCharge(int totalAmount) {
return totalAmount >= targetPrice ? 0 : deliveryCharge;
return totalAmount >= targetPrice ? 0 : deliveryFee;
}


/**
* 주문 내역 조회
* - 현재 로그인한 사용자의 주문 내역을 조회
* - 주문 상태가 결제 성공, 배송 중, 배송 완료, 부분 취소, 환불 관련 상태인 주문만 필터링
* - 각 주문의 상세 항목(OrderDetail)과 결제 정보(Payment) 포함
*
* @param principal 현재 로그인한 사용자 정보
* @return List<OrderHistoryResonseDto> 사용자의 주문 내역 리스트
*/
@Transactional(readOnly = true)
@Override
public List<OrderHistoryResonseDto> getOrderHistory(CustomPrincipal principal) {
Expand Down Expand Up @@ -328,8 +345,19 @@ public List<OrderHistoryResonseDto> getOrderHistory(CustomPrincipal principal) {
.toList();
}


/**
* 주문 환불 요청 처리
* - 로그인한 사용자가 특정 주문의 일부 항목에 대해 환불을 요청
* - 주문 소유자 검증, 배송완료 상태 여부 확인
* - 환불 요청 대상 OrderDetail 항목 검증 (이미 취소/환불 요청되지 않았는지)
* - OrderDetail 상태를 환불요청 상태로 업데이트
*
* @param requestDto 환불 요청 정보 (주문 ID 및 환불할 주문 상세 ID 목록)
* @param principal 현재 로그인한 사용자 정보
* @return RefundResponseDto 환불 요청이 처리된 주문 상세 항목 정보
*/
@Transactional
@Override
public RefundResponseDto requestRefund(RefundRequestDto requestDto, CustomPrincipal principal) {
UUID userId = UUID.fromString(principal.getUserId());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import com.bubble.giju.domain.cart.dto.response.CartListResponseDto;
import com.bubble.giju.domain.cart.dto.response.CartResponseDto;
import com.bubble.giju.domain.cart.service.CartService;
import com.bubble.giju.domain.user.dto.CustomPrincipal;
import com.fasterxml.jackson.databind.ObjectMapper;

import org.junit.jupiter.api.DisplayName;
Expand All @@ -18,15 +17,13 @@


import org.springframework.http.MediaType;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.test.context.support.WithMockUser;
import org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors;
import org.springframework.test.context.bean.override.mockito.MockitoBean;
import org.springframework.test.web.servlet.MockMvc;

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


import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
Expand Down
Loading
Loading