Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
782f0c1
Create README.md
yhj1129 Apr 6, 2023
df13fff
Update README.md
yhj1129 Apr 6, 2023
94a403f
[0] 프로젝트 시작
yhj1129 Apr 6, 2023
0d4c33d
Merge remote-tracking branch 'origin/main'
yhj1129 Apr 6, 2023
a8721ef
[0] 프로젝트 시작
yhj1129 Apr 6, 2023
08b4d25
[1] 회원가입 로그인 기능 완료
yhj1129 Apr 6, 2023
3a0699d
temp
yhj1129 Apr 6, 2023
54e5817
[2] 물건 등록/전체조회/상세조회 기능 완료
yhj1129 Apr 6, 2023
02a9da4
[3] 물건 수정(가격과 수량)/삭제 기능 완료
yhj1129 Apr 7, 2023
9ef5684
[4] 주문/주문 목록 보기(고객과 판매자) 기능 완료
yhj1129 Apr 8, 2023
cd13097
[5] 주문 취소(고객/판매자 기준) 기능 완료
yhj1129 Apr 8, 2023
113dbc8
[6] 응답 상태 코드 상세히 지정 / 로그에 기록 기능 완료
yhj1129 Apr 8, 2023
6923f1a
[7-1] 고객 레포지토리 쿼리 테스트 완료
yhj1129 Apr 9, 2023
5c041ba
[7-2] 상품 레포지토리 쿼리 테스트 완료
yhj1129 Apr 9, 2023
dd44810
[7-3] 주문시트 레포지토리 쿼리 테스트 완료
yhj1129 Apr 9, 2023
b675e46
[8-1] 고객 컨트롤러 테스트 완료
yhj1129 Apr 9, 2023
a63942a
[8-2] 제품 컨트롤러 테스트 완료
yhj1129 Apr 9, 2023
8d5b480
[8-3] 주문 컨트롤러 테스트 완료
yhj1129 Apr 9, 2023
ab589d4
[8-2+] 제품 컨트롤러 테스트 delete추가
yhj1129 Apr 9, 2023
0ea85b4
[9-1] 고객 컨트롤러 유효성 검사 기능 완료
yhj1129 Apr 9, 2023
c4b4de8
[9-2] 제품 컨트롤러 유효성 검사 기능 완료
yhj1129 Apr 9, 2023
a974b6e
[9-3] 주문 컨트롤러 유효성 검사 기능 완료
yhj1129 Apr 9, 2023
4746b50
temp : Annotation 생성까지 완료, 적용 전
yhj1129 Apr 9, 2023
b8b79b8
[10] User의 비밀번호 JsonIgnore 설정 완료 (민감한 정보)
yhj1129 Apr 9, 2023
5b4db13
[3+] 물건 수정 기능 수정
yhj1129 Apr 9, 2023
fae109f
[** API 문서 추가**]
yhj1129 Apr 9, 2023
059dc73
Update README.md
yhj1129 Apr 9, 2023
4af4320
Update README.md
yhj1129 Apr 9, 2023
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
92 changes: 92 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
![thumbnail (3)](https://user-images.githubusercontent.com/92681117/230777373-47f9c91c-7bea-4a1b-adc7-27bed9b14843.png)

# 🛒쇼핑몰 프로젝트
## 👩🏻‍💻참여
- 유현주

## ⚒️기술스택
- **SpringBoot**

## 🔧협업 도구
- **Git**
- **GitHub**

## 🗂️데이터베이스
- **H2**

## ➕의존성
```java
dependencies {
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'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'junit:junit:4.13.1'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
```

## 🗒️구현 요청 사항
- 고객은 다수이다.
- 판매자는 한명이다.
- 고객은 여러건의 주문을 할 수 있다.
- 고객은 한번에 여러개의 상품을 주문할 수 있다.
- 고객은 상품 주문시에 개수를 선택할 수 있다.

## 💡구현된 기능

### 🙋🏻‍♀️사용자 기능
- 회원가입
- 로그인

### 👜상품 관련 기능
- 판매자의 상품 등록
- 등록된 상품들 목록 보기
- 상품 상세보기
- 판매자의 상품 수정
- 판매자의 상품 삭제

### 👩🏻‍💻주문 관련 기능
- 상품 주문
- 고객 주문 목록 보기
- 판매자의 전체 고객 주문 목록 보기

**상세한 요청과 응답은 [api문서](https://github.com/yhj1129/Springboot-MetaMall-Project/blob/main/src/main/java/shop/mtcoding/metamall/api)를 확인**

## 🔗ER-Diagram
<img width="856" alt="image" src="https://user-images.githubusercontent.com/92681117/230779121-38a29526-dc1f-4830-a1b2-1261939c7658.png">


## 👩🏻‍🔧작성한 테스트 코드
- 레포지토리 쿼리 테스트 코드

[고객 쿼리](https://github.com/yhj1129/Springboot-MetaMall-Project/blob/main/src/test/java/shop/mtcoding/metamall/model/user/UserRepositoryTest.java)

[제품 쿼리](https://github.com/yhj1129/Springboot-MetaMall-Project/blob/main/src/test/java/shop/mtcoding/metamall/model/product/ProductRepositoryTest.java)

[주문서 쿼리](https://github.com/yhj1129/Springboot-MetaMall-Project/blob/main/src/test/java/shop/mtcoding/metamall/model/ordersheet/OrderSheetRepositoryTest.java)

- 컨트롤러 테스트 코드

[고객 컨트롤러](https://github.com/yhj1129/Springboot-MetaMall-Project/blob/main/src/test/java/shop/mtcoding/metamall/controller/UserControllerTest.java)

[상품 컨트롤러](https://github.com/yhj1129/Springboot-MetaMall-Project/blob/main/src/test/java/shop/mtcoding/metamall/controller/ProductControllerTest.java)

[주문 컨트롤러](https://github.com/yhj1129/Springboot-MetaMall-Project/blob/main/src/test/java/shop/mtcoding/metamall/controller/OrderControllerTest.java)

## 🔧보완할 점
- 요청에 대해 Dto로 받지 못한 것들이 몇 가지 있었다. 새로 Dto를 추가해서 요청에 맞는 Dto로 요청을 처리하도록 변경할 예정이다.
- 유효성 검사 추가. 현재 null, "" 체크 정도만 구현되어 있다.
- 데이터베이스 연관관계를 좀 더 공부해서 응답이 더 깔끔하게 나올 수 있도록 변경할 예정. 불필요하게 많은 정보의 응답이 나온다고 느꼈다.
- ER-Diagram을 보완하기
- AOP 적용 필요
- JWT를 헤더에서 가져와서 인증하는 부분이 계속해서 반복되는 것을 느껴 어노테이션으로 만들었지만 기존 메서드와 연결에서 어려움이 있어서 적용을 하지는 못했다.

## 🌟느낀 점
- 혼자 하는 프로젝트여서 협업에 큰 어려움이 없었지만, 다른 팀원들과 함께 하게 되면 버전 관리에 신경을 많이 써야할 것 같다.
- 모르고 있던(배웠으나 까먹은..?) 부분도 스스로 검색하고 다시 공부하며 빈 부분이 많이 채워졌다고 느꼈다.
- 지금까지 배운 내용이 다 들어있어서 뿌듯했다!
4 changes: 3 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,14 @@ dependencies {
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'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'junit:junit:4.13.1'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
}

tasks.named('test') {
useJUnitPlatform()
Expand Down
21 changes: 19 additions & 2 deletions src/main/java/shop/mtcoding/metamall/MetamallApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,41 @@
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import shop.mtcoding.metamall.model.log.err.ErrorLogRepository;
import shop.mtcoding.metamall.model.log.login.LoginLogRepository;
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.product.Product;
import shop.mtcoding.metamall.model.product.ProductRepository;
import shop.mtcoding.metamall.model.user.Role;
import shop.mtcoding.metamall.model.user.User;
import shop.mtcoding.metamall.model.user.UserRepository;

import java.time.LocalDateTime;

@SpringBootApplication
public class MetamallApplication {

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

User ssar = User.builder().username("ssar").password("1234").email("[email protected]").role(Role.USER).build();
userRepository.save(ssar);
OrderSheet orderSheet = OrderSheet.builder().user(ssar).totalPrice(0).build();
orderSheetRepository.save(orderSheet); // 한 고객 당 주문 시트 생성

Product book = Product.builder().productname("book1").price(10000).qty(100).build();
productRepository.save(book);

Product book2 = Product.builder().productname("book2").price(15000).qty(100).build();
productRepository.save(book2);
};
}

Expand Down
Loading