Skip to content

Commit c550659

Browse files
authored
Merge pull request #43 from 9oormthon-univ/feat/#42
Mock data POST api 작성
2 parents 5e8140d + 12fa01d commit c550659

File tree

8 files changed

+153
-2
lines changed

8 files changed

+153
-2
lines changed

src/main/java/com/univ/sohwakhaeng/enterprise/Enterprise.java

+22
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package com.univ.sohwakhaeng.enterprise;
22

3+
import com.univ.sohwakhaeng.cart.Cart;
4+
import com.univ.sohwakhaeng.enterprise.api.dto.EnterpriseRequestDto;
5+
import com.univ.sohwakhaeng.enterprise.repository.EnterpriseRepository;
36
import com.univ.sohwakhaeng.product.Product;
7+
import com.univ.sohwakhaeng.user.User;
48
import jakarta.persistence.CascadeType;
59
import jakarta.persistence.Column;
610
import jakarta.persistence.Entity;
@@ -12,14 +16,19 @@
1216
import jakarta.persistence.Enumerated;
1317
import jakarta.persistence.EnumType;
1418
import java.util.List;
19+
import kotlin.BuilderInference;
1520
import lombok.AccessLevel;
21+
import lombok.AllArgsConstructor;
22+
import lombok.Builder;
1623
import lombok.Getter;
1724
import lombok.NoArgsConstructor;
1825

1926

2027
@Entity
2128
@Getter
2229
@NoArgsConstructor(access = AccessLevel.PROTECTED)
30+
@AllArgsConstructor
31+
@Builder
2332
public class Enterprise {
2433

2534
@Id
@@ -46,4 +55,17 @@ public class Enterprise {
4655
@OneToMany(mappedBy = "enterprise", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
4756
private List<Product> products;
4857

58+
public static Enterprise createEnterprise(EnterpriseRequestDto enterpriseRequestDto) {
59+
return Enterprise.builder()
60+
.id(enterpriseRequestDto.enterpriseId())
61+
.name(enterpriseRequestDto.enterpriseName())
62+
.category(Category.valueOf(enterpriseRequestDto.category()))
63+
.description(enterpriseRequestDto.description())
64+
.star(enterpriseRequestDto.star())
65+
.latitude(enterpriseRequestDto.latitude())
66+
.longitude(enterpriseRequestDto.longitude())
67+
.address(enterpriseRequestDto.address())
68+
.build();
69+
}
70+
4971
}

src/main/java/com/univ/sohwakhaeng/enterprise/api/EnterpriseController.java

+10
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,20 @@
33
import com.univ.sohwakhaeng.enterprise.Category;
44
import com.univ.sohwakhaeng.enterprise.api.dto.EnterpriseDetailDto;
55
import com.univ.sohwakhaeng.enterprise.api.dto.EnterpriseOverviewDto;
6+
import com.univ.sohwakhaeng.enterprise.api.dto.EnterpriseRequestDto;
67
import com.univ.sohwakhaeng.enterprise.exception.EnterpriseNotFoundException;
78
import com.univ.sohwakhaeng.enterprise.service.EnterpriseService;
89
import com.univ.sohwakhaeng.global.common.dto.BaseResponse;
910
import com.univ.sohwakhaeng.global.common.dto.PagedResponseDto;
1011
import com.univ.sohwakhaeng.global.common.exception.SuccessCode;
12+
import java.util.List;
1113
import lombok.RequiredArgsConstructor;
1214
import lombok.extern.slf4j.Slf4j;
1315
import org.springframework.data.domain.PageRequest;
1416
import org.springframework.web.bind.annotation.GetMapping;
1517
import org.springframework.web.bind.annotation.PathVariable;
18+
import org.springframework.web.bind.annotation.PostMapping;
19+
import org.springframework.web.bind.annotation.RequestBody;
1620
import org.springframework.web.bind.annotation.RequestParam;
1721
import org.springframework.web.bind.annotation.RestController;
1822

@@ -23,6 +27,12 @@ public class EnterpriseController {
2327

2428
private final EnterpriseService enterPriseService;
2529

30+
@PostMapping("/public/enterprises")
31+
public BaseResponse<Void> postEnterprises(@RequestBody List<EnterpriseRequestDto> dtos) throws EnterpriseNotFoundException {
32+
return BaseResponse.success(
33+
SuccessCode.GET_ENTERPRISE_DETAILS, enterPriseService.postEnterprises(dtos));
34+
}
35+
2636
@GetMapping("/api/enterprises/{enterPriseId}")
2737
public BaseResponse<EnterpriseDetailDto> getEnterpriseDetails(@PathVariable Long enterPriseId) throws EnterpriseNotFoundException {
2838
return BaseResponse.success(
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.univ.sohwakhaeng.enterprise.api.dto;
2+
3+
import com.univ.sohwakhaeng.enterprise.Enterprise;
4+
import lombok.Builder;
5+
6+
@Builder
7+
public record EnterpriseRequestDto(
8+
Long enterpriseId,
9+
String enterpriseName,
10+
String category,
11+
String description,
12+
Double star,
13+
Double latitude,
14+
Double longitude,
15+
String address
16+
) {
17+
18+
}

src/main/java/com/univ/sohwakhaeng/enterprise/service/EnterpriseService.java

+13
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@
55
import com.univ.sohwakhaeng.enterprise.Enterprise;
66
import com.univ.sohwakhaeng.enterprise.api.dto.EnterpriseDetailDto;
77
import com.univ.sohwakhaeng.enterprise.api.dto.EnterpriseOverviewDto;
8+
import com.univ.sohwakhaeng.enterprise.api.dto.EnterpriseRequestDto;
89
import com.univ.sohwakhaeng.enterprise.exception.EnterpriseNotFoundException;
910
import com.univ.sohwakhaeng.enterprise.repository.EnterpriseRepository;
1011
import com.univ.sohwakhaeng.global.common.dto.PagedResponseDto;
1112
import com.univ.sohwakhaeng.product.Product;
1213
import com.univ.sohwakhaeng.product.service.ProductService;
14+
import java.util.List;
1315
import java.util.function.Function;
1416
import lombok.RequiredArgsConstructor;
1517
import org.springframework.beans.factory.annotation.Value;
@@ -30,6 +32,17 @@ public class EnterpriseService {
3032
@Value("${cloud.aws.s3.bucket}")
3133
private String awsBucket;
3234

35+
public Void postEnterprises(List<EnterpriseRequestDto> dtos) {
36+
for(EnterpriseRequestDto dto : dtos) {
37+
saveEnterprise(Enterprise.createEnterprise(dto));
38+
}
39+
return null;
40+
}
41+
42+
public void saveEnterprise(Enterprise enterprise) {
43+
enterpriseRepository.save(enterprise);
44+
}
45+
3346
@Transactional(readOnly = true)
3447
public EnterpriseDetailDto getEnterpriseDetails(Long enterpriseId) throws EnterpriseNotFoundException {
3548
Enterprise enterprise = findEnterpriseEntityById(enterpriseId);

src/main/java/com/univ/sohwakhaeng/product/Product.java

+15
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.univ.sohwakhaeng.product;
22

33
import com.univ.sohwakhaeng.enterprise.Enterprise;
4+
import com.univ.sohwakhaeng.product.api.dto.ProductRequestDto;
45
import jakarta.persistence.Column;
56
import jakarta.persistence.Entity;
67
import jakarta.persistence.GeneratedValue;
@@ -9,12 +10,16 @@
910
import jakarta.persistence.JoinColumn;
1011
import jakarta.persistence.ManyToOne;
1112
import lombok.AccessLevel;
13+
import lombok.AllArgsConstructor;
14+
import lombok.Builder;
1215
import lombok.Getter;
1316
import lombok.NoArgsConstructor;
1417

1518
@Entity
1619
@Getter
1720
@NoArgsConstructor(access = AccessLevel.PROTECTED)
21+
@Builder
22+
@AllArgsConstructor
1823
public class Product {
1924

2025
@Id
@@ -34,4 +39,14 @@ public class Product {
3439
@Column(name = "product_price")
3540
private Integer price;
3641

42+
public static Product createProduct(ProductRequestDto productRequestDto, Enterprise enterprise) {
43+
return Product.builder()
44+
.id(productRequestDto.id())
45+
.enterprise(enterprise)
46+
.name(productRequestDto.name())
47+
.unit(productRequestDto.unit())
48+
.price(productRequestDto.price())
49+
.build();
50+
}
51+
3752
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.univ.sohwakhaeng.product.api;
2+
3+
import com.univ.sohwakhaeng.enterprise.Category;
4+
import com.univ.sohwakhaeng.enterprise.api.dto.EnterpriseDetailDto;
5+
import com.univ.sohwakhaeng.enterprise.api.dto.EnterpriseOverviewDto;
6+
import com.univ.sohwakhaeng.enterprise.api.dto.EnterpriseRequestDto;
7+
import com.univ.sohwakhaeng.enterprise.exception.EnterpriseNotFoundException;
8+
import com.univ.sohwakhaeng.enterprise.service.EnterpriseService;
9+
import com.univ.sohwakhaeng.global.common.dto.BaseResponse;
10+
import com.univ.sohwakhaeng.global.common.dto.PagedResponseDto;
11+
import com.univ.sohwakhaeng.global.common.exception.SuccessCode;
12+
import com.univ.sohwakhaeng.product.api.dto.ProductRequestDto;
13+
import com.univ.sohwakhaeng.product.service.ProductService;
14+
import java.util.List;
15+
import lombok.RequiredArgsConstructor;
16+
import lombok.extern.slf4j.Slf4j;
17+
import org.springframework.data.domain.PageRequest;
18+
import org.springframework.web.bind.annotation.GetMapping;
19+
import org.springframework.web.bind.annotation.PathVariable;
20+
import org.springframework.web.bind.annotation.PostMapping;
21+
import org.springframework.web.bind.annotation.RequestBody;
22+
import org.springframework.web.bind.annotation.RequestParam;
23+
import org.springframework.web.bind.annotation.RestController;
24+
25+
@RestController
26+
@Slf4j
27+
@RequiredArgsConstructor
28+
public class ProductController {
29+
30+
private final ProductService productService;
31+
32+
@PostMapping("/public/products")
33+
public BaseResponse<Void> postProducts(@RequestBody List<ProductRequestDto> dtos) throws EnterpriseNotFoundException {
34+
return BaseResponse.success(
35+
SuccessCode.GET_ENTERPRISE_DETAILS, productService.postProducts(dtos));
36+
}
37+
38+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.univ.sohwakhaeng.product.api.dto;
2+
3+
public record ProductRequestDto(
4+
Long id,
5+
Long enterpriseId,
6+
String name,
7+
String unit,
8+
Integer price
9+
) {
10+
}

src/main/java/com/univ/sohwakhaeng/product/service/ProductService.java

+27-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
package com.univ.sohwakhaeng.product.service;
22

33
import com.amazonaws.services.s3.AmazonS3Client;
4+
import com.univ.sohwakhaeng.enterprise.Enterprise;
5+
import com.univ.sohwakhaeng.enterprise.exception.EnterpriseNotFoundException;
6+
import com.univ.sohwakhaeng.enterprise.service.EnterpriseService;
47
import com.univ.sohwakhaeng.product.Product;
8+
import com.univ.sohwakhaeng.product.api.dto.ProductRequestDto;
9+
import com.univ.sohwakhaeng.product.api.dto.ProductResponseDto;
510
import com.univ.sohwakhaeng.product.exception.ProductNotFoundException;
611
import com.univ.sohwakhaeng.product.repository.ProductRepository;
12+
import java.util.List;
713
import lombok.RequiredArgsConstructor;
814
import org.springframework.beans.factory.annotation.Value;
915
import org.springframework.stereotype.Service;
@@ -15,11 +21,30 @@
1521
@RequiredArgsConstructor
1622
public class ProductService {
1723

18-
private final ProductRepository productRepository;
19-
private final AmazonS3Client amazonS3Client;
24+
private EnterpriseService enterpriseService;
25+
private ProductRepository productRepository;
26+
private AmazonS3Client amazonS3Client;
27+
public ProductService(EnterpriseService enterpriseService, ProductRepository productRepository, AmazonS3Client amazonS3Client) {
28+
this.enterpriseService = enterpriseService;
29+
this.productRepository = productRepository;
30+
this.amazonS3Client = amazonS3Client;
31+
}
32+
2033
@Value("${cloud.aws.s3.bucket}")
2134
private String awsBucket;
2235

36+
public Void postProducts(List<ProductRequestDto> dtos) throws EnterpriseNotFoundException {
37+
for (ProductRequestDto dto : dtos) {
38+
Enterprise enterprise = enterpriseService.getEnterpriseEntityById(dto.enterpriseId());
39+
saveProduct(Product.createProduct(dto, enterprise));
40+
}
41+
return null;
42+
}
43+
44+
public void saveProduct(Product product) {
45+
productRepository.save(product);
46+
}
47+
2348
@Transactional(readOnly = true)
2449
public Product getProductById(Long id) throws ProductNotFoundException {
2550
return findProductById(id);

0 commit comments

Comments
 (0)