-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #54 from ClothingStoreService/develop
develop 브랜치 main 브랜치에 merge
- Loading branch information
Showing
138 changed files
with
6,481 additions
and
40 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,96 +1,111 @@ | ||
# ClothStar 프로젝트 | ||
|
||
## 프로젝트 소개 | ||
- 개요 : 의류 온라인 쇼핑몰에서의 까다로운 도메인 규칙을 설계하고 구현하여 의류 쇼핑몰에 대한 도메인에 대한 이해를 높임과 동시에 개발과 협업의 역량을 향상 시키기 위해 시작하였습니다. | ||
|
||
- 개요 : 의류 온라인 쇼핑몰에서의 까다로운 도메인 규칙을 설계하고 구현하여 의류 쇼핑몰에 대한 도메인에 대한 이해를 높임과 동시에 개발과 협업의 역량을 향상 시키기 위해 시작하였습니다. | ||
- Scrum 방법론 사용 : 1주, 2주 단위로 Sprint를 나누고, 주간 미팅과 데일리 스탠딩 미팅을 통해 각 팀원의 진행사항 및 계획에 대해 공유하며 진행하였습니다. | ||
- 컨벤션 사용과 깃 브랜치 전략 사용 : 커밋 커벤션과, 네이버 코드 컨벤션을 따랐습니다. | ||
- [커밋 컨벤션 규칙 참고 URL](https://velog.io/@shin6403/Git-git-%EC%BB%A4%EB%B0%8B-%EC%BB%A8%EB%B2%A4%EC%85%98-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0) | ||
- [네이버 Java 코드 컨벤션 참고 URL](https://bestinu.tistory.com/64) | ||
- [깃 브랜치 전략 참고 URL](https://hudi.blog/git-branch-strategy/) | ||
- [커밋 컨벤션 규칙 참고 URL](https://velog.io/@shin6403/Git-git-%EC%BB%A4%EB%B0%8B-%EC%BB%A8%EB%B2%A4%EC%85%98-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0) | ||
- [네이버 Java 코드 컨벤션 참고 URL](https://bestinu.tistory.com/64) | ||
- [깃 브랜치 전략 참고 URL](https://hudi.blog/git-branch-strategy/) | ||
|
||
## 팀 멤버 | ||
|
||
- 유수빈 | ||
- 김민아 | ||
- 강현수 | ||
|
||
## 프로젝트 스프린트 계획 | ||
|
||
이 프로젝트는 스크럼 방법론을 따라 진행됩니다. 1주~2주일 단위로 Sprint를 나누고, 주간 미팅을 통해 각 팀원의 진행사항 및 계획에 대해 공유하였습니다. 아래는 프로젝트의 스프린트 계획입니다. | ||
|
||
### 스프린트 1 | ||
|
||
- **멤버**: 강현수 | ||
- **목표**: 회원가입, 로그인 API 구현 (스프링 시큐리티 적용) | ||
- **목표**: 회원가입, 로그인, 판매자, 배송지 기본 API 구현 | ||
- **기간**: 2024년 3월 13일부터 2024년 3월 31일까지 | ||
- **주요 작업**: | ||
- 스프링 시큐리티 적용하여 회원가입, 로그인 API 구현 | ||
- 회원가입, 회원조회, 로그인 API | ||
- 배송지 입력, 조회 API 구현 | ||
- 판매자 신청, 조회 API 구현 | ||
- 테스트 작성 및 실행 | ||
|
||
- **멤버**: 유수빈 | ||
- **목표**: 주문 API 구현(반품, 교환 제외) | ||
- **기간**: 2024년 3월 14일부터 2024년 3월 31일까지 | ||
- **주요 작업**: | ||
- (사용자)주문 생성 구현 | ||
- (사용자)주문 내역 구현 | ||
- (사용자)주문 취소 구현 | ||
- (판매자)주문 관리 구현 | ||
- 테스트 작성 및 실행 | ||
- 사용자 피드백 수집 | ||
- (사용자)주문 생성 구현 | ||
- (사용자)주문 내역 구현 | ||
- (사용자)주문 취소 구현 | ||
- (판매자)주문 관리 구현 | ||
- 테스트 작성 및 실행 | ||
- 사용자 피드백 수집 | ||
|
||
- **멤버**: 김민아 | ||
- **목표**: [스프린트 목표 및 완료 기준] | ||
- **기간**: 2024년 3월 14일부터 2024년 3월 31일까지 | ||
- **주요 작업**: | ||
- 기능 1 구현 | ||
- 기능 2 구현 | ||
- 테스트 작성 및 실행 | ||
- 사용자 피드백 수집 | ||
- 주문 상품 반품 구현 | ||
- 주문 상품 교환 | ||
- (판매자)상품 관리 구현 | ||
- (사용자)상품 조회 및 검색 구현 | ||
- 테스트 작성 및 실행 | ||
- 사용자 피드백 수집 | ||
|
||
### 스프린트 2 | ||
|
||
- **멤버**: 강현수 | ||
- **목표**: JWT 토큰 검증 사용한 비밀번호 수정, 회원정보 수정 | ||
- **목표**: 스프링 시큐리티 적용과, Jwt 적용후 인증및 권한 구현 | ||
- **기간**: 2024년 4월 01일부터 2024년 4월 10일까지 | ||
- **주요 작업**: | ||
- JWT 토큰으로 이메일로 전송한 비밀번호 수정 링크 타고 왔는지 확인 | ||
- 회원 정보 수정 | ||
- 테스트 작성 및 실행 | ||
- 스프링 시큐리티 적용 | ||
- 스프링 시큐리티 Jwt 이용한 인증 및 권한구현 | ||
- 회원정보 수정, 회원 도메인 validation 체크및 수정 | ||
- 테스트 작성 및 실행 | ||
|
||
- **멤버**: 유수빈 | ||
- **목표**: 주문 상태 알림 API 구현 | ||
- **기간**: 2024년 4월 01일부터 2024년 4월 10일까지 | ||
- **주요 작업**: | ||
- 주문 상태 알림 구현 | ||
- 테스트 작성 및 실행 | ||
- 사용자 피드백 수집 | ||
- 주문 상태 알림 구현 | ||
- 입점 신청/관리 구현 | ||
- 테스트 작성 및 실행 | ||
- 사용자 피드백 수집 | ||
|
||
- **멤버**: 김민아 | ||
- **목표**: 재입고 알림 API 구현 | ||
- **기간**: 2024년 4월 01일부터 2024년 4월 10일까지 | ||
- **주요 작업**: | ||
- 재입고 알림 구현 | ||
- 테스트 작성 및 실행 | ||
- 사용자 피드백 수집 | ||
- 재입고 알림 구현 | ||
- 상품 리뷰 구현 | ||
- 장바구니, 위시리스트 구현 | ||
- 테스트 작성 및 실행 | ||
- 사용자 피드백 수집 | ||
|
||
### 스프린트 3 | ||
|
||
- **멤버**: 강현수 | ||
- **목표**: 배송지 입력 API 개발 | ||
- **목표**: refresh 토큰 구현및 코드 리팩토링 | ||
- **기간**: 2024년 4월 11일부터 2024년 4월 21일까지 | ||
- **주요 작업**: | ||
- 배송지 입력, 추가, 삭제 API 개발 | ||
- 테스트 작성 및 실행 | ||
- access 토큰으로 refresh 토큰 재발급 | ||
- 테스트 작성 및 실행 | ||
|
||
- **멤버**: 유수빈 | ||
- **목표**: 최종 사용자 피드백 수집 및 수정 | ||
- **기간**: 2024년 4월 11일부터 2024년 4월 21일까지 | ||
- **주요 작업**: | ||
- 최종 사용자 피드백 수집 및 수정 | ||
- 최종 사용자 피드백 수집 및 수정 | ||
|
||
- **멤버**: 김민아 | ||
- **목표**: [스프린트 목표 및 완료 기준] | ||
- **기간**: 2024년 4월 11일부터 2024년 4월 21일까지 | ||
- **주요 작업**: | ||
- 기능 5 구현 | ||
- 기능 6 구현 | ||
- 테스트 작성 및 실행 | ||
- 최종 사용자 피드백 수집 및 수정 | ||
- 검색 엔진 구현 | ||
- 기능 6 구현 | ||
- 테스트 작성 및 실행 | ||
- 최종 사용자 피드백 수집 및 수정 | ||
|
||
## 프로젝트 기간 | ||
이 프로젝트의 예상 기간은 2024년 3월 13일부터 2024년 4월 21일까지입니다. | ||
|
||
이 프로젝트의 예상 기간은 2024년 3월 13일부터 2024년 4월 21일까지입니다. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
61 changes: 61 additions & 0 deletions
61
src/main/java/org/store/clothstar/category/controller/CategoryController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
package org.store.clothstar.category.controller; | ||
|
||
import io.swagger.v3.oas.annotations.Operation; | ||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.http.HttpStatus; | ||
import org.springframework.http.ResponseEntity; | ||
import org.springframework.validation.annotation.Validated; | ||
import org.springframework.web.bind.annotation.*; | ||
import org.store.clothstar.category.dto.request.CreateCategoryRequest; | ||
import org.store.clothstar.category.dto.request.UpdateCategoryRequest; | ||
import org.store.clothstar.category.dto.response.CategoryDetailResponse; | ||
import org.store.clothstar.category.dto.response.CategoryResponse; | ||
import org.store.clothstar.category.service.CategoryService; | ||
import org.store.clothstar.common.dto.MessageDTO; | ||
import org.store.clothstar.common.util.URIBuilder; | ||
|
||
import java.net.URI; | ||
import java.util.List; | ||
|
||
@RestController | ||
@RequiredArgsConstructor | ||
@RequestMapping("/v1/categories") | ||
public class CategoryController { | ||
|
||
private final CategoryService categoryService; | ||
|
||
@Operation(summary = "전체 카테고리 조회", description = "모든 카테고리를 조회한다.") | ||
@GetMapping | ||
public ResponseEntity<List<CategoryResponse>> getAllCategories() { | ||
List<CategoryResponse> categoryResponses = categoryService.getAllCategories(); | ||
return ResponseEntity.ok().body(categoryResponses); | ||
} | ||
|
||
@Operation(summary = "카테고리 상세 조회", description = "id로 카테고리 한개를 상세 조회한다.") | ||
@GetMapping("/{categoryId}") | ||
public ResponseEntity<CategoryDetailResponse> getCategory(@PathVariable Long categoryId) { | ||
CategoryDetailResponse categoryDetailResponse = categoryService.getCategory(categoryId); | ||
return ResponseEntity.ok().body(categoryDetailResponse); | ||
} | ||
|
||
@Operation(summary = "카테고리 등록", description = "카테고리 타입(이름)을 입력하여 신규 카테고리를 등록한다.") | ||
@PostMapping | ||
public ResponseEntity<Long> createCategory(@Validated @RequestBody CreateCategoryRequest createCategoryRequest) { | ||
Long categoryId = categoryService.createCategory(createCategoryRequest); | ||
|
||
URI location = URIBuilder.buildURI(categoryId); | ||
|
||
return ResponseEntity.created(location).build(); | ||
} | ||
|
||
@Operation(summary = "카테고리 수정", description = "카테고리 이름을 수정한다.") | ||
@PutMapping("/{categoryId}") | ||
public ResponseEntity<MessageDTO> updateCategories( | ||
@PathVariable Long categoryId, | ||
@Validated @RequestBody UpdateCategoryRequest updateCategoryRequest) { | ||
|
||
categoryService.updateCategory(categoryId, updateCategoryRequest); | ||
|
||
return ResponseEntity.ok().body(new MessageDTO(HttpStatus.OK.value(), "Category updated successfully", null)); | ||
} | ||
} |
16 changes: 16 additions & 0 deletions
16
src/main/java/org/store/clothstar/category/domain/Category.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
package org.store.clothstar.category.domain; | ||
|
||
import lombok.Builder; | ||
import lombok.Getter; | ||
import org.store.clothstar.category.dto.request.UpdateCategoryRequest; | ||
|
||
@Getter | ||
@Builder | ||
public class Category { | ||
private Long categoryId; | ||
private String categoryType; | ||
|
||
public void updateCategory(UpdateCategoryRequest updateCategoryRequest) { | ||
this.categoryType = updateCategoryRequest.getCategoryType(); | ||
} | ||
} |
27 changes: 27 additions & 0 deletions
27
src/main/java/org/store/clothstar/category/dto/request/CreateCategoryRequest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
package org.store.clothstar.category.dto.request; | ||
|
||
import io.swagger.v3.oas.annotations.media.Schema; | ||
import lombok.AllArgsConstructor; | ||
import lombok.Builder; | ||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
import org.store.clothstar.category.domain.Category; | ||
|
||
import javax.validation.constraints.NotBlank; | ||
|
||
@Getter | ||
@Builder | ||
@AllArgsConstructor | ||
@NoArgsConstructor | ||
public class CreateCategoryRequest { | ||
|
||
@Schema(description = "카테고리 타입(이름)", nullable = false) | ||
@NotBlank(message = "카테고리 타입을 입력해주세요.") | ||
private String categoryType; | ||
|
||
public Category toCategory() { | ||
return Category.builder() | ||
.categoryType(categoryType) | ||
.build(); | ||
} | ||
} |
20 changes: 20 additions & 0 deletions
20
src/main/java/org/store/clothstar/category/dto/request/UpdateCategoryRequest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
package org.store.clothstar.category.dto.request; | ||
|
||
import io.swagger.v3.oas.annotations.media.Schema; | ||
import lombok.AllArgsConstructor; | ||
import lombok.Builder; | ||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
|
||
import javax.validation.constraints.NotBlank; | ||
|
||
@Getter | ||
@AllArgsConstructor | ||
@NoArgsConstructor | ||
@Builder | ||
public class UpdateCategoryRequest { | ||
|
||
@Schema(description = "카테고리 타입(이름)", nullable = false) | ||
@NotBlank(message = "카테고리 타입을 입력해주세요.") | ||
private String categoryType; | ||
} |
20 changes: 20 additions & 0 deletions
20
src/main/java/org/store/clothstar/category/dto/response/CategoryDetailResponse.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
package org.store.clothstar.category.dto.response; | ||
|
||
import lombok.Builder; | ||
import lombok.Getter; | ||
import org.store.clothstar.category.domain.Category; | ||
|
||
@Getter | ||
@Builder | ||
public class CategoryDetailResponse { | ||
private Long categoryId; | ||
private String categoryType; | ||
|
||
public static CategoryDetailResponse from(Category category) { | ||
return CategoryDetailResponse.builder() | ||
.categoryId(category.getCategoryId()) | ||
.categoryType(category.getCategoryType()) | ||
.build(); | ||
} | ||
|
||
} |
19 changes: 19 additions & 0 deletions
19
src/main/java/org/store/clothstar/category/dto/response/CategoryResponse.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package org.store.clothstar.category.dto.response; | ||
|
||
import lombok.Builder; | ||
import lombok.Getter; | ||
import org.store.clothstar.category.domain.Category; | ||
|
||
@Getter | ||
@Builder | ||
public class CategoryResponse { | ||
private Long categoryId; | ||
private String categoryType; | ||
|
||
public static CategoryResponse from(Category category) { | ||
return CategoryResponse.builder() | ||
.categoryId(category.getCategoryId()) | ||
.categoryType(category.getCategoryType()) | ||
.build(); | ||
} | ||
} |
17 changes: 17 additions & 0 deletions
17
src/main/java/org/store/clothstar/category/repository/CategoryRepository.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
package org.store.clothstar.category.repository; | ||
|
||
import org.apache.ibatis.annotations.Mapper; | ||
import org.store.clothstar.category.domain.Category; | ||
|
||
import java.util.List; | ||
|
||
@Mapper | ||
public interface CategoryRepository { | ||
List<Category> selectAllCategory(); | ||
|
||
Category selectCategoryById(Long categoryId); | ||
|
||
int save(Category category); | ||
|
||
int updateCategory(Category category); | ||
} |
Oops, something went wrong.