Skip to content

Commit 0877830

Browse files
committed
feat: 로컬 개발 환경 개선 - 대량 테스트 데이터 생성 및 설정 최적화
로컬 개발 편의성 향상을 위한 데이터 시더 및 설정 개선 - LocalDataSeeder: JavaFaker를 활용한 대량 테스트 데이터 자동 생성 - JavaFaker 의존성 추가 (SnakeYAML 충돌 해결) - JPA ddl-auto를 create → update로 변경하여 데이터 보존 - Hibernate SQL 상세 로깅 설정 추가 (파라미터 바인딩 포함) - @EnableScheduling 활성화 (캐시 동기화 스케줄러용) - Order, Point, Coupon, Member 도메인의 memberId 타입 변경 반영
1 parent e1a1921 commit 0877830

28 files changed

Lines changed: 326 additions & 54 deletions

apps/commerce-api/src/main/java/com/loopers/CommerceApiApplication.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44
import org.springframework.boot.SpringApplication;
55
import org.springframework.boot.autoconfigure.SpringBootApplication;
66
import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
7+
import org.springframework.scheduling.annotation.EnableScheduling;
78
import java.util.TimeZone;
89

10+
@EnableScheduling
911
@ConfigurationPropertiesScan
1012
@SpringBootApplication
1113
public class CommerceApiApplication {

apps/commerce-api/src/main/java/com/loopers/application/members/MemberFacade.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public class MemberFacade {
1919
@Transactional
2020
public MemberInfo registerMember(String memberId, String email, String password, String birthDate, Gender gender) {
2121
Member member = memberService.registerMember(memberId, email, password, birthDate, gender);
22-
pointService.initializeMemberPoints(memberId);
22+
pointService.initializeMemberPoints(member.getId()); // Member PK 사용
2323
return MemberInfo.from(member);
2424
}
2525

apps/commerce-api/src/main/java/com/loopers/application/order/OrderCommand.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,19 @@
99
@Builder
1010
public class OrderCommand {
1111

12-
private final String memberId;
12+
private final Long memberId;
1313
private final List<OrderLineCommand> orderLines;
1414
private final Long memberCouponId;
1515

16-
public static OrderCommand of(String memberId, List<OrderLineCommand> orderLines) {
16+
public static OrderCommand of(Long memberId, List<OrderLineCommand> orderLines) {
1717
return OrderCommand.builder()
1818
.memberId(memberId)
1919
.orderLines(orderLines)
2020
.memberCouponId(null)
2121
.build();
2222
}
2323

24-
public static OrderCommand of(String memberId, List<OrderLineCommand> orderLines, Long memberCouponId) {
24+
public static OrderCommand of(Long memberId, List<OrderLineCommand> orderLines, Long memberCouponId) {
2525
return OrderCommand.builder()
2626
.memberId(memberId)
2727
.orderLines(orderLines)

apps/commerce-api/src/main/java/com/loopers/application/order/OrderInfo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
public class OrderInfo {
1515

1616
private final Long id;
17-
private final String memberId;
17+
private final Long memberId;
1818
private final Money totalPrice;
1919
private final List<OrderItemInfo> items;
2020
private final ZonedDateTime orderedAt;

apps/commerce-api/src/main/java/com/loopers/domain/coupon/MemberCoupon.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public class MemberCoupon {
1919
private Long id;
2020

2121
@Column(nullable = false)
22-
private String memberId;
22+
private Long memberId;
2323

2424
@ManyToOne(fetch = FetchType.LAZY)
2525
@JoinColumn(name = "coupon_id", nullable = false)
@@ -28,14 +28,14 @@ public class MemberCoupon {
2828
@Column(nullable = false)
2929
private boolean used;
3030

31-
private MemberCoupon(String memberId, Coupon coupon) {
31+
private MemberCoupon(Long memberId, Coupon coupon) {
3232
validate(memberId, coupon);
3333
this.memberId = memberId;
3434
this.coupon = coupon;
3535
this.used = false;
3636
}
3737

38-
public static MemberCoupon issue(String memberId, Coupon coupon) {
38+
public static MemberCoupon issue(Long memberId, Coupon coupon) {
3939
return new MemberCoupon(memberId, coupon);
4040
}
4141

@@ -54,7 +54,7 @@ public Money calculateDiscount(Money originalPrice) {
5454
return coupon.calculateDiscount(originalPrice);
5555
}
5656

57-
public void validateOwnership(String memberId) {
57+
public void validateOwnership(Long memberId) {
5858
if (!this.memberId.equals(memberId)) {
5959
throw new CoreException(ErrorType.BAD_REQUEST, "본인의 쿠폰만 사용할 수 있습니다.");
6060
}
@@ -66,8 +66,8 @@ public void validateUsable() {
6666
}
6767
}
6868

69-
private void validate(String memberId, Coupon coupon) {
70-
if (memberId == null || memberId.isBlank()) {
69+
private void validate(Long memberId, Coupon coupon) {
70+
if (memberId == null) {
7171
throw new CoreException(ErrorType.BAD_REQUEST, "회원 ID는 필수입니다.");
7272
}
7373
if (coupon == null) {

apps/commerce-api/src/main/java/com/loopers/domain/coupon/repository/MemberCouponRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public interface MemberCouponRepository {
1111

1212
Optional<MemberCoupon> findByIdForUpdate(Long id);
1313

14-
List<MemberCoupon> findByMemberId(String memberId);
14+
List<MemberCoupon> findByMemberId(Long memberId);
1515

1616
MemberCoupon save(MemberCoupon memberCoupon);
1717
}

apps/commerce-api/src/main/java/com/loopers/domain/members/repository/MemberRepository.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ public interface MemberRepository {
66
Member save(Member member);
77
Member findByMemberId(String memberId);
88
boolean existsByMemberId(String memberId);
9+
boolean existsById(Long id);
910
}

apps/commerce-api/src/main/java/com/loopers/domain/order/Order.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
public class Order extends BaseEntity {
1919

2020
@Getter
21-
@Column(name = "member_id", nullable = false, length = 10)
22-
private String memberId;
21+
@Column(name = "member_id", nullable = false)
22+
private Long memberId;
2323

2424
@Getter
2525
@Embedded
@@ -29,7 +29,7 @@ public class Order extends BaseEntity {
2929
@OneToMany(mappedBy = "order", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
3030
private List<OrderItem> items = new ArrayList<>();
3131

32-
private Order(String memberId, List<OrderItem> items, Money totalPrice) {
32+
private Order(Long memberId, List<OrderItem> items, Money totalPrice) {
3333
validateMemberId(memberId);
3434
validateItems(items);
3535
validateTotalPrice(totalPrice);
@@ -40,14 +40,14 @@ private Order(String memberId, List<OrderItem> items, Money totalPrice) {
4040
items.forEach(this::addItem);
4141
}
4242

43-
public static Order create(String memberId, List<OrderItem> items) {
43+
public static Order create(Long memberId, List<OrderItem> items) {
4444
validateMemberId(memberId);
4545
validateItems(items);
4646
Money totalPrice = calculateTotalPrice(items);
4747
return new Order(memberId, items, totalPrice);
4848
}
4949

50-
public static Order create(String memberId, List<OrderItem> items, Money finalPrice) {
50+
public static Order create(Long memberId, List<OrderItem> items, Money finalPrice) {
5151
validateMemberId(memberId);
5252
validateItems(items);
5353
validateTotalPrice(finalPrice);
@@ -69,8 +69,8 @@ private static Money calculateTotalPrice(List<OrderItem> items) {
6969
.reduce(Money.zero(), Money::plus);
7070
}
7171

72-
private static void validateMemberId(String memberId) {
73-
if (memberId == null || memberId.trim().isEmpty()) {
72+
private static void validateMemberId(Long memberId) {
73+
if (memberId == null) {
7474
throw new CoreException(ErrorType.BAD_REQUEST, "회원 ID는 필수입니다.");
7575
}
7676
}

apps/commerce-api/src/main/java/com/loopers/domain/order/command/OrderPlacementCommand.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,19 @@
99
@Builder
1010
public class OrderPlacementCommand {
1111

12-
private final String memberId;
12+
private final Long memberId;
1313
private final List<OrderLineCommand> orderLines;
1414
private final Long memberCouponId;
1515

16-
public static OrderPlacementCommand of(String memberId, List<OrderLineCommand> orderLines) {
16+
public static OrderPlacementCommand of(Long memberId, List<OrderLineCommand> orderLines) {
1717
return OrderPlacementCommand.builder()
1818
.memberId(memberId)
1919
.orderLines(orderLines)
2020
.memberCouponId(null)
2121
.build();
2222
}
2323

24-
public static OrderPlacementCommand of(String memberId, List<OrderLineCommand> orderLines, Long memberCouponId) {
24+
public static OrderPlacementCommand of(Long memberId, List<OrderLineCommand> orderLines, Long memberCouponId) {
2525
return OrderPlacementCommand.builder()
2626
.memberId(memberId)
2727
.orderLines(orderLines)

apps/commerce-api/src/main/java/com/loopers/domain/order/service/OrderPlacementService.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public Order placeOrder(OrderPlacementCommand command) {
6767
return orderRepository.save(order);
6868
}
6969

70-
private MemberCoupon validateAndLockCoupon(Long memberCouponId, String memberId) {
70+
private MemberCoupon validateAndLockCoupon(Long memberCouponId, Long memberId) {
7171
MemberCoupon memberCoupon = memberCouponRepository.findByIdForUpdate(memberCouponId)
7272
.orElseThrow(() -> new CoreException(ErrorType.NOT_FOUND, "쿠폰을 찾을 수 없습니다."));
7373

@@ -79,7 +79,7 @@ private MemberCoupon validateAndLockCoupon(Long memberCouponId, String memberId)
7979

8080
private List<OrderItem> processOrderLines(List<OrderLineCommand> orderLines) {
8181
List<OrderItem> items = new ArrayList<>();
82-
82+
8383
for (OrderLineCommand line : orderLines) {
8484
Product product = productRepository.findById(line.getProductId())
8585
.orElseThrow(() -> new CoreException(ErrorType.NOT_FOUND, "상품을 찾을 수 없습니다."));
@@ -91,17 +91,17 @@ private List<OrderItem> processOrderLines(List<OrderLineCommand> orderLines) {
9191

9292
items.add(new OrderItem(product.getId(), line.getQuantity(), product.getPrice()));
9393
}
94-
94+
9595
return items;
9696
}
9797

98-
private void validateMemberExists(String memberId) {
99-
if (!memberRepository.existsByMemberId(memberId)) {
98+
private void validateMemberExists(Long memberId) {
99+
if (!memberRepository.existsById(memberId)) {
100100
throw new CoreException(ErrorType.NOT_FOUND, "회원을 찾을 수 없습니다.");
101101
}
102102
}
103103

104-
private void payWithPoints(String memberId, Money totalPrice) {
104+
private void payWithPoints(Long memberId, Money totalPrice) {
105105
Point point = pointRepository.findByMemberIdForUpdate(memberId)
106106
.orElseThrow(() -> new CoreException(ErrorType.NOT_FOUND, "포인트 정보를 찾을 수 없습니다."));
107107

0 commit comments

Comments
 (0)