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

search query 수정, 상품 검색/조회 403 에러 수정 #130

Merged
merged 4 commits into from
Oct 16, 2024

Conversation

kimzinsun
Copy link
Collaborator

@kimzinsun kimzinsun commented Oct 16, 2024

🎯 What is this PR

  • �상품 검색시 단어를 완전히 적어야 검색이 되는 에러 수정
  • 상품 검색/조회시 로그인 하지 않으면 403 뜨는 에러

📄 Changes Made

  • multi match -> query String
  • 인증 필요없는 api 앞에 search 붙여주고 gateway filter startsWIth에 경로 추가

✅ Test

  • 'den' 검색 결과
    스크린샷 2024-10-16 11 48 23

🔗 Reference

Issue #129

- 상품 검색/조회할때 로그인 해야 조회되는 에러
- 결제 완료 후에 나오는 페이지 권한 없음(403) 에러
@kimzinsun kimzinsun changed the title Feat/129 search search query 수정 Oct 16, 2024
@kimzinsun kimzinsun changed the title search query 수정 search query 수정, 상품 검색/조회 403 에러 수정 Oct 16, 2024
@kimzinsun kimzinsun self-assigned this Oct 16, 2024
@kimzinsun kimzinsun added the 🛠Fix 수정 label Oct 16, 2024
@kimzinsun kimzinsun added this to the 3차 스프린트 milestone Oct 16, 2024
@kyeonkim kyeonkim merged commit 6791f37 into dev Oct 16, 2024
13 checks passed
yooyouny added a commit that referenced this pull request Nov 1, 2024
* 공통모듈에 공통객체 정의 (#7)

* chore(#6): spring data jpa 의존성 추가

* feat(#6): 공통모듈에 공통응답 객체들 추가
- 공통 커스텀 예외인 BusinessException
- 공통 응답인 ApiResponse
- Audit 속성을 정의한 BaseEntity

* 게이트웨이 모듈 생성 및 환경 설정 (#9)

* chore(#3): Gateway 모듈 생성

* chore(#3): Gateway 모듈 환경 설정
- auth, user path 추가
- eureka client 연결

* 결제 모듈 생성 (#14)

* 상품관련 모듈 추가 및 라우팅 설정  (#16)

* feat(#5): product 모듈 추가
- local 프로파일 관련 yml 설정

* feat(#5): product_dto 모듈 추가

* chore(#5): service에 product, product_dto 등록

* chore(#5): gateway에 product관련 라우팅 정보 등록

* Order, Notification 모듈 생성 (#18)

* feat(#5): 주문, 알림 모듈 생성

- 주문 모듈 생성
- 주문 개발환경 세팅
- 알림 모듈 생성
- 알림 개발환경 세팅

* Auth 모듈 생성 및 Gateway 필요없는 폴더 삭제 (#19)

* remove(#17): Gateway gradle 삭제
* chore(#17): Auth 모듈 생성

* feat(#25): 주문 DTO 모듈 생성 (#27)

* 회원가입 기능 추가 (#26)

* remove(#10): 사용하지 않는 파일 제거
- domain/.../application.properties
- user/dto

* feat(#10): 회원가입 기능 추가
- 테스트 코드 작성(서비스, api)

* refactor(#10): 유저 에러 코드 수정
- status 데이터 타입 변경 (String -> HttpStatus)

* feat(#29): gradle wrapper 오류 문제 해결 (#31)

* 슬랙 모듈 생성 (#32)

* feat(#30): 슬랙 모듈 생성

* 로그인 시 필요한 UserDto 모듈 구성 (#33)

- 사용하지 않는 resources, test 폴더 삭제

* 사용자 이름으로 조회 기능 구현 및 user.dto 수정 (#37)

* feat(#11): 로그인 시 필요한 사용자 이름으로 가져오는 API 구현
- 테스트 코드 작성

* fix(#11): user.dto 수정
- user.dto에 들어가는 클래스는 다른 서비스에서 사용해야함으로 static으로 만들면 안됨
- dto 수정에 따른 소스 코드 수정

* 상품 추가 API 구현  (#34)

* chore(#23): docker-compose.yml 등록
- kafka(zoookeeper, kafka-ui 포함), elastic-search(kibana), casandra(product에서만 쓰이는 nosqlDB) 추가

* chore(#23): product server 모듈명 변경으로 인한 설정 수정

* chore(#23): cassandra 의존성 추가 및 설정

* chore(#23): cassandra repository 추가 및 audit 설정

* feat(#23): 상품 추가 API 구현
- validation 의존성 추가
- discountPercent에 따라 discountPrice 적용
- createdAt 초기화를 위해 isNew 속성 추가

* chore(#23): Elastic Search 추가

* feat(#23): 상품등록시 elastic search에 비동기로 저장하는 로직 추가
- 검색엔진 저장용 dto인 ProductSearchDto 생성
- async 사용

* 슬랙 전송 api 생성 (#46)

* feat(#30): 슬랙 모듈 생성

* feat(#30): Message entity 생성

* feat(#30): Message Exception 생성

exception 발생시 에러 로깅

* feat(#30): slack message 전송기능 생성

* refactor(#30): message entity 수정

- user Id 제거
- base entity 상속 제거 및 send At 추가

* 장바구니 상품 개수 수정, 상품 삭제, 전체삭제 API 구현 (#43)

- 장바구니 상품 추가 API 구현 및 http 테스트 작성
- 장바구니 조회 API 구현 및 http 테스트 작성
- 장바구니 상품 개수 추가 API 구현 및 http 테스트 작성
- 장바구니 상품 삭제 API 구현 및 http 테스트 작성
- 장바구니 전체삭제 API 구현 및 http 테스트 작성
- Cart 커스텀 예외 추가 및 설정
- 장바구니 예외 핸들러 구현
- request dto 유효성 검증 추가

* 상품 수정/삭제/상태변경 API 구현 (#49)

* chore(#47): product 서버 예외 관련 클래스들 정의

* feat(#47): 상품 수정 API 구현
- spring data 카산드라는 변경감지 예외가 없어 save로 저장
- elastic search도 성능문제방지를 위해 덮어쓰기 방식으로 저장

* fix(#47): 상품조회시 isDelete가 false인것만 조회되도록 수정
- 카산드라에 수동으로 isDeleted 컬럼에 인덱스를 설정해야함

* feat(#47): 상품 삭제, 상태변경  API 구현
- DB는 soft delete처리로 isDelete값만 변경, 검색엔진은 실제로 삭제처리
- 상태변경 컬럼인 soldout 컬럼 추가

* 로그인 기능 구현 (#48)

* chore(#11): 로그인 시 필요한 UserDto 모듈 구성
- 사용하지 않는 resources, test 폴더 삭제

* feat(#11): 로그인 시 필요한 사용자 이름으로 가져오는 API 구현
- 테스트 코드 작성

* feat(#11): 로그인 기능 구현
- 테스트 코드 및 API 테스트 작성

* 장바구니 트랜잭션 적용 및 만료기한 설정 (#53)

* feat(#52): 장바구니 만료기한 설정 구현

* feat(#52): 장바구니 트랜잭션 설정 추가

* CI - build 구성 (#20)

* chore(#12): CI 구성
- dev branch에 push or PR를 날리면 build 되는지 확인 후에 merge한다.
- build.gradle이 포함된 모든 디렉토리를 돌며 build 진행
- 루트 폴더에 있는 gradlew만 사용
- GNU Parallel을 사용하여 병렬로 빌드
- service 폴더 안에서만 build.gradle을 찾도록 수정
- 각 모듈마다 테스트는 진행 X

* CI 파이프 라인 수정 (#61)

** docs(#12): CI 파이프 라인 수정
- dev에 PR 올릴 때만 build
- google-java-format 추가

* docs: [CI] dev에 push 시에도 검사하도록 수정

* Auth 모듈에서 토큰 검증 (#54)

* chore(#15): 인증 작업을 위한 auth.dto 모듈 추가
- 인증 작업 시 gateway 모듈에서 사용

* remove(#15): gateway 모듈에서 필요없는 파일 제거

* feat(#15): Auth 앱에서 토큰 검증
- 단위 테스트 작성
- 기존 JwtHandler 삭제

* user, auth  dto 수정 (#63)

* fix(#62): auth.dto > auth.auth_dto 로 수정

* fix(#62): user.dto > user.user_dto 로 수정

* remove(#62): gradle 폴더 제거

* slack dto 모듈 생성 (#56)

* feat(#30): 슬랙 모듈 생성

* feat(#30): Message entity 생성

* feat(#30): Message Exception 생성

* feat(#30): slack message 전송기능 생성

* refactor(#30): message entity 수정

* feat(#30): slack dto 모듈 생성

* 인증/인가 추가 (#64)

* feat(#15): gateway 모듈에서 검증된 토큰 헤더에 추가 후 요청 전달
* feat(#15): User 모듈에 spring security 및 커스텀 필터(헤더 파싱) 추가

* 결제 기본 API (#57)

* feat(#4): 결제 모듈 생성

* rename(#4): 폴더 구조 수정

com.sparta.payment.server -> com.sparta.payment

* feat(#4): 결제, 결제내역 Entity 생성

* rename(#4): entity 위치 변경

* feat(#4): 결제 생성 API

- toss payments 연결

* feat(#4): 결제 DB 저장

- user Id String -> Long 변경
- base entity 상속 x -> created_At 추가

* feat(#4): 예외처리 추가

* feat(#4): 결제 생성 시 history 내역 저장 추가

* feat(#4): 결제 승인 요청 로직 생성

* feat(#4): 결제 취소 로직 생성

* feat(#4): 결제 승인 추가

- 결제 완료시 주문 feign api 호출해서  주문 완료 시킬 수 있도록 구현해야 함

* feat(#4): order Id로 결제 조회

* refactor(#4): dto 구조 변경

* feat(#4): payment 조회 생성

payment 단건 조회
payment history 조회
payment 전체 조회
order Id로 payment 조회

* CI pipeline 수정 (#66)

* fix(#65): CI pipeline 수정
- on에서 push branch dev 제거
- 각 모듈을 순차적으로 빌드
- Google Java Format 추가

* fix: Google Java Format 제거
- 현재 IDE에서 사용하고 있는 포맷과 맞지 않음. 맞출려면 스크립트로 맞춰야해서 제거

* 상품 조회 API 구현 및 상품 컬럼 추가 (#67)

* feat(#59): 단일상품조회 API 구현

* feat(#59): 주문시 상품정보를 가져오는 내부 API 정의
- 요청에서 삭제된 상품정보는 아예 넘어오지 않아서 없는 경우 not found exception

* feat(#59): 상품엔티티에 필터링과 관련된 컬럼 추가
- 상품 조회시 필요한 필터링 요소로 브랜드이름, 메인컬러, 사이즈, 태그 추가 및 쿠폰여부 제거
- 태그로 "COUPON", "EXPRESS_DELIVERY", "FREE_SHIPPING", "DISCOUNT", "NEW", "1+1", "RECOMMEND"가 추가될 수 있음
- 상품 조회시 필요한 정렬 요소로 리뷰카운트, 세일즈카운트 속성 추가 나중에 리뷰추가나 주문시 해당 count 증가가 필요
- 엔티티 속성추가로 변동되는 모든 dto, mapper 요소를 함께 수정

* slack feign 연결 (#68)

* feat(#4): 결제 모듈 생성

* rename(#4): 폴더 구조 수정

com.sparta.payment.server -> com.sparta.payment

* feat(#4): 결제, 결제내역 Entity 생성

* rename(#4): entity 위치 변경

* feat(#4): 결제 생성 API

- toss payments 연결

* feat(#4): 결제 DB 저장

- user Id String -> Long 변경
- base entity 상속 x -> created_At 추가

* feat(#4): 예외처리 추가

* feat(#4): 결제 생성 시 history 내역 저장 추가

* feat(#4): 결제 승인 요청 로직 생성

* feat(#4): 결제 취소 로직 생성

* feat(#4): 결제 승인 추가

- 결제 완료시 주문 feign api 호출해서  주문 완료 시킬 수 있도록 구현해야 함

* feat(#4): order Id로 결제 조회

* refactor(#4): dto 구조 변경

* feat(#4): payment 조회 생성

payment 단건 조회
payment history 조회
payment 전체 조회
order Id로 payment 조회

* feat(#4): message feign client 연결

- 결제 생성시 유저에게 해당 결제 url 전송

* payment dto 모듈 생성  (#70)

* feat(#4): 결제 모듈 생성

* rename(#4): 폴더 구조 수정

* feat(#4): 결제, 결제내역 Entity 생성

* rename(#4): entity 위치 변경

* feat(#4): 결제 생성 API

- toss payments 연결

* feat(#4): 결제 DB 저장

* feat(#4): 예외처리 추가

* feat(#4): 결제 생성 시 history 내역 저장 추가

* feat(#4): 결제 승인 요청 로직 생성

* feat(#4): 결제 취소 로직 생성

* feat(#4): 결제 승인 추가

* feat(#4): order Id로 결제 조회

* refactor(#4): dto 구조 변경

* feat(#4): payment 조회 생성

* feat(#4): message feign client 연결

* feat(#69): payment dto 모듈 생성

* feat(#69): payment internal dto 생성

* 장바구니 API 리팩토링 (#79)

- 장바구니에 필요한 상품 서비스 FeignClient 설정 추가
- 상품 조회 내부 API 로직 변경
* 장바구니 API 리팩토링
- Redis 장바구니 데이터 구조를 상품 ID와 수량만 저장하도록 수정
- 장바구니 상품 추가 시 상품 서비스 API 를 호출하여 상품 존재 여부를 검증하도록 수정
- 장바구니 조회 시 상품 서비스 API 를 호출하여 상품 정보를 가져오는 로직 구현

* 상품 카테고리 CRUD 기능 구현 (#58)

* feat(#50): 카테고리 엔티티 정의
- 셀프참조 형식으로 정의하여 계층형 구조로 관리

* feat(#50): 카테고리 등록 API 구현
- request에서 parentId가 없다면 루트카테고리고 있으면 서브로 들어가게끔 request에 validation 처리를 하지않음
- spring data jpa도 audit 활성화

* feat(#50): 카테고리 수정 API 구현
- 카테고리의 이름, 부모카테고리 아이디를 수정할 수 있음
- 반환시 해당 카테고리에 있는 subCategory들도 한번에 볼수있게 함

* feat(#50): 카테고리 삭제 API 구현
- soft delete처리, 해당 카테고리를 parent로 가지고 있는 카테고리들도 삭제

* feat(#50): 전체 카테고리 조회 API 구현
- 패치조인으로 조회하여 서브카테고리들까지 한번에 조회
- 배치사이즈를 10으로 조정하여 10개가 넘는 카테고리 목록이면 나눠서 조회되도록 성능 개선
- 이전 API들의 requestbody 객체들의 validation 기능이 활성화되도록 수정

* feat(#50): 예외 핸들러 추가 등록
- MethodArgumentNotValidException

* feat(#50): 카테고리 캐시 적용
- response에 필요없던 is_deleted 값 삭제

* fix(#50): 카테고리 업데이트 시 서브카테고리 목록의 정보도 업데이트
- 이전 부모 카테고리의 서브카테고리 목록에서 제거해주고, 새로운 카테고리가 있으면 서브카테고리 목록에 넣어주는 작업 진행

* 등급 CRUD 기능 구현 (#73)

* feat(#41): 등급 생성, 조회, 수정, 삭제
- 단위, API 테스트 작성

* Payment internal controller 분리 (#71)

* feat(#4): 결제 모듈 생성

* rename(#4): 폴더 구조 수정

com.sparta.payment.server -> com.sparta.payment

* feat(#4): 결제, 결제내역 Entity 생성

* rename(#4): entity 위치 변경

* feat(#4): 결제 생성 API

- toss payments 연결

* feat(#4): 결제 DB 저장

- user Id String -> Long 변경
- base entity 상속 x -> created_At 추가

* feat(#4): 예외처리 추가

* feat(#4): 결제 생성 시 history 내역 저장 추가

* feat(#4): 결제 승인 요청 로직 생성

* feat(#4): 결제 취소 로직 생성

* feat(#4): 결제 승인 추가

- 결제 완료시 주문 feign api 호출해서  주문 완료 시킬 수 있도록 구현해야 함

* feat(#4): order Id로 결제 조회

* refactor(#4): dto 구조 변경

* feat(#4): payment 조회 생성

payment 단건 조회
payment history 조회
payment 전체 조회
order Id로 payment 조회

* feat(#4): message feign client 연결

- 결제 생성시 유저에게 해당 결제 url 전송

* rename(#4): payment internal controller 분리

* rename(#4): dto 위치 수정

* 포인트내역 추가 기능 구현 (#80)

* feat(#72): 포인트 내역 엔티티 추가
- User와 ManyToOne 관계 연결
- PointHistory 관련 Enum 추가

* fix(#72): UserDto 에 point 추가
- getUserByUsername 사용 시 point 반환

* feat(#72): 포인트 내역 추가 API 생성
- 포인트 내역 추가 시 유저 포인트 변동

* fix(#72): 포인트 Integer > BigDecimal 로 수정
- 주문에서 포인트 계산 시 통일성을 위해
- 이후 포인트에 소수점이 들어갈 확정성 고려

* 배송지 생성, 배송지 단일 조회 (#83)

* feat(#75): 배송지 엔티티 생성
- User와 ManyToOne 관계 연결

* feat(#75): 배송지 생성

* feat(#75): 배송지 단일 조회

* 포인트 적립 및 사용 시 사용되는 Dto 수정 (#84)

* fix(#72): point request > user_dto에 pointHistoryDto로 수정
- 내부 메서드인데 외부 메서드처럼 만들어버림

* �상품목록 검색 API 구현 (#82)

* chore(#59): elastic search, kibana에 인증 기능 활성화
- ssl 접속을 위해 security를 enable
- es 노드를 es01, es02, es03으로 구성
- 사전에 .env 세팅 필요

* chore(#59): es ssl 연결을 위한 계정정보 설정

* fix(#59): 할인정책이 없으면 discountedPrice에 originalPrice를 세팅하도록 변경

* feat(#59): 상품 목록조회 API 구현
- 카테고리 별/필터링 조건 별/정렬 별 조회를 수행하는 API
- elastic search에 java api로 직접 search 쿼리를 보내는 것으로 수행
- 현재 일시적으로 s JsonIgnoreProperties를 허용했으나 추후 수정예정

* docs(#59): update docker-compose.yml
- 덮어쓰기 되면서 누락된 product-cache 서비스를 원복

* 상품에 인증필터 적용 (#90)

* feat(#89): product server에 인증필터 추가
- security 의존성 추가

* chore(#89): product server 모듈 이름 변경

* 이벤트 쿠폰 생성 및 발급 기능 구현 (#87)

* feat(#81): promotion 모듈 추가
- 쿠폰 생성 및 이벤트 쿠폰 발급 기능 구현 예정

* feat(#81): 쿠폰 Entity 생성
- 쿠폰, 할인 enum 추가
- Promotion 에러 처리를 위한 코드 추가

* feat(#81): 이벤트 쿠폰 생성 API 구현
- 이벤트 테이블 추가 시 수정 필요

* feat(#81): 유저 쿠폰 Entity 생성

* feat(#81): 이벤트 쿠폰 발급 기능 구현

* feat(#81): 프로모션에 인증 객체 기능 import
- 이벤트 쿠폰 발급 시 인증 객체에서 유저 ID 가져오도록 수정

* fix(#81): 동시성 이슈 해결을 위한 비관적 락 사용

* CI 파이브라인 수정 (#78)

* fix(#77): CI 파이브라인 수정
- 여러 개의 서비스 빌드 과정 수정

* 결제 API 부분 수정, es 저장  (#86)

* rename(#85): mapping 경로 수정

* feat(#85): 결제 내역 es 저장 로직 추가

* feat(#85): security 필터 추가

* feat(#85): 결제 조회 queryDsl 추가

* 배송지 관련 기능 구현 (#92)

* fix(#75): 유저 권한 수정
- ROLE_CUSTOMER > ROLE_USER

* feat(#75): 내 배송지 조회 기능 구현

* feat(#75): 배송지 전제 조회

* feat(#75): 배송지 수정

* feat(#75): 배송지 삭제

* 상품 등록시 카테고리 검증 및 재고감소 내부 API 구현 (#93)

* rename(#88): 서비스를 product, category 패키지로 구분

* feat(#88): 상품등록, 수정시 카테고리 검증 로직 추가

* feat(#88): 주문시 재고감소 내부 API 구성
- 추후 동시성처리, 감소못할시 예외처리 구현이 필요 (주문개발에서 진행)

* feat(#88): 성능 비교를 위한 카산드라db에서 조회해오는 상품목록 조회 API 구현

* 결제 수정사항 반영 (#94)

* rename(#85): mapping 경로 수정

* feat(#85): 결제 내역 es 저장 로직 추가

* feat(#85): security 필터 추가

* feat(#85): 결제 조회 queryDsl 추가

* refactor(#85): 결제 완료 url 환경변수로 변경

* fix(#85): elastic search throw 제거

* feat(#85): 결제 성공시 화면 생성

* feat(#85): 결제 성공시 kafka 이벤트 발행

* 사전예약 등록, 수정, 삭제, 조회 API 구현  (#98)

* fix(#96): product 서버 라우팅 정보 변경
- 사전예약주문의 엔드포인트는 /preorders

* feat(#96): 사전예약주문 등록, 수정, 삭제, 읽기, 오픈, 취소 API 구현
- 등록, 수정시 현재 product 수량보다 적은 수량만 예약가능수량으로 등록할 수 있음
- 조회시 isPublic true인것들만 조회되도록 함
- 삭제시 soft delete처리
- 취소상태로 변경시 isPublic을 false로 처리함 추후 해당 사전예약상품을 주문, 결제한 상태도 cancelled상태로 전파시켜야함

* elastic search 검색엔진 (#105)

* feat(#76): search 모듈 생성

* feat(#76): keyword search 기능 생성

* feat(#76): 검색 필터링 추가

* feat(#76): exception 처리 로직 추가

* fix(#76): keyword 조회시 전체 검색되는 에러 수정

* feat(#76): keyword field 추가, size filter 추가

* feat(#76): sortOption 추가

* feat(#76): 정렬 조건에 리뷰순 추가

* 자동 배포 진행 (#97)

* feat(#95): docker file 및 compose 작성

* feat(#95): gitAction CI/CD flow에 배포 flow 추가

* feat(#95): git action에 artifact 업로드 및 다운로드 추가
- gitaction 환경 내에서 build 시 jar 파일을 찾지못함. artifact를 이용하여 업로드하고 Docker 작업 시 download

* refactor(#95): eureka 서비스에 server 폴더 추가
- gitaction에서 빌드 시 경로 통일을 위해

* fix(#95): Dockerfile을 변수로 설정
- local과 prod에서 복사할 파일이 다름
- local에서 실행할 때는 사용할 서비스가 빌드되어 *.jar 파일이 만들어진 상태여야 함

* fix(#95): gitAction에서 Docker, Deploy는 dev에 push 할 때만 진행

* feat(#95): 배포에 order 모듈 추가
- DB_PASSWORD 값 추가
- RDS 비밀번호 바꿔야 함

* feat(#95): 배포 시 ec2에서 기존에 저장된 모든 이미지 제거 옵션 추가

* feat(#95): 사용 중인 포트 종료 스크립트 추가

* fix(#95): build는 pr, push에서 둘 다 진행. 배포만 push에서 진행하도록 수정 (#110)

* 주문 생성 API (#111)

- 주문 엔티티 생성
- 주문 생성 로직 작성
- 포인트 사용 금액을 BigDecimal 로 변경
- 주문하는 상품의 쿠폰 사용 가능 여부 검사 추가
- 주문할 상품의 정보 조회 및 재고 확인 로직 구현
- 고유한 주문 생성 및 주문 상품 엔티티 생성 로직 구현
- 장바구니에서 주문한 상품 삭제 기능 추가
-  User 서비스에 사용자 ID로 조회하는 API 구현
- Order 서비스 사용자 인증 객체 연결
- 주문 생성 API 배송지 조회, 포인트 사용 연결
- 주문 생성 실패 시 사용자 포인트 롤백 로직 구현
- 주문 생성 실패 시 재고 감소 롤백 로직 구현
- 주문 생성 실패 시 롤백 로직 구현

* 결제 배포용 yml 생성 (#101)

* delete(#99): elastic 관련 설정 제거

* delete(#99): 기본 yml, prod yml 파일 생성

* 기본 yml, prod yml 생성 (#103)

* 검색 엔진 기본 yml, prod yml 생성 (#107)

* dev에 동시에 여러개가 merge 될 경우, 이전에 실행 중이던 dev 브랜치의 워크플로우가 취소 (#113)

* feat(#95): dev에 동시에 여러개가 merge 될 경우, 이전에 실행 중이던 dev 브랜치의 워크플로우가 취소
- 동시에 여러개가 merge 될 경우, 깃 액션은 이걸 병렬로 처리한다. 병렬로 처리할 경우, 리소스 낭비며 배포 시 충동을 발생시킬 수 있다.

* 이벤트 CRUD (#114)

* feat(#109): 이벤트 CRUD

* feat(#109): event 예외처리

* feat(#109): payment, search route 추가

* 결제 모듈 배포 진행 (#116)

* fix: docker compose에 결제 모듈 포트 변경

* 슬랙 모듈 배포 (#117)

- github secrets에 SLACK_TOKEN 값 추가
- docker-compose에 슬랙 컨테이너 추가
- slack prod 값 수정
- ecr 생성
- payment 스키마에 슬랙 테이블 추가

* 상품 모듈 배포 (#118)

- github secrets에 상품 컨테이너에 필요한 값 추가
- docker-compose에 상품 컨테이너 추가
- product application-prod.yml 생성
- product ecr 생성
- cassandra, kibana, elasticsearch 추가

* feat: 상품 배포 시 필요한 환경 변수 추가

* chore: 깃 액션에서 상품 배포 시 필요한 환경 변수 추가

* chore: 불필요한 컨테이너 정리 옵션 추가

* 결제 완료 이벤트 구독 (#119)

* feat(#115): kafka listener를 통한 결제 완료 이벤트 구독

* feat(#115): prod yml kafka 추가

* chore: 불필요한 이미지 정리 옵션 및 19061 포트 확인 코드 추가

* 주문 취소 API 구현 (#120)

* fix: elasticsearch fingerprint ec2에서 설정한 값으로 수정

* 프로모션 모듈 배포 (#121)

- promotion application.yml 분리 (local , prod)
- promotion ecr 생성
- promotion 스키마 생성

* 주문 API와 결제 API 연결 (#122)

- 주문 취소 API 구현
- 주문 생성 - 결제 연결
- order 모듈 payment_dto로 실행되는 오류 해결

* search 모듈 배포 (#125)

- search ecr 추가

* ec2 환경에서 서비스 실행 시 DB 비밀번호 문제(#124)

* chore(#95): 런타임 시 환경 변수 사용하도록 수정

* chore: search 모듈에 환경 변수 추가

* 주문 상세조회 API (#126)

* feat(#112): 주문 취소 API 구현

* feat(#112): 주문 취소 API 구현

* feat(#112): 충돌 해결

* feat(#112): 주문 생성 - 결제 연결

* feat(#112): 주문 생성 - 결제 연결 완료

* fix(#112): order 모듈 payment_dto로 실행되는 오류 해결

* feat(#112): 주문 상세조회 API 구현

* chore: 배포환경에서 카산드라 contact-points 설정

* chore: 배포환경에서 elasticsearch host 설정

* chore: 배포환경에서 search 모듈 elasticsearch host 설정

* 사전예약주문 API 구현  (#127)

* feat(#100): 카프카에서 사용하는 토픽들을 관리하는 문자열 상수 클래스를 commons에 정의

* feat(#22): Dto 모듈에 OrderDto 생성

* chore(#100): 카프카 설정 및 PreOrderProducer 등록
- 카프카 의존성 및 설정
- 오더서버로 사전예약상품 정보를 전송하는 카프카 빈 추가

* rename(#100): ProductSearchDto를 utils 패키지로 이동

* feat(#100): 사전예약주문 API 구현
- Redission 으로 분산락 구현
- validate로 사전예약주문기간, 중복여부, 사전예약수량 여부 확인

---------

Co-authored-by: linavell <linavell@naver.com>

* docs: update application-prod.yml

* fix: 시나리오 1 에러 수정

- 상품 검색/조회할때 로그인 해야 조회되는 에러
- 결제 완료 후에 나오는 페이지 권한 없음(403) 에러

* chore: 카프카 설정 수정

* chore: 카프카 설정 수정 > 0.0.0.0으로 변경

* chore: 카프카 설정 수정 > 내부 아이피로 변경
- OUTSIDE는 필요없는 거 같음

* search query 수정, 상품 검색/조회 403 에러 수정 (#130)

* fix: 시나리오 1 에러 수정

- 상품 검색/조회할때 로그인 해야 조회되는 에러
- 결제 완료 후에 나오는 페이지 권한 없음(403) 에러

* fix(#129): search 쿼리 수정

* fix: paymentService userId 누락된 값 추가

* fix: filter chain에 product/search 경로 추가

* fix: user Id 누락된 값 추가

* fix: gateway 라우팅 수정

* chore: kafka 환경 변수 수정

* chore: swap 메모리 초기화 설정

* �주문서버에 사전예약 리스너 빈 등록  (#131)

* feat(#128): elastic search dto들에서 stock값 제외

* feat(#128): order 서버에 사전주문예약을 받는 리스너 빈 등록
- OrderCreateService의 createOrder에서 dto import 필요

* 유저 엔티티에 이메일 컬럼 추가 (#134)

- 이메일 추가에 따른 dto, test 수정

* 사전예약 로직 수정 (#135)

* fix(#128): 불필요한 조회 제거, 사전예약 캐시 데이터에 Product 아이디 추가

* feat(#128): 사전예약정보 변경시 캐싱 되어있는 정보 삭제, 오픈되어있는 사전예약정보만 저장할 수 있도록 진행

* 상품서버 API 인가처리 및 AuditorAware 기능 추가 (#137)

* feat(#104): AuditorAware 기능 활성화
- createdBy, updatedBy에 username 자동으로 넣어주기

* chore(#104): 전채 공개인 조회쿼리들 permitAll처리
- 전체조회 구분을 위한 엔드포인트 search 추가
- 필터체인에서도 permit all
- 게이트웨이에도 패스하는 로직 추가

* feat(#104): securityConfig에 커스텀 핸들러 등록

* feat(#104): product 서버 API들에 인가처리
- ControllerAdvice에 핸들러 추가
- 403 퍼미션 예외 등록
- 내부 로직 확인용으로 썼던 API들 제거

* 주문 생성 오류 해결 및 주문 관련 API 구현 (#136)

- 카프카 객체 통일을 위한 OrderCreateRequest 경로 수정
- 장바구니 재고 수량 이상으로 담아지는 오류 수정
- 장바구니에 없는 상품 주문 시 결제 url 전송되는 오류 수정
- 주문 취소 / 결제 실패 시 주문 취소 로직 분리하여 구현
- 주문 상태 변경 API 구현
- 내 주문 조회 API 구현
- 사용자 internal dto email 적용 및 결제 이벤트 발행 오류 해결

* 쿠폰 관련 기능 구현 (#138)

- 쿠폰 전체 조회 API
- 쿠폰 단일 조회 API
- 특정 사용자 쿠폰 전체 조회 API
- 내 쿠폰 전체 조회 API
- 내 쿠폰 수정 API
- 내 쿠폰 삭제 API
- 내 쿠폰 사용 및 환불 API

* 사용자 관련 기능 추가 (#139)

* feat(#13): @EnableJpaAuditing 추가

* feat(#13): 마이페이지 조회 API 구현

* feat(#13): 사용자 단일 조회 API 구현

* feat(#13): 사용자 전체 조회 API 구현
- 인증/인가 테스트 API 삭제

* feat(#13): 사용자 비밀번호 재설정 API

* feat(#13): UserControllerAdvice 추가

* feat(#13): 유저 삭제 API
- soft delete 처리

* 사용자 등급 관련 기능 (#141)

* feat(#74): 사용자 등급 Entity 추가
- 유저와 OneToOne 관계
- 등급과 ManyToOne 관계

* feat(#74): 회원가입 시 사용자 등급 추가
- 회원가입 로직 수정
- 회원가입 단위 테스트 수정

* feat(#74): 현재 사용자 등급 조회 API

* feat(#74): 특정 사용자 등급 조회 API

* feat(#74): 전체 사용자 등급 조회 API

* feat(#74): 사용자 등급 수정 API

* 주문 관련 API 마무리 (#142)

* feat(#140): 주문 주소지 변경 API 구현

* feat(#140): 주문 송장번호 등록 API 구현

* feat(#140): 주문 내역 삭제 API 구현

* feat(#140): 주문 전체 조회 API 구현

* 포인트 내역 기능 구현 (#143)

* feat(#72): 특정 사용자 포인트 조회 API
- pageable 추가. 그에 따른 로직 수정

* feat(#72): 전체 사용자 포인트 조회 API

* feat(#72): 단일 포인트 내역 삭제 API

* fix: merge 시 , 빼먹음

* 주문 시 재고 감소, 재고 롤백 동시성 처리 (#147)

* feat(#145): 재고 감소, 롤백 동시성 처리
* feat(#145): 재고 감소, 롤백 동시성 처리

* 배포 리펙토링 및 카프카 UI 추가 (#149)

* chore(#148): docker compose 파일 분리
- 우리가 만든 서비시의 이미지와 외부 서비스 이미지를 분리
- 최초로 EC2 서버 실행 시 외부 서비스 이미지를 먼저 실행하고 배포를 진행해야 함 -> EC2에 접속하여 직접 진행
- docker 이미지 빌드 시 용량을 줄이기위해 slim 버전 사용 > 내부에서 build를 안하는데 build 버전을 쓰고 있었음

* chore(#148): CI, CD 분리
- dev에 PR시에는 CI만 실행
- dev에 Push시에는 CD만 실행

* chore(#148): 카프카 UI 추가

* chore(#148): 배포 환경에서 jwt secert key 환경변수로 사용

* chore(#148): 데이터소스 설정 간소화: datasource의 URL 및 username을 치환

* 외부 저장소에 상품이미지 업로드 기능 구현  (#150)

* feat(#91): AWS s3Client 설정
- 의존성 추가
- AWS Credentials 값들 추가
- product origin 버킷에 상품 원본 이미지 저장

* feat(#91): 상품 추가, 변경, 삭제 로직에 이미지 로직 추가
- 컨트롤러 request를 form-data형식으로 변경
- 생성, 수정 request에서 url제거, response에 추가
- originImgUrl, detailImgUrl, thumbnailImgUrl로 저장
- 수정시 업데이트된 이미지 저장하면서 이전 이미지는 삭제

* fix: product 환경변수명 변경 및 profile local로 변경

* chore: 도커 파일 내에 profile을 정하는 환경 변수 추가
- CI.yml, CD.yml에서 -D spring.profiles.active=prod 옵션 제거 > JVM에서 사용하는 옵션임

* 쿠폰 발행 기능 고도화 (#153)

* feat(#81): 쿠폰 발급 시 동시성 문제 해결을 비관적 락에서 분산 락으로 변경

* feat(#81): 쿠폰 발행 시 kafka 적용

* feat(#81): 쿠폰 생성 시 이벤트 유무 검사

* feat(#81): 쿠폰 발급과 사용자 쿠폰 조회 시 User 모듈을 통해 해당 유저가 존재하는지 확인

* fix: 쿠폰 발행 리스너 쪽에 로그 작성 및 주문 모듈 쪽 KafkaListener topics 이름 치환

* ELK 모니터링 시스템 (#155)

* chore(#146): 모니터링을 위한 서비스 추가
- logstash, filebeat, metricbeat 설정 관련 yml파일들

* chore(#146): product 서버 Logstash 설정

* chore(#146): application log 수집을 위한 Logstash 설정

---------

Co-authored-by: harper <35358294+yooyouny@users.noreply.github.com>

* fix(#91): 썸네일 이미지 경로도 함께 만들어서 저장 (#152)

* chore(#146): logstash conf 추가 (#156)

* 사전 예약 주문 생성 오류 해결 (#157)

fix(#154): 사전 예약 주문 생성 오류 해결 (null 체크 추가)

* chore: logstash 전송 IP 변경

* chore: logstash 전송 IP 변경

* delete: search log 제거

* chore: logstash 경로 이름 변경

* Gateway 대기열 도입 (#158)

* feat(#114): QueueFilter 추가

* feat(#114): QueueFilter 추가

* feat(#114): 사용자 활동 추적

proceed queue 내에 있는 사용자 활동 추적, 5분 이상 활동이 없으면 proceed queue에서 제거

* feat(#114): gateway Exception

* feat(#114): docker compose 수정

gateway-cache 추가

* feat(#114): MAX_ACTIVE_USERS 환경변수로 변경

* feat(#114): prod-yml gateway cache 추가

* feat(#114) : 429 error에서 현재 대기 순위 반환해주도록 리턴 변경

wait queue에서 대기시
기존 : 대기열 진입 후 429 에러 반환
변경 : 대기열 진입 후 대기 순위(rank) 반환

* refactor(#114) : active queue 제거 및 코드 간소화

* feat(#114): thread pool, redisson 설정

* feat(#114): redisson 분산락 적용

* Create README.md

* fix: 에러 로직 수정

isAllowed 누락

* fix: 에러 로직 수정

* fix: gateway 에러 로직 수정

- isAllowed 함수 누락 수정
- payment 인가 수정

* Update README.md

* fix: payments 경로 수정

---------

Co-authored-by: kyeonkim <108860425+kyeonkim@users.noreply.github.com>
Co-authored-by: Kim Jin Sun <122031650+kimzinsun@users.noreply.github.com>
Co-authored-by: eggnee <79629309+eggnee@users.noreply.github.com>
Co-authored-by: kyeonkim <kyeonkim5021@gmail.com>
Co-authored-by: linavell <linavell@naver.com>
Co-authored-by: Kim JinSeon <kwlstjs00@gmail.com>
@kimzinsun kimzinsun deleted the feat/129-search branch November 1, 2024 06:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🛠Fix 수정
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants