Skip to content

Commit 9b6797e

Browse files
committed
Revert "Revert "상품주문로직 추가""
This reverts commit aec250b.
1 parent ced1702 commit 9b6797e

25 files changed

+424
-189
lines changed

sample/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ repositories {
2626
dependencies {
2727
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
2828
implementation 'org.springframework.boot:spring-boot-starter-web'
29+
implementation 'org.apache.commons:commons-collections4:4.4'
2930
implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.17.0'
3031
implementation group: 'commons-io', name: 'commons-io', version: '2.18.0'
3132
implementation group: 'com.google.code.gson', name: 'gson', version: '2.12.1'

sample/src/main/java/com/temp/sample/consts/LegacyEnum.java renamed to sample/src/main/java/com/temp/sample/consts/CommEnum.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
import org.apache.commons.lang3.StringUtils;
44

5-
public interface LegacyEnum {
5+
public interface CommEnum {
66

77
String getCode();
88

9-
static <E extends Enum<E> & LegacyEnum> E of(E[] values, String code) {
9+
static <E extends Enum<E> & CommEnum> E of(E[] values, String code) {
1010
for (E e : values) {
1111
if (StringUtils.equals(code,e.getCode())) {
1212
return e;

sample/src/main/java/com/temp/sample/consts/OrderStatus.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
@Getter
77
@RequiredArgsConstructor
8-
public enum OrderStatus implements LegacyEnum{
8+
public enum OrderStatus implements CommEnum {
99

1010
APPLY("0", "주문접수"),
1111
APPROVAL("1", "주문승인"),
@@ -20,7 +20,7 @@ public enum OrderStatus implements LegacyEnum{
2020
private final String desc;
2121

2222
public static OrderStatus of(String code) {
23-
return LegacyEnum.of(values(), code);
23+
return CommEnum.of(values(), code);
2424
}
2525

2626

sample/src/main/java/com/temp/sample/consts/ShipmentStatus.java

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

sample/src/main/java/com/temp/sample/dao/InventoryRepository.java

Lines changed: 0 additions & 15 deletions
This file was deleted.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.temp.sample.dao;
2+
3+
import com.temp.sample.entity.Merchant;
4+
import org.springframework.data.jpa.repository.JpaRepository;
5+
6+
public interface MerchantRepository extends JpaRepository<Merchant, Long> {
7+
8+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,17 @@
11
package com.temp.sample.dao;
22

33
import com.temp.sample.entity.Product;
4+
import java.time.LocalDateTime;
5+
import java.util.List;
6+
import java.util.Optional;
47
import org.springframework.data.jpa.repository.JpaRepository;
8+
import org.springframework.data.jpa.repository.Query;
9+
import org.springframework.data.repository.query.Param;
510

611
public interface ProductRepository extends JpaRepository<Product, Long> {
712

13+
@Query("SELECT p FROM Product p WHERE p.stock > 0 AND p.id IN :productIds")
14+
List<Product> findInStocks(@Param("productIds") List<Long> productIds);
15+
16+
List<Product> findByIdIn(List<Long> productIds);
817
}

sample/src/main/java/com/temp/sample/entity/Financial.java

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

sample/src/main/java/com/temp/sample/entity/Inventory.java

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

sample/src/main/java/com/temp/sample/entity/Merchant.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,11 @@ public static Merchant createMerchant(String name) {
2424
merchant.name = name;
2525
return merchant;
2626
}
27+
28+
public static Merchant createMockMerchant(Long id, String name) {
29+
Merchant merchant = new Merchant();
30+
merchant.merchantId = id;
31+
merchant.name = name;
32+
return merchant;
33+
}
2734
}
Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.temp.sample.entity;
22

3+
import com.temp.sample.consts.OrderStatus;
34
import com.temp.sample.entity.com.TimestampEntity;
5+
import com.temp.sample.entity.com.converter.OrderStatusConverter;
46
import jakarta.persistence.*;
57
import lombok.AccessLevel;
68
import lombok.Getter;
@@ -17,36 +19,38 @@
1719
@NoArgsConstructor(access = AccessLevel.PROTECTED)
1820
public class OrderInfo {
1921

20-
@Id
21-
@GeneratedValue(strategy = GenerationType.IDENTITY)
22-
private Long id;
22+
@Id
23+
@GeneratedValue(strategy = GenerationType.IDENTITY)
24+
private Long id;
2325

24-
private String orderNumber;
26+
@OneToMany(mappedBy = "order")
27+
private List<OrderItem> orderItems;
2528

26-
@OneToMany(mappedBy = "order", cascade = CascadeType.ALL, orphanRemoval = true)
27-
private List<OrderItem> orderItems;
29+
@ManyToOne
30+
@JoinColumn(name = "merchant_id")
31+
private Merchant merchant;
2832

29-
@ManyToOne
30-
private Merchant merchant;
33+
@ManyToOne
34+
private User user;
3135

32-
@ManyToOne
33-
private User user;
36+
private BigDecimal amount = BigDecimal.ZERO;
3437

35-
private BigDecimal amount = BigDecimal.ZERO;
38+
private OrderStatus status;
3639

37-
@Embedded
38-
private TimestampEntity timestamp;
40+
@Embedded
41+
private TimestampEntity timestamp;
3942

40-
public static OrderInfo createOrder(String orderNumber, Merchant merchant, User user, BigDecimal amount) {
43+
public static OrderInfo createOrder(List<OrderItem> orderItems, Merchant merchant, User user,
44+
BigDecimal amount) {
4145

42-
OrderInfo orderInfo = new OrderInfo();
46+
OrderInfo orderInfo = new OrderInfo();
4347

44-
orderInfo.orderNumber = orderNumber;
45-
orderInfo.merchant = merchant;
46-
orderInfo.user = user;
47-
orderInfo.amount = amount;
48-
return orderInfo;
48+
orderInfo.orderItems = orderItems;
49+
orderInfo.merchant = merchant;
50+
orderInfo.user = user;
51+
orderInfo.amount = amount;
52+
return orderInfo;
4953

50-
}
54+
}
5155

5256
}
Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.temp.sample.entity;
22

33
import jakarta.persistence.*;
4+
import java.math.BigDecimal;
45
import lombok.AccessLevel;
56
import lombok.Getter;
67
import lombok.NoArgsConstructor;
@@ -14,21 +15,30 @@
1415
@NoArgsConstructor(access = AccessLevel.PROTECTED)
1516
public class OrderItem {
1617

17-
@Id
18-
@GeneratedValue(strategy = GenerationType.IDENTITY)
19-
private Long id;
18+
@Id
19+
@GeneratedValue(strategy = GenerationType.IDENTITY)
20+
private Long id;
2021

21-
@ManyToOne
22-
@JoinColumn(name = "order_id", nullable = false)
23-
private OrderInfo orderInfo;
22+
@ManyToOne
23+
@JoinColumn(name = "order_id")
24+
private OrderInfo order;
2425

25-
@ManyToOne
26-
@JoinColumn(name = "product_id", nullable = false)
27-
private Product product;
26+
@ManyToOne
27+
@JoinColumn(name = "product_id")
28+
private Product product;
2829

29-
private int quantity;
30+
private Integer quantity;
3031

31-
private int totalPrice;
32+
private BigDecimal totalPrice;
3233

3334

35+
public static OrderItem createOrderItem( Product product, int quantity,
36+
BigDecimal totalPrice) {
37+
OrderItem orderItem = new OrderItem();
38+
orderItem.product = product;
39+
orderItem.quantity = quantity;
40+
orderItem.totalPrice = totalPrice;
41+
42+
return orderItem;
43+
}
3444
}
Lines changed: 44 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
package com.temp.sample.entity;
22

3-
import jakarta.persistence.*;
4-
import jdk.jfr.Enabled;
3+
import com.temp.sample.entity.com.TimestampEntity;
4+
import jakarta.persistence.Embedded;
5+
import jakarta.persistence.Entity;
6+
import jakarta.persistence.GeneratedValue;
7+
import jakarta.persistence.GenerationType;
8+
import jakarta.persistence.Id;
9+
import jakarta.persistence.Table;
10+
import java.math.BigDecimal;
11+
import java.time.LocalDateTime;
512
import lombok.AccessLevel;
613
import lombok.Getter;
714
import lombok.NoArgsConstructor;
815
import lombok.ToString;
916

10-
import java.math.BigDecimal;
11-
import java.time.LocalDateTime;
12-
import java.util.List;
13-
1417
@Table(name = "product")
1518
@Getter
1619
@Entity
@@ -24,7 +27,40 @@ public class Product {
2427

2528
private String name;
2629

27-
private int price;
30+
private BigDecimal price;
31+
32+
private BigDecimal discountPrice;
33+
34+
private Integer stock;
35+
36+
private LocalDateTime timeDealStartTime;
37+
38+
private LocalDateTime timeDealEndTime;
39+
40+
@Embedded
41+
private TimestampEntity timestamp;
42+
43+
public static Product createProduct(String name, BigDecimal price, Integer stock) {
44+
Product product = new Product();
45+
product.name = name;
46+
product.price = price;
47+
product.stock = stock;
48+
return product;
49+
}
50+
51+
public static Product createMockProduct(Long id, String name, BigDecimal price, Integer stock) {
52+
Product product = new Product();
53+
product.id = id;
54+
product.name = name;
55+
product.price = price;
56+
product.stock = stock;
57+
return product;
58+
}
2859

29-
private LocalDateTime createdAt;
60+
public void decreaseStock(int quantity) {
61+
if (this.stock < quantity) {
62+
throw new RuntimeException("재고 부족");
63+
}
64+
this.stock -= quantity;
65+
}
3066
}

sample/src/main/java/com/temp/sample/entity/Shipment.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,4 @@ public class Shipment {
2020

2121
private String trackingNumber;
2222

23-
@Enumerated(EnumType.STRING)
24-
@Column(nullable = false)
25-
private ShipmentStatus status;
2623
}

sample/src/main/java/com/temp/sample/entity/User.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,11 @@
33
import jakarta.persistence.Entity;
44
import jakarta.persistence.Id;
55
import jakarta.persistence.Table;
6-
import jdk.jfr.Enabled;
6+
import java.time.LocalDateTime;
77
import lombok.AccessLevel;
88
import lombok.Getter;
99
import lombok.NoArgsConstructor;
1010
import lombok.ToString;
11-
import org.springframework.jdbc.support.CustomSQLErrorCodesTranslation;
12-
13-
import java.math.BigDecimal;
14-
import java.time.LocalDateTime;
1511

1612
@Table(name = "user")
1713
@Getter
@@ -35,4 +31,13 @@ public static User createUser(String email, String password, String phoneNumber)
3531
user.phoneNumber = phoneNumber;
3632
return user;
3733
}
34+
35+
public static User createMockUser(Long id,String email, String password, String phoneNumber) {
36+
User user = new User();
37+
user.id = id;
38+
user.email = email;
39+
user.password = password;
40+
user.phoneNumber = phoneNumber;
41+
return user;
42+
}
3843
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.temp.sample.entity.com.converter;
2+
3+
import com.temp.sample.consts.OrderStatus;
4+
import jakarta.persistence.AttributeConverter;
5+
import jakarta.persistence.Converter;
6+
7+
@Converter(autoApply = true)
8+
public class OrderStatusConverter implements AttributeConverter<OrderStatus, String> {
9+
10+
@Override
11+
public String convertToDatabaseColumn(OrderStatus orderStatus) {
12+
if (orderStatus == null) {
13+
return null;
14+
}
15+
return orderStatus.getCode();
16+
}
17+
18+
@Override
19+
public OrderStatus convertToEntityAttribute(String code) {
20+
return OrderStatus.of(code);
21+
}
22+
}

0 commit comments

Comments
 (0)