Skip to content

Commit

Permalink
Refactor. product range url 수정
Browse files Browse the repository at this point in the history
상품 범위 생성 추가
  • Loading branch information
Miensoap committed Jun 23, 2024
1 parent a3f616e commit 75fbf30
Show file tree
Hide file tree
Showing 5 changed files with 64 additions and 16 deletions.
2 changes: 1 addition & 1 deletion BE/src/main/java/team07/airbnb/config/WebConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ ForwardedHeaderFilter forwardedHeaderFilter() {
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("https://squadbnb.site")
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
.allowedMethods("GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS")
.allowedHeaders("*")
.allowCredentials(true);
}
Expand Down
30 changes: 15 additions & 15 deletions BE/src/main/java/team07/airbnb/config/security/SecurityConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -48,25 +48,25 @@ public Customizer<AuthorizeHttpRequestsConfigurer<HttpSecurity>.AuthorizationMan
.anyRequest().permitAll();
}

@Bean
public CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration config = new CorsConfiguration();
config.setAllowedOrigins(new ArrayList<>(
ALLOWURLS
));
config.setAllowedMethods(List.of("POST", "GET", "PUT", "DELETE"));
config.setAllowedHeaders(List.of("*"));
config.setAllowCredentials(true);

UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", config);
return source;
}
// @Bean
// public CorsConfigurationSource corsConfigurationSource() {
// CorsConfiguration config = new CorsConfiguration();
// config.setAllowedOrigins(new ArrayList<>(
// ALLOWURLS
// ));
// config.setAllowedMethods(List.of("*"));
// config.setAllowedHeaders(List.of("*"));
// config.setAllowCredentials(true);
//
// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
// source.registerCorsConfiguration("/**", config);
// return source;
// }

@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.cors(corsCustomizer -> corsCustomizer.configurationSource(corsConfigurationSource()))
.cors(Customizer.withDefaults())
.csrf(AbstractHttpConfigurer::disable)
.headers(headers -> headers.frameOptions(HeadersConfigurer.FrameOptionsConfig::disable))
.authorizeHttpRequests(authorizeRequests())
Expand Down
10 changes: 10 additions & 0 deletions BE/src/main/java/team07/airbnb/controller/ProductController.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import team07.airbnb.common.auth.aop.Authenticated;
import team07.airbnb.data.accommodation.dto.request.AccommodationFilterDTO;
import team07.airbnb.data.product.dto.request.ProductCreateRequest;
import team07.airbnb.data.product.dto.request.ProductRangeCreateRequest;
import team07.airbnb.data.product.dto.response.ProductListResponse;
import team07.airbnb.entity.UserEntity;
import team07.airbnb.service.product.ProductService;
Expand Down Expand Up @@ -48,6 +49,15 @@ public void createProduct(@RequestBody ProductCreateRequest request) {
productService.createProduct(request.accommodationId(), request.date(), request.price());
}

@Tag(name = "Host")
@Operation(summary = "상품 생성")
@PostMapping("/range")
@ResponseStatus(CREATED)
public void createProductRange(@RequestBody ProductRangeCreateRequest request) {
productService.createRangeProduct(request.accommodationId(), request.startDate(), request.endDate(), request.price());
}


@Tag(name = "Host")
@Operation(summary = "상품 닫기")
@PostMapping("/close/{productId}")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package team07.airbnb.data.product.dto.request;

import jakarta.validation.constraints.FutureOrPresent;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Positive;
import jakarta.validation.constraints.PositiveOrZero;

import java.time.LocalDate;

public record ProductRangeCreateRequest (
@Positive
long accommodationId,

@NotNull
@FutureOrPresent
LocalDate startDate,

@NotNull
@FutureOrPresent
LocalDate endDate,

@NotNull
@PositiveOrZero
Integer price
){}
13 changes: 13 additions & 0 deletions BE/src/main/java/team07/airbnb/service/product/ProductService.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import team07.airbnb.service.accommodation.AccommodationService;

import java.time.LocalDate;
import java.time.Period;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
Expand Down Expand Up @@ -186,4 +187,16 @@ public void createProduct(long accommodationId, LocalDate date, Integer requestP
int price = requestPrice == null ? accommodation.getBasePricePerDay() : requestPrice;
accommodation.addProduct(date, price);
}

public void createRangeProduct(Long accommodationId, LocalDate startDate, LocalDate endDate, Integer requestPrice) {
AccommodationEntity accommodation = accommodationService.findById(accommodationId);

Period between = Period.between(startDate, endDate);
for (int i = 0; i <= between.getDays(); i++) {
LocalDate nowDate = startDate.plusDays(i);
int price = requestPrice == null ? accommodation.getBasePricePerDay() : requestPrice;
accommodation.addProduct(nowDate, price);
}
}

}

0 comments on commit 75fbf30

Please sign in to comment.