Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ repositories {
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-aop'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation group: 'com.auth0', name: 'java-jwt', version: '4.3.0'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
Expand All @@ -27,6 +29,7 @@ dependencies {
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'

}

tasks.named('test') {
Expand Down
16 changes: 8 additions & 8 deletions src/main/java/shop/mtcoding/metamall/MetamallApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,24 @@
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import shop.mtcoding.metamall.model.orderproduct.OrderProduct;
import shop.mtcoding.metamall.model.orderproduct.OrderProductRepository;
import shop.mtcoding.metamall.model.ordersheet.OrderSheet;
import shop.mtcoding.metamall.model.ordersheet.OrderSheetRepository;
import shop.mtcoding.metamall.model.order.product.OrderProductRepository;
import shop.mtcoding.metamall.model.order.sheet.OrderSheetRepository;
import shop.mtcoding.metamall.model.product.ProductRepository;
import shop.mtcoding.metamall.model.user.User;
import shop.mtcoding.metamall.model.user.UserRepository;

import java.util.Arrays;

@SpringBootApplication
public class MetamallApplication {

@Bean
CommandLineRunner initData(UserRepository userRepository, ProductRepository productRepository, OrderProductRepository orderProductRepository, OrderSheetRepository orderSheetRepository){
return (args)->{
// 여기에서 save 하면 됨.
// bulk Collector는 saveAll 하면 됨.
User ssar = User.builder().username("ssar").password("1234").email("[email protected]").role("USER").build();
userRepository.save(ssar);
User ssar = User.builder().username("ssar").password("1234").email("[email protected]").role("USER").status(true).build();
User seller = User.builder().username("seller").password("1234").email("[email protected]").role("SELLER").status(true).build();
User admin = User.builder().username("admin").password("1234").email("[email protected]").role("ADMIN").status(true).build();
userRepository.saveAll(Arrays.asList(ssar,seller,admin));
};
}

Expand Down
49 changes: 49 additions & 0 deletions src/main/java/shop/mtcoding/metamall/config/MyWebMvcConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package shop.mtcoding.metamall.config;

import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import shop.mtcoding.metamall.core.interceptor.MyAdminInterceptor;
import shop.mtcoding.metamall.core.interceptor.MySellerInterceptor;
import shop.mtcoding.metamall.core.resolver.MySessionArgumentResolver;

import java.util.List;

@RequiredArgsConstructor
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

private final MyAdminInterceptor adminInterceptor;
private final MySellerInterceptor sellerInterceptor;
private final MySessionArgumentResolver mySessionArgumentResolver;

@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedHeaders("*")
.allowedMethods("*") // GET, POST, PUT, DELETE (Javascript 요청 허용)
.allowedOriginPatterns("*") // 모든 IP 주소 허용 (프론트 앤드 IP만 허용하게 변경해야함. * 안됨)
.allowCredentials(true)
.exposedHeaders("Authorization"); // 옛날에는 디폴트로 브라우저에 노출되어 있었는데 지금은 아님
}


// AOP는 매개변수 값 확인해서 권한 비교해야할 때 사용
// Interceptor는 세션 권한으로 체크할 때 사용
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(adminInterceptor)
.addPathPatterns("/admin/**");

registry.addInterceptor(sellerInterceptor)
.addPathPatterns("/seller/**");
}

@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
resolvers.add(mySessionArgumentResolver);
}
}
18 changes: 0 additions & 18 deletions src/main/java/shop/mtcoding/metamall/config/WebMvcConfig.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
package shop.mtcoding.metamall.core.advice;public class MyErrorLogAdvice {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
package shop.mtcoding.metamall.core.advice;public class MySameUserIdAdvice {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
package shop.mtcoding.metamall.core.advice;public class MyValidAdvice {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
package shop.mtcoding.metamall.core.annotation;public class MyErrorLogRecord {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
package shop.mtcoding.metamall.core.annotation;public @interface MySameUserIdCheck {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
package shop.mtcoding.metamall.core.annotation;public @interface MySessionStore {
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
package shop.mtcoding.metamall.core.interceptor;public class MyAdminInterceptor {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
package shop.mtcoding.metamall.core.interceptor;public class MySellerInterceptor {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
package shop.mtcoding.metamall.core.resolver;public class MySessionArgumentResolver {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
package shop.mtcoding.metamall.core.util;public class MyFilterResponseUtil {
}
2 changes: 2 additions & 0 deletions src/main/java/shop/mtcoding/metamall/dto/user/ValidDTO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
package shop.mtcoding.metamall.dto.user;public class ValidDTO {
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ public class ErrorLog {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, length = 100000)
private String msg;
private Long userId;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package shop.mtcoding.metamall.model.orderproduct;
package shop.mtcoding.metamall.model.order.product;

import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import shop.mtcoding.metamall.model.ordersheet.OrderSheet;
import shop.mtcoding.metamall.model.order.sheet.OrderSheet;
import shop.mtcoding.metamall.model.product.Product;

import javax.persistence.*;
Expand All @@ -19,16 +19,28 @@ public class OrderProduct { // 주문 상품
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

//chekcpoint -> 무한 참조
@ManyToOne
private Product product;
@Column(nullable = false)
private Integer count; // 상품 주문 개수
@Column(nullable = false)
private Integer orderPrice; // 상품 주문 금액
private LocalDateTime createdAt;
private LocalDateTime updatedAt;

@ManyToOne
private OrderSheet orderSheet;


//checkpoint-> 편의 메서드 만드는 이유
public void syncOrderSheet(OrderSheet orderSheet){
this.orderSheet=orderSheet;

}


@PrePersist
protected void onCreate() {
this.createdAt = LocalDateTime.now();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package shop.mtcoding.metamall.model.orderproduct;
package shop.mtcoding.metamall.model.order.product;

import org.springframework.data.jpa.repository.JpaRepository;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
package shop.mtcoding.metamall.model.ordersheet;
package shop.mtcoding.metamall.model.order.sheet;

import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import shop.mtcoding.metamall.model.orderproduct.OrderProduct;
import shop.mtcoding.metamall.model.product.Product;
import shop.mtcoding.metamall.model.order.product.OrderProduct;
import shop.mtcoding.metamall.model.user.User;

import javax.persistence.*;
Expand All @@ -24,12 +23,26 @@ public class OrderSheet { // 주문서
private Long id;
@ManyToOne
private User user; // 주문자
@OneToMany(mappedBy = "orderSheet")

//checkpoint -> 무한참조
@OneToMany(mappedBy = "orderSheet", cascade = CascadeType.ALL, orphanRemoval = true)
private List<OrderProduct> orderProductList = new ArrayList<>(); // 총 주문 상품 리스트

@Column(nullable = false)
private Integer totalPrice; // 총 주문 금액 (총 주문 상품 리스트의 orderPrice 합)
private LocalDateTime createdAt;
private LocalDateTime updatedAt;

public void addOrderProduct(OrderProduct orderProduct){
orderProductList.add(orderProduct);
orderProduct.syncOrderSheet(this);
}
public void removeOrderProduct(OrderProduct orderProduct){
orderProductList.remove(orderProduct);
orderProduct.syncOrderSheet(null);
}


@PrePersist
protected void onCreate() {
this.createdAt = LocalDateTime.now();
Expand All @@ -42,6 +55,14 @@ protected void onUpdate() {

// 연관관계 메서드 구현 필요









@Builder
public OrderSheet(Long id, User user, Integer totalPrice, LocalDateTime createdAt, LocalDateTime updatedAt) {
this.id = id;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package shop.mtcoding.metamall.model.order.sheet;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.List;

public interface OrderSheetRepository extends JpaRepository<OrderSheet, Long> {

//내가 주문한 목록보기
@Query("select os from OrderSheet os where os.user.id= :userId")
List<OrderSheet> findByUserId(@Param("userId") Long userId);

}

This file was deleted.

Loading