Skip to content

Commit 9dad03f

Browse files
committed
[250605] 배송기능 - 메인 배송로직, 외부택배사 로직, 이벤트 모델 개발, 메세지 발행,수신추가
1 parent 781d525 commit 9dad03f

21 files changed

+716
-232
lines changed

src/main/java/com/ecommerce/delivery/domain/Delivery.java

Lines changed: 0 additions & 63 deletions
This file was deleted.

src/main/java/com/ecommerce/delivery/domain/DeliveryStatus.java

Lines changed: 0 additions & 6 deletions
This file was deleted.

src/main/java/com/ecommerce/delivery/event/consumer/DeliveryEventConsumer.java

Lines changed: 0 additions & 62 deletions
This file was deleted.

src/main/java/com/ecommerce/delivery/service/DeliveryService.java

Lines changed: 0 additions & 66 deletions
This file was deleted.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.ecommerce.shipment.domain;
2+
3+
public enum ExternalShippingStatus {
4+
READY,
5+
READY_FOR_PICKUP,
6+
SHIPPING,
7+
DELIVERED,
8+
FAILED,
9+
CANCELLED;
10+
}
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
package com.ecommerce.shipment.domain;
2+
3+
import jakarta.persistence.*;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Builder;
6+
import lombok.Getter;
7+
import lombok.NoArgsConstructor;
8+
9+
import java.time.LocalDateTime;
10+
import java.util.UUID;
11+
12+
@Entity
13+
@Table(name = "shipments")
14+
@Getter
15+
@NoArgsConstructor
16+
@AllArgsConstructor
17+
@Builder
18+
public class Shipment {
19+
20+
@Id
21+
@GeneratedValue(strategy = GenerationType.IDENTITY)
22+
private long id;
23+
24+
@Column(name = "order_uuid", columnDefinition = "BINARY(16)", unique = true, nullable = false)
25+
private UUID orderUUID;
26+
27+
@Column(name = "ship_uuid", columnDefinition = "BINARY(16)", unique = true, nullable = false)
28+
private UUID shipUUID;
29+
30+
@Column(name = "carrier_name")
31+
private String carrierName;
32+
33+
@Column(name = "tracking_number")
34+
private String trackingNumber;
35+
36+
@Enumerated(EnumType.STRING)
37+
@Column(nullable = false)
38+
private ExternalShippingStatus status;
39+
40+
@Column(name = "estmt_deliver_dt")
41+
private LocalDateTime estmtDeliverDt;
42+
43+
@Column(name = "crea_dt")
44+
private LocalDateTime creaDt;
45+
46+
@Column(name = "updt_dt")
47+
private LocalDateTime updtDt;
48+
49+
@PrePersist
50+
protected void onCreate() {
51+
creaDt = LocalDateTime.now();
52+
updtDt = LocalDateTime.now();
53+
}
54+
55+
@PreUpdate
56+
protected void onUpdate() {
57+
updtDt = LocalDateTime.now();
58+
}
59+
60+
// 택배사 정보 업데이트
61+
public void updateCarrierDetailInfo(String carrierName, String trackingNumber) {
62+
Shipment.builder()
63+
.id(id)
64+
.orderUUID(orderUUID)
65+
.shipUUID(shipUUID)
66+
.carrierName(carrierName)
67+
.trackingNumber(trackingNumber)
68+
.status(status)
69+
.estmtDeliverDt(estmtDeliverDt)
70+
.creaDt(creaDt)
71+
.build();
72+
}
73+
74+
// 상태 업데이트 메서드 (불변성 유지)
75+
public Shipment updateShippingStatus(ExternalShippingStatus newStatus) {
76+
return Shipment.builder()
77+
.id(id)
78+
.orderUUID(orderUUID)
79+
.shipUUID(shipUUID)
80+
.carrierName(carrierName)
81+
.trackingNumber(trackingNumber)
82+
.status(newStatus)
83+
.estmtDeliverDt(estmtDeliverDt)
84+
.creaDt(creaDt)
85+
.build();
86+
}
87+
88+
public boolean hasStatusDelivered() {
89+
return status.equals(ExternalShippingStatus.DELIVERED);
90+
}
91+
92+
public boolean hasStatusFailed() {
93+
return status.equals(ExternalShippingStatus.FAILED);
94+
}
95+
96+
97+
public boolean hasDeliveryDetailInfo() {
98+
return hasCarrierName() && hasTrackingNumber();
99+
}
100+
101+
public boolean hasCarrierName() {
102+
return carrierName != null;
103+
}
104+
105+
106+
public boolean hasTrackingNumber() {
107+
return trackingNumber != null;
108+
}
109+
110+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package com.ecommerce.shipment.dto.request;
2+
3+
public class ShipmentRequest {
4+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package com.ecommerce.shipment.dto.response;
2+
3+
public class ShipmentResponse {
4+
}

0 commit comments

Comments
 (0)