diff --git a/order-service/src/main/java/com/justpickup/orderservice/domain/order/entity/Order.java b/order-service/src/main/java/com/justpickup/orderservice/domain/order/entity/Order.java new file mode 100644 index 0000000..906b4b2 --- /dev/null +++ b/order-service/src/main/java/com/justpickup/orderservice/domain/order/entity/Order.java @@ -0,0 +1,43 @@ +package com.justpickup.orderservice.domain.order.entity; + +import com.justpickup.orderservice.domain.orderItem.entity.OrderItem; +import com.justpickup.orderservice.domain.transaction.entity.Transaction; +import com.justpickup.orderservice.global.entity.BaseEntity; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import javax.persistence.*; +import java.time.LocalDateTime; +import java.util.List; + +@Entity +@Table(name = "orders") +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class Order extends BaseEntity { + + @Id @GeneratedValue + @Column(name = "order_id") + private Long id; + + private Long userId; + + private Long userCouponId; + + private Long orderPrice; + + private LocalDateTime orderTime; + + private Long usedPoint; + + @Enumerated(EnumType.STRING) + private OrderStatus orderStatus; + + @OneToOne(mappedBy = "order") + private Transaction transaction; + + @OneToMany(mappedBy = "order") + private List orderItems; + +} diff --git a/order-service/src/main/java/com/justpickup/orderservice/domain/order/entity/OrderStatus.java b/order-service/src/main/java/com/justpickup/orderservice/domain/order/entity/OrderStatus.java new file mode 100644 index 0000000..2ff4f7f --- /dev/null +++ b/order-service/src/main/java/com/justpickup/orderservice/domain/order/entity/OrderStatus.java @@ -0,0 +1,8 @@ +package com.justpickup.orderservice.domain.order.entity; + +public enum OrderStatus { + PENDING, + PLACED, + CANCELED, + FAILED +} diff --git a/order-service/src/main/java/com/justpickup/orderservice/domain/orderItem/entity/OrderItem.java b/order-service/src/main/java/com/justpickup/orderservice/domain/orderItem/entity/OrderItem.java new file mode 100644 index 0000000..d9d21d2 --- /dev/null +++ b/order-service/src/main/java/com/justpickup/orderservice/domain/orderItem/entity/OrderItem.java @@ -0,0 +1,36 @@ +package com.justpickup.orderservice.domain.orderItem.entity; + +import com.justpickup.orderservice.domain.order.entity.Order; +import com.justpickup.orderservice.domain.orderItemOption.entity.OrderItemOption; +import com.justpickup.orderservice.global.entity.BaseEntity; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import javax.persistence.*; +import java.util.List; + +@Entity +@Table(name = "order_item") +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class OrderItem extends BaseEntity { + + @Id @GeneratedValue + @Column(name = "order_item_id") + private Long id; + + private Long itemId; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "order_id") + private Order order; + + @OneToMany(mappedBy = "orderItem") + private List orderItemOptions; + + private Long price; + + private Long count; + +} diff --git a/order-service/src/main/java/com/justpickup/orderservice/domain/orderItemOption/entity/OrderItemOption.java b/order-service/src/main/java/com/justpickup/orderservice/domain/orderItemOption/entity/OrderItemOption.java new file mode 100644 index 0000000..28148bb --- /dev/null +++ b/order-service/src/main/java/com/justpickup/orderservice/domain/orderItemOption/entity/OrderItemOption.java @@ -0,0 +1,27 @@ +package com.justpickup.orderservice.domain.orderItemOption.entity; + +import com.justpickup.orderservice.domain.orderItem.entity.OrderItem; +import com.justpickup.orderservice.global.entity.BaseEntity; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import javax.persistence.*; + +@Entity +@Table(name = "order_item_option") +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class OrderItemOption extends BaseEntity { + + @Id @GeneratedValue + @Column(name = "order_item_option_id") + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "order_item_id") + private OrderItem orderItem; + + private Long itemOptionId; + +} diff --git a/order-service/src/main/java/com/justpickup/orderservice/domain/transaction/entity/Transaction.java b/order-service/src/main/java/com/justpickup/orderservice/domain/transaction/entity/Transaction.java new file mode 100644 index 0000000..3f230df --- /dev/null +++ b/order-service/src/main/java/com/justpickup/orderservice/domain/transaction/entity/Transaction.java @@ -0,0 +1,25 @@ +package com.justpickup.orderservice.domain.transaction.entity; + +import com.justpickup.orderservice.domain.order.entity.Order; +import com.justpickup.orderservice.global.entity.BaseEntity; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import javax.persistence.*; + +@Entity +@Table(name = "transaction") +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class Transaction extends BaseEntity { + + @Id @GeneratedValue + @Column(name = "transaction_id") + private Long id; + + @OneToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "order_id") + private Order order; + +} diff --git a/order-service/src/main/java/com/justpickup/orderservice/global/entity/BaseEntity.java b/order-service/src/main/java/com/justpickup/orderservice/global/entity/BaseEntity.java new file mode 100644 index 0000000..3a58f29 --- /dev/null +++ b/order-service/src/main/java/com/justpickup/orderservice/global/entity/BaseEntity.java @@ -0,0 +1,16 @@ +package com.justpickup.orderservice.global.entity; + + +import javax.persistence.Entity; +import javax.persistence.MappedSuperclass; +import java.time.LocalDateTime; + +@MappedSuperclass +public abstract class BaseEntity { + + private LocalDateTime createdAt; + private Long createdBy; + private LocalDateTime lastModifiedAt; + private Long lastModifiedBy; + +}