Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

멘토님 코드 리뷰용 PR #52

Open
wants to merge 806 commits into
base: review
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 250 commits
Commits
Show all changes
806 commits
Select commit Hold shift + click to select a range
1533f9e
refactor: ResponseEntity 생성 방식을 status 메서드로 변경
wjwj910 Jan 18, 2025
e62a738
build: 스웨거 의존성 추가
vdvhk12 Jan 18, 2025
60d6f8f
refactor: 장바구니 조회 API에서 PathVariable 제거 및 인증 정보 활용
wjwj910 Jan 18, 2025
c8b12f4
refactor: 장바구니 조회 서비스 로직 간소화(불필요 검증 제거)
wjwj910 Jan 18, 2025
c7b6650
test: PathVariable 제거에 따른 코드 수정
wjwj910 Jan 18, 2025
aa83548
test: 불필요한 테스트 제거
wjwj910 Jan 18, 2025
d4fa78b
feat: 스웨거 접속을 위해 시큐리티 설정 변경, 필터에서 url 패턴 관리하는 메서드 수정
vdvhk12 Jan 19, 2025
e2657c7
Merge branch 'main' into feature/O-03
sobaman Jan 19, 2025
b185508
refactor: 원격에 올라간 Delete .DS_Store 삭제
sobaman Jan 19, 2025
5c9e85c
feat: 상품 재고 감소 로직 구현 , 상품이 부족할 때 에러코드 추가
sobaman Jan 18, 2025
eb8b912
refactor: 프론트 쪽에 생기는 .DS_Store gitignore 에 추가
sobaman Jan 19, 2025
b74c78a
feat: 스웨거 설정을 위한 SpringDocConfig 추가
vdvhk12 Jan 19, 2025
0d3b529
feat: MemberController, AuthController 예제로 스웨거 설정 추가
vdvhk12 Jan 19, 2025
7c07040
refactor: url 리스트 위치 상단으로 이동
vdvhk12 Jan 19, 2025
6aabfda
Merge pull request #65 from prgrms-be-devcourse/feature/G-07
vdvhk12 Jan 19, 2025
49b9eda
Merge branch 'main' into feature/C-02
wjwj910 Jan 19, 2025
04e2a85
feat: name 필드 unique 속성 추가
100gammmit Jan 19, 2025
7f8c0df
feat: repository 중복 상품명 존재 여부 반환 메서드 추가
100gammmit Jan 19, 2025
bdad3a8
feat: 중복 상품명 검증 예외 추가
100gammmit Jan 19, 2025
be46d8c
feat: service 상품 추가 시도 시 중복 상품명 존재 여부 검사
100gammmit Jan 19, 2025
837e4d0
feat: 중복 상품 이름 에러코드 파라미터 순서 오류로 인한 수정
100gammmit Jan 19, 2025
b136b6a
test: 중복 상품 이름 등록 시도 관련 테스트 코드 작성
100gammmit Jan 19, 2025
5aa901f
build: 스웨거 의존성 추가
vdvhk12 Jan 18, 2025
222ad08
feat: 스웨거 접속을 위해 시큐리티 설정 변경, 필터에서 url 패턴 관리하는 메서드 수정
vdvhk12 Jan 19, 2025
3f237e8
feat: 스웨거 설정을 위한 SpringDocConfig 추가
vdvhk12 Jan 19, 2025
a6f230c
feat: MemberController, AuthController 예제로 스웨거 설정 추가
vdvhk12 Jan 19, 2025
50e189f
refactor: url 리스트 위치 상단으로 이동
vdvhk12 Jan 19, 2025
db16793
feat: 상품 재고 감소 로직 구현 , 상품이 부족할 때 에러코드 추가
sobaman Jan 18, 2025
1b54d04
test: 주문 컨트롤러 테스트 구현
sobaman Jan 19, 2025
b6379c0
refactor: country 필드 오류 메시지를 국가 -> 도로명 주소로 변경
sobaman Jan 19, 2025
7ce6947
refactor: 상품 재고 감소 로직 중복 수정
sobaman Jan 19, 2025
6a5b517
Merge pull request #68 from prgrms-be-devcourse/feature/O-03
sobaman Jan 19, 2025
fa52a8a
Merge pull request #66 from prgrms-be-devcourse/feature/C-02
wjwj910 Jan 19, 2025
63585a0
Merge branch 'main' into feature/P-01
100gammmit Jan 19, 2025
91f8503
Merge pull request #67 from prgrms-be-devcourse/feature/P-01
100gammmit Jan 19, 2025
88eb3fe
feat: repository 특정 id제외하고 상품 이름 중복 체크하는 메서드 추가
100gammmit Jan 19, 2025
bff553a
feat: service 상품 수정 시 해당 상품 id제외하고 상품 이름 중복 체크하는 로직 추가
100gammmit Jan 19, 2025
49ce459
test: 상품 수정 시 해당 상품 id제외하고 상품 이름 중복 체크하는 로직 추가로 인한 관련 테스트 추가
100gammmit Jan 19, 2025
b221666
Merge pull request #72 from prgrms-be-devcourse/feature/P-05
vdvhk12 Jan 19, 2025
0dfef98
feat: 멤버id 와 주문상태 리스트를 받아 최신 수정시간 순으로 정렬되어 주문목록을 반환하는 쿼리 작성
sobaman Jan 19, 2025
f409687
feat: 주문 히스토리 컨트롤러와 서비스 구현
sobaman Jan 19, 2025
c968707
refactor: 최신 수정시간 순으로 정렬 위해 쿼리에 desc 추가
sobaman Jan 19, 2025
1a89040
test: 모든 주문 목록 조회 및 수정시간순으로 조회
sobaman Jan 19, 2025
bf71887
test: 주문 히스토리 조회 서비스, 컨트롤러 테스트
sobaman Jan 19, 2025
79dba6f
Merge pull request #74 from prgrms-be-devcourse/feature/0-04
sobaman Jan 19, 2025
afaddec
feat: 회원 탈퇴 기능 구현
vdvhk12 Jan 18, 2025
2240b21
test: 회원 탈퇴 테스트 추가
vdvhk12 Jan 19, 2025
833514b
feat: 회원 탈퇴 기능 구현
vdvhk12 Jan 19, 2025
903a080
refactor: 트랜젝션 어노테이션 추가
vdvhk12 Jan 19, 2025
5c341fc
feat: 회원 탈퇴 기능 구현
vdvhk12 Jan 18, 2025
606deaa
refactor: 트랜젝션 어노테이션 추가
vdvhk12 Jan 19, 2025
d0a9d16
refactor: 멤버 서비스에서 삭제 로직 제거
vdvhk12 Jan 19, 2025
3da4c09
Merge pull request #75 from prgrms-be-devcourse/feature/M-05
vdvhk12 Jan 19, 2025
c90d8e6
feat: 회원 비밀번호 변경 기능 구현 #54
kdo1999 Jan 18, 2025
ceb95a8
refactor: 불필요한 필드 제거 #54
kdo1999 Jan 18, 2025
0212880
refactor: login 권한 설정 #54
kdo1999 Jan 18, 2025
48d1576
test: MemberServiceTest.password_change_success 추가 #54
kdo1999 Jan 18, 2025
0153035
test: MemberServiceTest.password_not_match_success 추가 #54
kdo1999 Jan 18, 2025
1bb52a6
test: MemberControllerTest.password_change_success 추가 #54
kdo1999 Jan 18, 2025
41f2560
test: MemberControllerTest.password_change_password_valid_success 추가 #54
kdo1999 Jan 18, 2025
5198193
test: MemberControllerTest 수정 #54
kdo1999 Jan 18, 2025
29cb0c8
test: MemberControllerTest.password_not_match_success 추가 #54
kdo1999 Jan 18, 2025
4ec8217
refactor: MemberConverter 수정 #54
kdo1999 Jan 18, 2025
96ae500
refactor: MemberService 수정 #54
kdo1999 Jan 18, 2025
ca08666
refactor: 인증 메일 발송 URL 권한 설정 #54
kdo1999 Jan 19, 2025
ee4e819
refactor: 인증메일 폼 생성자 제거 #54
kdo1999 Jan 19, 2025
cfd8b20
refactor: 도메인 로직 DTO에서 엔티티로 이동 #54
kdo1999 Jan 19, 2025
e0b3ce2
feat: 인증 메일 발송시 사용할 폼 추가 #54
kdo1999 Jan 19, 2025
e1ceea3
refactor: 서버 오류랑 이메일 인증 관련 예외 코드 추가 #54
kdo1999 Jan 19, 2025
647b929
refactor: 이메일 발송 부분 로직 수정 #54
kdo1999 Jan 19, 2025
7b4b220
refactor: MailServiceImpl 로직 수정 #54
kdo1999 Jan 19, 2025
fb9ed14
refactor: 인증 코드 발송 URL 권한 설정 #54
kdo1999 Jan 19, 2025
73e07e3
test: 서비스에서 MemberDto 미사용으로 인한 리팩토링 #54
kdo1999 Jan 19, 2025
8767a46
feat: 인증 코드 발송 기능 추가 #54
kdo1999 Jan 19, 2025
7d2d8c6
feat: 인증 코드 발송 기능 추가 #54
kdo1999 Jan 19, 2025
a3ba9d8
refactor: 변수명 수정 #54
kdo1999 Jan 19, 2025
3d72e6a
test: AuthServiceTest.send_success 추가 #54
kdo1999 Jan 19, 2025
d1ce580
test: AuthServiceTest.send_verify_type_not_match_fail #54
kdo1999 Jan 19, 2025
c53f9bb
refactor: AuthService.send 예외 코드 수정 #54
kdo1999 Jan 19, 2025
f3c87a7
test: AuthServiceTest.send_too_many_resend_attempts_fail 추가 #54
kdo1999 Jan 19, 2025
ca8e4de
refactor: AuthErrorCode 코드 이름 수정 #54
kdo1999 Jan 19, 2025
698a68a
test: AuthServiceTest.send_too_many_resend_attempts_fail 수정 #54
kdo1999 Jan 19, 2025
2d2711c
test: AuthControllerTest.send_success #54 추가
kdo1999 Jan 19, 2025
ab962bb
test: AuthControllerTest.send_verify_type_not_match_fail 추가 #54
kdo1999 Jan 19, 2025
18184e8
refactor: GlobalControllerAdvice 예외 발생 시 로그 수정 #54
kdo1999 Jan 19, 2025
e3733a9
test: AuthControllerTest.send_too_many_resend_attempts_fail 추가 #54
kdo1999 Jan 19, 2025
364c72e
test: rebase 후 반영 안 된 부분 추가 #54
kdo1999 Jan 19, 2025
e19912b
refactor: 스웨거 어노테이션 추가 #54
kdo1999 Jan 19, 2025
7a2afbf
refactor: build 명시화
wjwj910 Jan 19, 2025
c7fd0b0
style: 장바구니 추가 메서드명 복수형->단수형 수정
wjwj910 Jan 19, 2025
53fad75
refactor: 액세스 PROTECTED -> PRIVATE
wjwj910 Jan 19, 2025
b296f7c
refactor: 메서드명에 언더스코어 제거 & vaild로 인한 불필요 검증 로직 제거
wjwj910 Jan 19, 2025
19f7e0f
style: 메서드명 언더스코어 제거
wjwj910 Jan 19, 2025
2532099
test: 메서드명 변경 및 불필요 검증로직 제거로 인한 test코드 수정
wjwj910 Jan 19, 2025
d627ed8
Merge pull request #78 from prgrms-be-devcourse/feature/C-02
wjwj910 Jan 19, 2025
836f8af
feat: 장바구니에 있는 상품의 수량을 수정하는 메서드(updateCartItemQuantity) 추가
wjwj910 Jan 19, 2025
f650d91
feat: Cart 엔티티에 수량 업데이트 메서드 추가
wjwj910 Jan 19, 2025
a60c155
feat: 장바구니 수량 수정 요청용 DTO 추가
wjwj910 Jan 19, 2025
8eafb4b
feat: 장바구니 상품 수량 수정 로직(updateCartItemQuantity) 구현
wjwj910 Jan 19, 2025
fe5a242
feat: 장바구니 상품 조회를 위한 메서드(findByProductIdAndMemberId) 추가
wjwj910 Jan 19, 2025
ff31663
feat: 장바구니 예외 코드 추가
wjwj910 Jan 19, 2025
f7f497a
test: CartControllerTest, 장바구니 상품 수량 수정 메서드 테스트 추가
wjwj910 Jan 19, 2025
f51202a
test: CartRepositoryTest, 장바구니 항목 조회 및 수량 변경 테스트 추가
wjwj910 Jan 19, 2025
8e25478
test: CartServiceTest, 장바구니 수량 업데이트 관련 예외 처리 테스트 추가
wjwj910 Jan 19, 2025
9ec6e65
refactor: 트랜잭션 어노테이션 메서드 위로 수정 #80
vdvhk12 Jan 20, 2025
9297699
Merge pull request #81 from prgrms-be-devcourse/feature/M-05
vdvhk12 Jan 20, 2025
a52539e
refactor: @Transactional로 인한 불필요한 save 제거
wjwj910 Jan 20, 2025
8d0e636
test: CartServiceTest, 장바구니 수량 업데이트 테스트 개선
wjwj910 Jan 20, 2025
0f5a837
test: CartRepositoryTest, 장바구니 항목 조회 및 수량 변경 테스트 개선
wjwj910 Jan 20, 2025
8b9adc3
test: OrdersRepositoryTest.findReadyOrders 추가 #79
kdo1999 Jan 20, 2025
cc12dd9
feat: OrdersRepository.findReadyOrders 추가 #79
kdo1999 Jan 20, 2025
da6db62
test: OrdersRepositoryTest.bulkUpdateDeliveryStatus 추가 #79
kdo1999 Jan 20, 2025
ca29de5
feat: OrdersRepository.bulkUpdateDeliveryStatus 추가 #79
kdo1999 Jan 20, 2025
65f2ad3
feat: SchedulerService 추가 #79
kdo1999 Jan 20, 2025
ce961ec
refactor: 회원 정보 수정에서 데이터 변환 수 줄임 #82
vdvhk12 Jan 20, 2025
a598652
Merge branch 'main' into feature/C-03
wjwj910 Jan 20, 2025
9a60c84
refactor: 예외 내부 에러 코드 필드 final로 변경 #54
kdo1999 Jan 20, 2025
475e57d
refactor: record에 생성자 제거 #54
kdo1999 Jan 20, 2025
fe0e80e
Merge pull request #76 from prgrms-be-devcourse/feature/M-04
kdo1999 Jan 20, 2025
ff1ef6c
refactor: SchedulerService 설정 수정 #79
kdo1999 Jan 20, 2025
ed15bb6
Merge pull request #83 from prgrms-be-devcourse/feature/G-03
vdvhk12 Jan 20, 2025
5fce07f
Merge pull request #84 from prgrms-be-devcourse/feature/M-03
vdvhk12 Jan 20, 2025
67973e3
Merge branch 'main' into feature/C-03
wjwj910 Jan 20, 2025
562bd9f
feat: Service 상품 삭제 로직 추가
100gammmit Jan 20, 2025
9285282
feat: ProductOrdersRepository 상품 id로 해당 상품 주문 내역 존재 여부 검증 메서드 추가
100gammmit Jan 20, 2025
94ecd90
feat: 주문 내역이 존재하는 상품을 삭제 시도할 때 던질 예외 추가
100gammmit Jan 20, 2025
4bc601c
feat: 상품 삭제 api 핸들러 추가
100gammmit Jan 20, 2025
0fbddce
test: 상품 삭제 테스트 추가
100gammmit Jan 20, 2025
3643d7b
test: OrdersRepository.findUsernameByReady 추가 #85
kdo1999 Jan 20, 2025
9efc4a6
feat: OrdersRepository.findUsernameByReady 추가 #85
kdo1999 Jan 20, 2025
32b35f5
feat: 배송 시작 메일 발송 기능 추가 #85
kdo1999 Jan 20, 2025
d549f83
feat: SchedulerService 이메일 발송 기능 추가 #85
kdo1999 Jan 20, 2025
06d22c6
refactor: converter 기본생성자 protected -> private로 설정
100gammmit Jan 20, 2025
d41db8b
refator: validationSequence로 groups 추가
wjwj910 Jan 20, 2025
0ad9c4e
feat:findByProductIdAndMemberId 쿼리 수정(JOIN FETCH)
wjwj910 Jan 20, 2025
ffec8db
refactor: MailConfig 수정 #85
kdo1999 Jan 20, 2025
e1df5ba
Merge pull request #88 from prgrms-be-devcourse/feature/G-04
kdo1999 Jan 20, 2025
9d04c19
Merge pull request #89 from prgrms-be-devcourse/feature/P-04
kdo1999 Jan 20, 2025
564df6b
Merge branch 'main' into feature/C-03
wjwj910 Jan 20, 2025
1389686
Merge pull request #86 from prgrms-be-devcourse/feature/C-03
wjwj910 Jan 20, 2025
58d8b40
refactor: SchedulerService 수정
kdo1999 Jan 20, 2025
6c84eaa
Merge pull request #92 from prgrms-be-devcourse/feature/G-04
kdo1999 Jan 20, 2025
a8b064e
feat: CartController, 장바구니 상품 삭제 메서드(deleteCartItem) 메서드 추가
wjwj910 Jan 20, 2025
eca9d5e
feat: CartDeleteForm, 장바구니 상품 삭제용 DTO 추가
wjwj910 Jan 20, 2025
564d711
feat: 장바구니 상품 삭제 로직(deleteCartItem) 구현
wjwj910 Jan 20, 2025
746d09b
feat: 응답 값 types로 분리 #90
kdo1999 Jan 20, 2025
de43da7
feat: 페이징 컴포넌트 추가 #90
kdo1999 Jan 20, 2025
cc80815
feat: config에 Image 설정 추가 #90
kdo1999 Jan 20, 2025
e0cddb7
feat: 상품 목록 불러오는 훅 추가
kdo1999 Jan 20, 2025
5615b44
refactor: Navbar 패키지 이동 #90
kdo1999 Jan 20, 2025
0587ca5
feat: ProductCard 컴포넌트 추가 #90
kdo1999 Jan 20, 2025
341708a
refactor: ProductList 컴포넌트 추가
kdo1999 Jan 20, 2025
37b4b50
refactor: UserProvider 패키지 변경 #90
kdo1999 Jan 20, 2025
04be4c2
refactor: layout.tsx 임포트 변경 #90
kdo1999 Jan 20, 2025
f126689
refactor: 상품 목록 컴포넌트로 분리 #90
kdo1999 Jan 20, 2025
a9a35e4
refactor: SecurityConfig 상품 목록 권한 설정 #90
kdo1999 Jan 20, 2025
b02bd2c
refactor: ApiResponse 수정 #90
kdo1999 Jan 20, 2025
179727d
Merge pull request #94 from prgrms-be-devcourse/feature/FE/P-01
vdvhk12 Jan 20, 2025
cf0bd08
feat: 로그인 성공시 메인 페이지로 리다이렉트 #93
vdvhk12 Jan 20, 2025
0c51493
feat: 이메일 인증이 되지 않은 사용자 로그인시 이메일 재전송 버튼 추가 #93
vdvhk12 Jan 20, 2025
dad46ed
test: CartControllerTest, 장바구니 상품 삭제 메서드 테스트 추가
wjwj910 Jan 20, 2025
a8caf8a
test: CartServiceTest, 장바구니 상품 삭제 관련 예외 처리 테스트 추가
wjwj910 Jan 20, 2025
652c6e8
Merge branch 'main' into feature/C-04
wjwj910 Jan 20, 2025
8b66285
refactor: import 경로 수정
vdvhk12 Jan 20, 2025
22dff01
refactor: ProductResponse 응답 필드명 수정 #90
kdo1999 Jan 20, 2025
54308ab
test: OrderRepositoryTest 수정
kdo1999 Jan 20, 2025
a7fdfd3
Merge pull request #96 from prgrms-be-devcourse/feature/FE/P-01
kdo1999 Jan 20, 2025
a13ec8a
Merge branch 'main' into feature/C-04
wjwj910 Jan 20, 2025
50d4fab
refactor: isClient 삭제
vdvhk12 Jan 20, 2025
1cafb1b
feat: 로딩 상태로 중복 요청막는 로직 추가 #93
vdvhk12 Jan 20, 2025
523e588
Merge pull request #97 from prgrms-be-devcourse/feature/FE/A-01
vdvhk12 Jan 20, 2025
77e59e5
feat: 배송 상태에 주문 취소 추가
sobaman Jan 20, 2025
c99d9fe
feat: 수량 만큼 상품 수량을 복구하는 기능 추가
sobaman Jan 20, 2025
6322b78
feat: 주문 취소 기능 구현
sobaman Jan 20, 2025
88f3ee0
test: 주문 서비스 테스트 완료
sobaman Jan 20, 2025
49d8707
test: 컨트롤러 테스트 완료
sobaman Jan 20, 2025
28d20b8
refactor: 상품 ID 조회 권한 설정 #98
kdo1999 Jan 20, 2025
995f1e2
refactor: types 수정 #98
kdo1999 Jan 20, 2025
e4773ed
refactor: setProducts 타입 검사 추가 #98
kdo1999 Jan 20, 2025
34b9deb
refactor: ProductCard product 변수명 수정 #98
kdo1999 Jan 20, 2025
f23745f
feat: useProduct 훅 추가 #98
kdo1999 Jan 20, 2025
0db04ae
refactor: ProductList.tsx product.id 변수명 수정 #98
kdo1999 Jan 20, 2025
d9312d3
feat: 상품 상세 페이지 추가 #98
kdo1999 Jan 20, 2025
0d259e5
fix: 만료된 액세스 토큰으로 로그아웃 요청시 에러 발생 문제 해결
vdvhk12 Jan 20, 2025
065c1a0
Merge pull request #102 from prgrms-be-devcourse/feature/A-07
vdvhk12 Jan 20, 2025
2c53c1d
refactor: SecurityConfig 수정 #98
kdo1999 Jan 20, 2025
5c0d509
feat: FilterUtils 수정 #98
kdo1999 Jan 20, 2025
6e2bd5e
Merge pull request #100 from prgrms-be-devcourse/feature/O-05
sobaman Jan 20, 2025
13c3dc0
Merge pull request #99 from prgrms-be-devcourse/feature/C-04
wjwj910 Jan 20, 2025
91aa91e
refactor: CartForm 수정 #98
kdo1999 Jan 20, 2025
32df6e0
refactor: 닉네임 변경 시에만 닉네임 검증하도록 수정
vdvhk12 Jan 20, 2025
0f3acb8
refactor: 로그아웃 테스트 수정
vdvhk12 Jan 20, 2025
728058d
Merge pull request #104 from prgrms-be-devcourse/feature/M-03
vdvhk12 Jan 20, 2025
374256f
feat: 상품 상세 페이지 및 장바구니 기능 구현 #98
kdo1999 Jan 20, 2025
5f17820
Merge pull request #105 from prgrms-be-devcourse/feature/FE/P-02
100gammmit Jan 20, 2025
382aefe
feat : 상품 등록, 수정 시 사용할 폼 구현
100gammmit Jan 20, 2025
28de1a4
test: 서비스 로직 수정으로 인한 테스트 제거 #98
kdo1999 Jan 20, 2025
baf0718
Merge pull request #106 from prgrms-be-devcourse/feature/FE/P-02
kdo1999 Jan 20, 2025
9d0d6a9
feat: 이메일 인증 구현 #107
kdo1999 Jan 20, 2025
c574037
feat: 회원가입 로직 수정 #107
kdo1999 Jan 20, 2025
5a363a1
refactor: AuthService 인증, 발송 로직 수정 #107
kdo1999 Jan 20, 2025
bbeb54d
test: AuthService 수정으로 인한 테스트 수정 #107
kdo1999 Jan 20, 2025
568a8ae
refactor: 조회 로직 반환 data, productId 필드 추가
wjwj910 Jan 20, 2025
43d86d5
Merge pull request #109 from prgrms-be-devcourse/feature/C-02-fix
wjwj910 Jan 20, 2025
8c67142
Merge pull request #108 from prgrms-be-devcourse/feature/FE/M-02
kdo1999 Jan 20, 2025
c0ae709
refactor : ROLE_ADMIN도 상품 단건조회 가능하도록 수정
100gammmit Jan 20, 2025
edcb255
feat : 관리자 메인페이지 및 이어지는 상품 관리 페이지 구현
100gammmit Jan 20, 2025
a617cc9
Merge pull request #111 from prgrms-be-devcourse/feature/P-06
100gammmit Jan 20, 2025
8e7d667
feat: 장바구니 페이지 구현 #112
vdvhk12 Jan 20, 2025
e71e45b
Merge pull request #113 from prgrms-be-devcourse/feature/FE/C-01
vdvhk12 Jan 20, 2025
9030225
feat: 회원 응답 타입 정의 #110
kdo1999 Jan 21, 2025
6e209b2
feat: userMember 훅 추가 #110
kdo1999 Jan 21, 2025
2de87ec
feat: Profile 컴포넌트 추가 #110
kdo1999 Jan 21, 2025
649ccda
feat: 내 정보 페이지 구현 #110
kdo1999 Jan 21, 2025
f611f2d
feat: 비밀번호 변경 폼 type 정의 #110
kdo1999 Jan 21, 2025
f0928bf
feat: 비밀번호 변경 기능 구현 #110
kdo1999 Jan 21, 2025
22b21c0
feat: 비밀번호 변경 버튼 추가 #110
kdo1999 Jan 21, 2025
d04c49a
feat: 비밀번호 변경 버튼 추가 #110
kdo1999 Jan 21, 2025
e27faf8
feat: 주문 조회 응답 타입 정의 #110
kdo1999 Jan 21, 2025
97a9403
feat: 내 정보에 주문 정보 추가 #110
kdo1999 Jan 21, 2025
4f99ad4
refactor: ProductInfoDto 변환시 이미지 링크 추가 #110
kdo1999 Jan 21, 2025
d932354
주문 페이지
sobaman Jan 21, 2025
be55bf2
refactor: 회원 조회로 유저 이름 설정 #110
kdo1999 Jan 21, 2025
dbc21ed
Merge pull request #115 from prgrms-be-devcourse/feature/FE/O-01
kdo1999 Jan 21, 2025
fe2a6e1
Merge pull request #114 from prgrms-be-devcourse/feature/FE/M-03
kdo1999 Jan 21, 2025
1bf4c48
refactor: 상품 응답 꺼내는 로직 수정
kdo1999 Jan 21, 2025
92f621c
Merge pull request #116 from prgrms-be-devcourse/feature/FE/M-03
sobaman Jan 21, 2025
1641fba
feat: 이미지 사용 시 example.com 에러 수정
sobaman Jan 21, 2025
399f09d
fix: 불필요한 옵셔널 disabled 삭제
sobaman Jan 21, 2025
1622aea
fix: ApiPaginationResponse, ApiResponse 분리
sobaman Jan 21, 2025
4bb348b
feat: 주문 페이지 구현
sobaman Jan 21, 2025
35f26fa
Merge pull request #117 from prgrms-be-devcourse/feature/FE/O-02
kdo1999 Jan 21, 2025
466063b
feat: 비밀번호 재설정 기능 추가 #118
kdo1999 Jan 21, 2025
fd3919f
refactor: 장바구니 담기 로직 수정 #118
kdo1999 Jan 21, 2025
e344ec4
refactor: 메일 발송, 인증 로직 수정 #118
kdo1999 Jan 21, 2025
233b0b2
feat: 주소지 변경 기능 추가
sobaman Jan 21, 2025
9679a41
feat: 주문 api 호출 후 성공 페이지로 이동
sobaman Jan 21, 2025
63c2fa6
Merge pull request #120 from prgrms-be-devcourse/feature/fe/O-03
sobaman Jan 21, 2025
719a2b3
feat: UserProvider 닉네임 설정으로 변경
kdo1999 Jan 21, 2025
aebd79c
feat: 회원 응답 값에 nickname, role 추가
kdo1999 Jan 21, 2025
aaa246f
refactor: 관리자 페이지 수정
kdo1999 Jan 21, 2025
d1dd5a5
refactor: 로그인 페이지 수정
kdo1999 Jan 21, 2025
81e663b
Merge pull request #119 from prgrms-be-devcourse/feature/FE/M-04
kdo1999 Jan 21, 2025
019dba4
refactor: 주문시 장바구니 삭제 기능 추가
kdo1999 Jan 21, 2025
88a9b93
refactor: 주문 요청시 파라미터 변경
kdo1999 Jan 21, 2025
c03be17
refactor: 로그아웃시 메인으로 이동 기능 추가
kdo1999 Jan 21, 2025
071689d
refactor: CartList li key 값 수정
kdo1999 Jan 21, 2025
2406a9d
refactor: 상품 리스트 제거
kdo1999 Jan 21, 2025
dd36856
refactor: 비밀번호 변경시 passwordEncoder 암호화 설정
kdo1999 Jan 21, 2025
fd2d678
Update README.md
wjwj910 Jan 22, 2025
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
8 changes: 6 additions & 2 deletions backend/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,12 @@ build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/

.DS_Store
.idea/
**/.idea
**/main/resources/application.yml
**/test/resources/application.yml
../.idea
### STS ###
.apt_generated
.classpath
Expand All @@ -18,7 +23,6 @@ bin/
!**/src/test/**/bin/

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
Expand Down
13 changes: 10 additions & 3 deletions backend/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,19 @@ dependencies {
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'com.mysql:mysql-connector-j'
annotationProcessor 'org.projectlombok:lombok'
implementation 'io.jsonwebtoken:jjwt-api:0.12.3'
implementation 'io.jsonwebtoken:jjwt-impl:0.12.3'
implementation 'io.jsonwebtoken:jjwt-jackson:0.12.3'
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
implementation 'io.jsonwebtoken:jjwt-impl:0.11.5'
implementation 'io.jsonwebtoken:jjwt-jackson:0.11.5'
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
testRuntimeOnly 'com.h2database:h2'
testCompileOnly 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'

// 메일 템플릿 설정을 위한 thymeleaf
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
}

tasks.named('test') {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableAsync;

@EnableAsync
@SpringBootApplication
public class BackendApplication {

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.example.backend.domain.cart.controller;

import com.example.backend.domain.cart.dto.CartForm;
import com.example.backend.domain.cart.service.CartService;
import com.example.backend.domain.member.entity.Member;
import com.example.backend.global.auth.model.CustomUserDetails;
import com.example.backend.global.response.GenericResponse;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequiredArgsConstructor
@RequestMapping("/api/v1/carts")
public class CartController {
private final CartService cartService;

@PostMapping
public ResponseEntity<GenericResponse<Long>> addCartItem(
@RequestBody @Valid CartForm cartForm,
@AuthenticationPrincipal CustomUserDetails customUserDetails) {

Member member = customUserDetails.getMember();

Long cartId = cartService.addCartItem(cartForm, member);

return ResponseEntity.status(HttpStatus.CREATED).body(GenericResponse.of(cartId));

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package com.example.backend.domain.cart.converter;

import com.example.backend.domain.cart.dto.CartForm;
import com.example.backend.domain.cart.dto.CartResponse;
import com.example.backend.domain.cart.entity.Cart;
import com.example.backend.domain.member.entity.Member;
import com.example.backend.domain.product.entity.Product;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;

@NoArgsConstructor(access = AccessLevel.PROTECTED)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

JPA가 아니죠?
일반적으로 이런 유틸리티 클래스는 protected 가 아닌 private로 생성자를 정의하는게 좀 더 자연스럽습니다.

public class CartConverter {

/**
* CartForm -> Cart 엔티티 변환
*
* @param cartForm 요청 DTO
* @param member 회원 엔티티
* @param product 상품 엔티티
* @return Cart 엔티티
*/
public static Cart from(CartForm cartForm, Member member, Product product) {
return Cart.builder()
.member(member)
.product(product)
.quantity(cartForm.quantity())
.build();
}

/**
* Cart 엔티티 -> CartResponse 변환
*
* @param cart Cart 엔티티
* @return 응답 DTO
*/
public static CartResponse toResponse(Cart cart) {
return CartResponse.builder()
.id(cart.getId())
.productName(cart.getProduct().getName())
.quantity(cart.getQuantity())
.productPrice(cart.getProduct().getPrice())
.totalPrice(cart.getProduct().getPrice() * cart.getQuantity())
.productImgUrl(cart.getProduct().getImgUrl())
.build();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.example.backend.domain.cart.dto;

import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotNull;

public record CartForm(
@NotNull(message = "회원 ID는 필수 값입니다.")
Long memberId,
@NotNull(message = "상품 ID는 필수 값입니다.")
Long productId,
@Min(value = 1, message = "상품 수량은 최소 1개 이상이어야 합니다.")
int quantity
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.example.backend.domain.cart.dto;

import lombok.Builder;

@Builder
public record CartResponse(
Long id,
String productName,
int quantity,
int productPrice,
int totalPrice,
String productImgUrl
) {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.example.backend.domain.cart.entity;

import com.example.backend.domain.member.entity.Member;
import com.example.backend.domain.product.entity.Product;
import jakarta.persistence.*;
import lombok.*;

@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Cart {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "member_id")
private Member member;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "product_id")
private Product product;

private int quantity;

@Builder
public Cart(Long id, Member member, Product product, int quantity) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lombok을 사용한다면, 확실하게 대체 가능한 것들은 전부 사용해 주세요.

this.member = member;
this.product = product;
this.quantity = quantity;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.example.backend.domain.cart.exception;

import lombok.AllArgsConstructor;
import lombok.Getter;
import org.springframework.http.HttpStatus;

@AllArgsConstructor
@Getter
public enum CartErrorCode {
ALREADY_EXISTS_IN_CART(HttpStatus.BAD_REQUEST, "이미 장바구니에 추가된 상품입니다.", "400-1"),
INVALID_QUANTITY(HttpStatus.BAD_REQUEST,"상품을 최소 1개 이상 추가하여야 합니다." ,"400-2");

final HttpStatus httpStatus;
final String message;
final String code;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.example.backend.domain.cart.exception;

import org.springframework.http.HttpStatus;

public class CartException extends RuntimeException {
private CartErrorCode cartErrorCode;

public CartException(CartErrorCode cartErrorCode) {
super(cartErrorCode.message);
this.cartErrorCode = cartErrorCode;
}

public HttpStatus getStatus() {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lombok 대체

return cartErrorCode.httpStatus;
}

public String getCode() {
return cartErrorCode.code;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.example.backend.domain.cart.repository;

import com.example.backend.domain.cart.entity.Cart;
import org.springframework.data.jpa.repository.JpaRepository;

public interface CartRepository extends JpaRepository<Cart, Long> {

boolean existsByProductId_IdAndMemberId_Id(Long productId, Long memberId);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Google Java Convention/Naver Java Convention 모두에서, 메서드 이름에 언더스코어를 쓰지 말라고 적혀있을거에요. (일반적으로 테스트가 아니라면 메서드 이름에 언더스코어를 쓰지 않습니다.)

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package com.example.backend.domain.cart.service;

import com.example.backend.domain.cart.converter.CartConverter;
import com.example.backend.domain.cart.dto.CartForm;
import com.example.backend.domain.cart.entity.Cart;
import com.example.backend.domain.cart.exception.CartErrorCode;
import com.example.backend.domain.cart.exception.CartException;
import com.example.backend.domain.cart.repository.CartRepository;
import com.example.backend.domain.member.entity.Member;
import com.example.backend.domain.product.service.ProductService;
import com.example.backend.global.auth.exception.AuthErrorCode;
import com.example.backend.global.auth.exception.AuthException;
import jakarta.transaction.Transactional;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class CartService {

private final CartRepository cartRepository;
private final ProductService productService;

@Transactional
public Long addCartItem(CartForm cartForm, Member member) {
// 로그인한 회원과 요청한 회원이 다르면 exception 발생
if (member.getId() != cartForm.memberId()) {
throw new AuthException(AuthErrorCode.MEMBER_NOT_FOUND);
}
// 요청한 상품 ID와 수량
Long productId = cartForm.productId();
int quantity = cartForm.quantity();

// 수량이 0 이하인 경우 exception 발생
if (quantity <= 0) {
throw new CartException(CartErrorCode.INVALID_QUANTITY);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

현재 이미 Jakarta Validation 으로 검사 하고 있지 않나요?

}

// 이미 장바구니에 있는 상품인 경우 exception 발생
if (cartRepository.existsByProductId_IdAndMemberId_Id(productId, member.getId())) {
throw new CartException(CartErrorCode.ALREADY_EXISTS_IN_CART);
}

// 장바구니에 상품 추가
Cart cart = CartConverter.from(
cartForm,
member,
productService.findById(productId)
);

return cartRepository.save(cart).getId();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.example.backend.domain.common;

import jakarta.persistence.Column;
import jakarta.persistence.Embeddable;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

/**
* Address
* <p>주소지 정보를 관리하는 클래스 입니다.</p>
* @author Kim Dong O
*/
@Embeddable
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Address {
@Column(nullable = false)
private String city; //시

@Column(nullable = false)
private String district; //구

@Column(nullable = false)
private String country; //도로명 주소

@Column(nullable = false)
private String detail; //상세 주소

@Builder
public Address(String city, String district, String country, String detail) {
this.city = city;
this.district = district;
this.country = country;
this.detail = detail;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package com.example.backend.domain.common;

import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.ToString;

/**
* EmailCertification
* <p>인증 코드와 타입, 전송 횟수를 저장하는 객체 입니다.</p>
* @author Kim Dong O
*/
@Getter
@NoArgsConstructor
@ToString
public class EmailCertification {
private String certificationCode;
private String verifyType;
private String sendCount;

@Builder
public EmailCertification(String certificationCode, String verifyType, String sendCount) {
this.certificationCode = certificationCode;
this.verifyType = verifyType;
this.sendCount = sendCount;
}

public EmailCertification(String certificationCode, String verifyType) {
this.certificationCode = certificationCode;
this.verifyType = verifyType;
this.sendCount = "1";

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

혹시 이걸 String 으로 처리하는 이유가 있나요?

}

public void addResendCount() {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

미사용 메서드들이 상당히 많네요. 확인 후 제거해 주세요.

int count = Integer.parseInt(sendCount);
this.sendCount = String.valueOf(count + 1);
}

public void setCertificationCode(String certificationCode) {
this.certificationCode = certificationCode;
}
}
Loading