Skip to content

Releases: sasaping/sasaping-system

v 1.0.0

01 Nov 06:23
f9b40f5

Choose a tag to compare

버전 1.0 병합 (#159)

* 공통모듈에 공통객체 정의 (#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>