Skip to content

Commit

Permalink
[release] v1.1.0 릴리즈 (#240)
Browse files Browse the repository at this point in the history
* [deploy] merge to develop (#27)

* [deploy] merge to main (#26)

* [#2] chore(.gitignore): .gradle, .idea 파일 삭제 (#3)

* [refactor] #4 - 도메인형 디렉터리 구조 변경 및 local, dev, prod 운영 환경 분리 (#5)

* [#4] fix: 클래스 첫글자 대문자로 수정

* [#4] remove: enum 삭제

* [#4] feat(BaseSuccessCode): 성공 상태 관리를 위한 인터페이스 생성

* [#4] feat(BaseErrorCode): 에러 상태 관리를 위한 인터페이스 생성

* [#4] refactor: global 패키지로 이동

* [#4] refactor: 서버 운영 환경 분리

* [feat] #6 - dev, prod Dockerfile 분리 및 github Action CI workflow 구현 (#7)

* [#6] feat(Dockerfile): prod용 도커 파일 구현

* [#6] feat(Dockerfile-dev): dev용 도커 파일 구현

* [#6] feat(dev-CI.yml): dev용 CI workflow 구현

* [#6] feat(prod-CI.yml): prod용 CI workflow 구현

* [#6] chore(.gitignore): gradle-wrapper.jar 파일은 레포지토리에 포함되도록 설정

* [#6] fix(gradle-wrapper.jar): .gitignore로 누락된 파일 추가

* [#6] chore(build.grade): plain jar 생성 방지

* [#9] docs(README.md): 서비스 소개 README v1 작성 (#10)

* [#11] docs(README.md): 리드미 업데이트 (#12)

* [feat] #13 - 유저, 예매, 공연, 회차 엔티티 생성 (#15)

* [#13] feat(Users): 사용자 엔티티 생성

* [#13] feat(Genre): 장르 열거형 생성

* [#13] feat(BankName): 은행명 열거형 생성

* [#13] refactor(BaseTimeEntity): 업데이트 시간 관리 필드 활성화

* [#13] feat(Performance): 공연 엔티티 생성

* [#13] feat(ScheduleNumber): 회차 번호 열거형 생성

* [#13] feat(Schedule): 회차 엔티티 생성

* [#13] feat(Booking): 예매 엔티티 생성

* [#13] refactor(ScheduleNumber): 네이밍 수정

* [feat] #14 - 회원, 홍보, 등장인물, 스태프 엔티티 생성 (#16)

* [#14] feat(Member): 멤버 엔티티 생성

* [#14] feat(Promotion): 홍보 엔티티 생성

* [#14] feat(Cast): 등장인물 엔티티 생성

* [#14] feat(Staff): 스태프 엔티티 생성

* [feat] #13 - 유저, 예매, 공연, 회차 엔티티 생성 (#15)

* [#13] feat(Users): 사용자 엔티티 생성

* [#13] feat(Genre): 장르 열거형 생성

* [#13] feat(BankName): 은행명 열거형 생성

* [#13] refactor(BaseTimeEntity): 업데이트 시간 관리 필드 활성화

* [#13] feat(Performance): 공연 엔티티 생성

* [#13] feat(ScheduleNumber): 회차 번호 열거형 생성

* [#13] feat(Schedule): 회차 엔티티 생성

* [#13] feat(Booking): 예매 엔티티 생성

* [#13] refactor(ScheduleNumber): 네이밍 수정

* [#14} fix: 스태프, 등장인물, 홍보 엔티티 상속관계 수정

---------

Co-authored-by: DongHoon Lee <[email protected]>

* [#18] feat(Jenkinsfile): 젠킨스 파일 생성 (#19)

* [#20] refactor(Jenkinsfile): 젠킨스 파일 Webhook 테스트용 커밋 (#21)

* [#22] feat(Jenkinsfile): Jenkins multibranch 스크립트 작성 (#23)

* HOTFIX(Jenkinsfile): Jenkins multibranch 스크립트 수정

* HOTFIX(workflows): 빌드 후 젠킨스 배포가 진행되도록 수정

* HOTFIX(workflows): Jenkinsfile 스크립트 수정

* HOTFIX(workflows): Jenkinsfile 스크립트 수정

* HOTFIX(workflows): Jenkinsfile 스크립트 수정

* HOTFIX(workflows): Jenkinsfile 스크립트 수정

* [#24] feat(Jenkinsfile): slack 연동 스크립트 작성 (#25)

---------

Co-authored-by: hyerinhwang-sailin <[email protected]>

* HOTFIX(workflow): 오타 수정

---------

Co-authored-by: hyerinhwang-sailin <[email protected]>

* [feat] #28 - 비회원 예매 조회 POST API 구현 (#29)

* chore(application-dev.yml): dialect 추가

* chore(application-prod.yml): dialect 추가

* [#28] chore(build.gradle): security 의존성 비활성화

- security 일시적으로 비활성화

* [#28] refactor(Booking): 예매 엔티티에 빌더 및 정적팩토리 메서드 추가

* [#28] refactor(ErrorResponse): 정적 팩토리 메서드 네이밍 변환

* [#28] refactor(Schedule): 회차 엔티티에 빌더 및 정적 팩토리 메서드 추가

* [#28] refactor(Performance): 공연 엔티티에 빌더 및 정적 팩토리 메서드 추가

* [#28] refactor(SuccessResponse): 정적 팩토리 메서드 네이밍 변환

* [#28] refactor(GlobalExceptionHandler): INTERNAL_SERVER_ERROR 핸들러 메서드 추가

* [#28] feat(BookingSuccessCode): 예매 성공 메시지를 관리하는 열거형 생성

* [#28] feat(BookingErrorCode): 예매 에러 메시지를 관리하는 열거형 생성

* [#28] feat(BookingRetrieveResponse): 예매 조회 응답 DTO 생성

* [#28] feat(BookingRetrieveRequest): 예매 조회 요청 DTO 생성

* [#28] feat(BookingRepository): 예매 레포지토리 생성 및 비회원 예매 조회 시 예매 내역 가져오는 메서드 구현

* [#28] feat(BookingService): 예매 서비스 레이어 생성 및 비회원 조회 메서드 구현

* [#28] feat(BookingController): 예매 컨트롤러 생성 및 비회원 예매조회 POST API 구현

* [feat] #30 - SwaggerConfig 및 WebConfig 구현 (#31)

* [#30] chore(build.gradle): springdoc 의존성 추가

* [#30] feat(SwaggerConfig): SwaggerConfig 추가

* [#30] feat(WebConfig): WebConfig 추가

* HOTFIX(workflows): push 이벤트 시 github action이 빌드 되지 않도록 수정

* HOTFIX(Jenkinsfile): 포트 수정

* [feat] #32 - 티켓 예매 가능 여부 GET API 구현 (#33)

* [#32] refactor(BookingController): 메서드명 수정

* [#32] feat(ConflictException): Conflict 409에러 클래스 생성

* [#32] feat(GlobalExceptionHandler): ConflictException 등록

* [#32] feat(TicketAvailabilityRequest): TicketAvailabilityRequest DTO 생성

* [#32] feat(TicketAvailabilityResponse): TicketAvailabilityResponse DTO 생성

* [#32] feat(ScheduleSuccessCode): ScheduleSuccessCode 열거형 생성

* [#32] feat(ScheduleErrorCode): ScheduleErrorCode 열거형 생성

* [#32] feat(ScheduleRepository): ScheduleRepository 생성

* [#32] feat(ScheduleService): ScheduleService 생성 및 회차별 티켓 구매 가능 여부 판단 메서드 구현

* [#32] feat(ScheduleController): 회차별 티켓 수량 조회 GET API 구현

* [feat] #17 - 카카오 소셜 로그인 API 구현 (#36)

* [#17] feat(build.gradle): jwt, security, open feign, Redis 의존성 추가

* [#17] feat(BeatApplication): OpenFeign 관련 어노테이션 추가

* [#17] feat(RedisConfig): redis 설정

* [#17] feat: redis 활용 jwt 토큰 생성 로직 구현

* [#17] feat(SecurityConfig): security 설정

* [#17] refactor: Member, Users 엔티티 수정 및 관련 enum 추가

* [#17] feat: Member, Users 도메인 관련 인증 로직 구현

* [#17] feat(MemberController): Member 관련 API 엔드포인트 구현

* [#17] feat: Security 관련 인증 객체 구현

* [#17] feat: 소셜로그인 로직 구현

* [#17] fix: 소셜로그인 오류 해결

* [#17] refactor: 코드리뷰 반영

* [#17] refactor: 코드리뷰 반영

---------

Co-authored-by: DongHoon Lee <[email protected]>

* [feat] #34 - 비회원 예매 POST API 구현 (#35)

* [#34] feat(Users): 빌더 및 정적 팩토리 메서드 추가

* [#34] feat(Entity): 엔티티 id 필드 수정

* [#34] refactor(application.yml): dialect 추가

* [#34] refactor(ScheduleService): 네이밍 수정

* [#34] refactor(BookingSuccessCode): 비회원 예매 조회 성공 메시지 추가

* [#34] feat(GuestBookingRequest): 비회원 예매 요청 DTO 생성

* [#34] feat(GuestBookingResponse): 비회원 예매 응답 DTO 생성

* [#34] refactor(BookingRetrieveService): 네이밍 수정

* [#34] feat(PerformanceRepository): 공연 레포지토리 생성

* [#34] feat(UserRepository): 유저 레포지토리 생성

* [#34] refactor(BookingRepository): 비회원 예매 시 네가지 정보가 모두 일치 해야만 다른 유저로 판단하는 메서드 구현

* [#34] refactor(ScheduleRepository): 비관적 락 적용

* [#34] feat(GuestBookingService): 비관적 락을 이용해 비회원 예매 로직 구현

* [#34] feat(BookingController): 비회원 예매 POST API 구현

* [#34] test(GuestBookingServiceConcurrencyTest): 동시성 테스트 구현

* [Refactor] #37 - 카카오 로그인 API response 수정 (#39)

* [#37] rename: 빈 충돌 해결 위해 UserRepository를 UsersRepository로 rename

* [#37] refactor: login response에서 refreshToken을 cookie에 담아주도록 변경

* [#37] fix: dao, repository 충돌 해결

* [#37] refactor: 어노테이션 수정

* [feat] #40 - 소개 관련 공연 정보 조회 GET API 구현 (#41)

* [#40] feat: repository 추가

* [#40] feat: 공연 관련 성공, 실패 메세지 추가

* [#40] feat(PerformanceDetailResponse): 공연 상세페이지 조회 응답 dto

* [#40] feat(PerformanceService): 공연 상세페이지 조회 로직 구현

* [#40] feat(PerformanceController): 공연 상세페이지 엔드포인트 구현

* [#40] feat(SecurityConfig): auth whitelist update

* [#40] refactor: dto 분리 및 rename

* [feat] #42 - 예매 관련 공연 정보 GET API 구현 (#43)

* [#42] feat: 예매 관련 정보 조회 dto 생성

* [#42] feat: 예매 관련 정보 조회 성공 메세지 추가

* [#42] feat(ScheduleService): 잔여티켓계산, 예매가능여부확인, 예매가능여부 update 메소드 구현

* [#42] feat(PerformanceService): 예매관련공연정보의 response 생성하는 로직 구현

* [#42] feat(PerformanceController): 예매관련공연정보 조회 엔드포인트 구현

* [#42] feat(SecurityConfig): auth_whitelist update

* [#42] refactor(ScheduleService): findTicketAvailability에서 getAvailableTicketCount method 사용하도록 수정

* [feat] #38 - 회원 예매 POST API 구현 (#45)

* [#38] fix(Cast): Join 하는 부분 수정 및 빌더와 정적 팩토리 메서드 패턴 도입

* [#38] chore(application.yml): 계층 수정

* [#38] feat: 커스텀 어노테이션 생성

* [#38] fix(UserRepository): 중복된 클래스 삭제

* [#38] feat(UserErrorCode): 유저의 에러 메시지를 관리하는 열거형 생성

* [#38] refactor(MemberErrorCode): message 목적에 맞게 변경

* [#38] refactor(BookingSuccessCode): 회원 예매 성공 메시지 추가

* [#38] feat: 커스텀 어노테이션 생성 커밋에 누락된 클래스 추가

* [#38] refactor(GuestBookingService): schedule에서 바로 get 하도록 수정

* [#38] test(GuestBookingServiceConcurrencyTest): import문 경로명 변경

* [#38] refactor(MemberService): @Transactional 어노테이션이 필요한 메서드에 해당 옵션 추가

* [#38] feat(MemberBookingRequest): 회원 예매 요청 DTO 생성

* [#38] feat(MemberBookingResponse): 회원 예매 응답 DTO 생성

* [#38] refactor(MemberController): refreshToken을 쿠키에 넣어주도록 구현

* [#38] feat(MemberBookingService): 회원 예매 서비스 로직 구현

* [#38] feat(BookingController): 회원 예매 요청 POST API 구현

* [#38] fix: 빌드 안되는 부분 수정

* [#38] remove(MemberBookingService): 사용하지 않는 import문 삭제

* [#38] refactor: 커스텀 어노테이션 이름 수정

* [feat] #44 - 홈페이지 공연 및 홍보 조회 GET API 구현 (#47)

* [#44] refactor: 코드리뷰 반영

* [#44] fix(Promotion): 기본키 이름 수정, performanceId 연관관계 설정

* [#44] feat: Repository 및 관련 로직 추가

* [#44] feat: errorcode, successcode 추가

* [#44] feat: 홈페이지 request, response dto 생성

* [#44] feat(ScheduleService): dueDate 관련 로직 구현

* [#44] feat(PerformanceService): 홈페이지 정렬 및 response 생성 로직 구현

* [#44] chore: import문 추가

* [feat] #46 - 회원 예매 조회 GET API 구현 (#48)

* [#46] remove(BookingRetrieveRequest): 클래스 삭제

* [#46] refactor(BookingSuccessCode): 회원 예매 조회 성공 메시지 추가

* [#46] refactor(GuestBookingRetrieveResponse): 클래스 명 변경

* [#46] refactor(GuestBookingRetrieveRequest): 안쓰는 코드 주석처리

* [#46] refactor(GuestBookingRetrieveService): 클래스 명 수정으로 인한 리팩토링

* [#46] refactor(SecurityConfig): 토큰 사용하지 않는 api 경로 추가하기

* [#46] refactor(BookingRepository): userId로 예약 정보를 가져오는 JPA 메서드 구현

* [#46] feat(MemberBookingRetrieveResponse): 회원 조회 응답 DTO 생성

* [#46] feat(MemberBookingRetrieveService): 회원 예매 조회 로직을 담당하는 서비스 레이어 구현

* [#46] feat(BookingController): 회원 예매 조회 GET API 구현

* [feat] #49 - 예매자 관리 API 구현 (#51)

* [#49] feat: 티켓 관련 success, error code 추가

* [#49] feat(Booking): 입금여부 setter 메소드 추가

* [#49] feat(TicketRetrieveResponse): 예매자 확인 response dto 생성

* [#49] feat(Ticket): 예매자 확인용 티켓 정보 response dto 생성

* [#49] feat(TicketRepository): 예매자 필터링용 메소드 생성

* [#49] feat: 예매자 입금정보 수정 request dto 생성

* [#49] feat(TicketDeleteRequest): 예매자 삭제 request dto 생성

* [#49] feat(TicketService): 예매자 관리 관련 로직 구현

* [#49] feat(TicketController): 예매자 관리 엔드포인트 구현

* [#49] chore: swagger annotation 추가

* HOTFIX(SecurityConfig): WHITELIST 경로명 수정

* [fix] #52 - auth whitelist 수정 (#53)

* [#52]fix(SecurityConfig): auth_whitelist 수정

* [#52]fix(SecurityConfig): auth_whitelist 수정

---------

Co-authored-by: DongHoon Lee <[email protected]>

* [feat] #54 - 등록한 공연 목록 조회 GET API 구현 (#55)

* [#54] feat(PerformanceSuccessCode): success code 추가

* [#54] feat: 회원이 등록한 공연목록 조회 dto 생성

* [#54] feat(PerformanceService): 회원이 등록한 공연목록 조회 로직 구현

* [#54] feat(PerformanceRepository): 회원이 등록한 공연목록 조회 관련 메소드 추가

* [#54] feat(PerformanceController): 회원이 등록한 공연목록 조회 엔드포인트 생성

* [#54] fix(TicketService): exception error 수정

* [#54] chore(application.yml): yml 수정

* [fix] #58 - dev-ci.yml, prod-ci.yml 환경변수 추가  (#59)

* [#58] fix(dev-CI.yml): Dev 서버 CI 워크플로우 수정

* [#58] fix(prod-CI.yml): Prod 서버 CI 워크플로우 수정

* [refactor] #61 - Performance Entity field 추가 (#62)

* [#61] refactor(Performance): bankHolder 필드 추가

* [#61] chore(BookingController): swagger annotation 수정

* [feat] #63 - healthCheckController 생성 (#64)

* [#63] remove(UsersRepository): 중복 클래스 삭제

* [#63] feat(HealthCheckController): healthcheck 컨트롤러 생성

* [feat] #63 - health check URL 화이트리스트에 등록 (#67)

* [#63] remove(UsersRepository): 중복 클래스 삭제

* [#63] feat(HealthCheckController): healthcheck 컨트롤러 생성

* [#63] feat(SecurityConfig): healthcheck url white_list에 등록

* [fix] #57 -  entity 연관관계 설정  SecurityConfig 수정 (#65)

* [#57] refactor: entity 연관관계 설정 및 수정

* [#57] fix(SecurityConfig): auth_whitelist update

* [#57] chore(UsersRepository): 중복된 파일 및 불필요한 패키지 제거

* [#57] refactor(SecurityConfig): auth_whitelist update

* [#57] refactor: 엔티티 정적팩토리 메소드 추가

* [#57] comment(SecurityConfig): 주석 제거

---------

Co-authored-by: DongHoon Lee <[email protected]>

* [fix] #57 - security 관련 에러 대응 (#71)

* [#57] refactor: entity 연관관계 설정 및 수정

* [#57] fix(SecurityConfig): auth_whitelist update

* [#57] chore(UsersRepository): 중복된 파일 및 불필요한 패키지 제거

* [#57] refactor(SecurityConfig): auth_whitelist update

* [#57] refactor: 엔티티 정적팩토리 메소드 추가

* [#57] comment(SecurityConfig): 주석 제거

* [#57] fix(JwtAuthenticationFilter): 에러 로직 수정

* fix(SecurityConfig): webSecurityCustomizer 로직 추가

* [fix] #73 - security 수정 (#74)

* [#57] refactor: entity 연관관계 설정 및 수정

* [#57] fix(SecurityConfig): auth_whitelist update

* [#57] chore(UsersRepository): 중복된 파일 및 불필요한 패키지 제거

* [#57] refactor(SecurityConfig): auth_whitelist update

* [#57] refactor: 엔티티 정적팩토리 메소드 추가

* [#57] comment(SecurityConfig): 주석 제거

* [#57] fix(JwtAuthenticationFilter): 에러 로직 수정

* fix(SecurityConfig): webSecurityCustomizer 로직 추가

* [#57] fix:security 수정

* [#76] fix(SecurityConfig): Base64 인코딩을 하도록 변경 (#77)

* [fix] #76 - 누락된 코드 추가 (#79)

* [#76] fix(SecurityConfig): Base64 인코딩을 하도록 변경

* [#76] chore(SecurityConfig): 누락된 import문 추가

* [#76] chore(JwtTokenProvider): 누락된 코드 추가

* [#81] fix(JwtTokenProvider): jwtsecret을 인코딩하고 디코딩을 하도록 수정 (#82)

* [#85] chore(application.yml): 환경변수 설정 (#86)

* [chore] #88 - 레디스 환경변수 추가 (#89)

* [#88] chore(dev-CI.yml): dev서버 레디스 환경변수 설정 추가

* [#88] chore(prod-CI.yml): prod 서버 레디스 환경변수 설정 추가

* [deploy] merge to main (#90)

* [deploy] merge to main (#83)

* [deploy] merge to develop (#27)

* [deploy] merge to main (#26)

* [#2] chore(.gitignore): .gradle, .idea 파일 삭제 (#3)

* [refactor] #4 - 도메인형 디렉터리 구조 변경 및 local, dev, prod 운영 환경 분리 (#5)

* [#4] fix: 클래스 첫글자 대문자로 수정

* [#4] remove: enum 삭제

* [#4] feat(BaseSuccessCode): 성공 상태 관리를 위한 인터페이스 생성

* [#4] feat(BaseErrorCode): 에러 상태 관리를 위한 인터페이스 생성

* [#4] refactor: global 패키지로 이동

* [#4] refactor: 서버 운영 환경 분리

* [feat] #6 - dev, prod Dockerfile 분리 및 github Action CI workflow 구현 (#7)

* [#6] feat(Dockerfile): prod용 도커 파일 구현

* [#6] feat(Dockerfile-dev): dev용 도커 파일 구현

* [#6] feat(dev-CI.yml): dev용 CI workflow 구현

* [#6] feat(prod-CI.yml): prod용 CI workflow 구현

* [#6] chore(.gitignore): gradle-wrapper.jar 파일은 레포지토리에 포함되도록 설정

* [#6] fix(gradle-wrapper.jar): .gitignore로 누락된 파일 추가

* [#6] chore(build.grade): plain jar 생성 방지

* [#9] docs(README.md): 서비스 소개 README v1 작성 (#10)

* [#11] docs(README.md): 리드미 업데이트 (#12)

* [feat] #13 - 유저, 예매, 공연, 회차 엔티티 생성 (#15)

* [#13] feat(Users): 사용자 엔티티 생성

* [#13] feat(Genre): 장르 열거형 생성

* [#13] feat(BankName): 은행명 열거형 생성

* [#13] refactor(BaseTimeEntity): 업데이트 시간 관리 필드 활성화

* [#13] feat(Performance): 공연 엔티티 생성

* [#13] feat(ScheduleNumber): 회차 번호 열거형 생성

* [#13] feat(Schedule): 회차 엔티티 생성

* [#13] feat(Booking): 예매 엔티티 생성

* [#13] refactor(ScheduleNumber): 네이밍 수정

* [feat] #14 - 회원, 홍보, 등장인물, 스태프 엔티티 생성 (#16)

* [#14] feat(Member): 멤버 엔티티 생성

* [#14] feat(Promotion): 홍보 엔티티 생성

* [#14] feat(Cast): 등장인물 엔티티 생성

* [#14] feat(Staff): 스태프 엔티티 생성

* [feat] #13 - 유저, 예매, 공연, 회차 엔티티 생성 (#15)

* [#13] feat(Users): 사용자 엔티티 생성

* [#13] feat(Genre): 장르 열거형 생성

* [#13] feat(BankName): 은행명 열거형 생성

* [#13] refactor(BaseTimeEntity): 업데이트 시간 관리 필드 활성화

* [#13] feat(Performance): 공연 엔티티 생성

* [#13] feat(ScheduleNumber): 회차 번호 열거형 생성

* [#13] feat(Schedule): 회차 엔티티 생성

* [#13] feat(Booking): 예매 엔티티 생성

* [#13] refactor(ScheduleNumber): 네이밍 수정

* [#14} fix: 스태프, 등장인물, 홍보 엔티티 상속관계 수정

---------

Co-authored-by: DongHoon Lee <[email protected]>

* [#18] feat(Jenkinsfile): 젠킨스 파일 생성 (#19)

* [#20] refactor(Jenkinsfile): 젠킨스 파일 Webhook 테스트용 커밋 (#21)

* [#22] feat(Jenkinsfile): Jenkins multibranch 스크립트 작성 (#23)

* HOTFIX(Jenkinsfile): Jenkins multibranch 스크립트 수정

* HOTFIX(workflows): 빌드 후 젠킨스 배포가 진행되도록 수정

* HOTFIX(workflows): Jenkinsfile 스크립트 수정

* HOTFIX(workflows): Jenkinsfile 스크립트 수정

* HOTFIX(workflows): Jenkinsfile 스크립트 수정

* HOTFIX(workflows): Jenkinsfile 스크립트 수정

* [#24] feat(Jenkinsfile): slack 연동 스크립트 작성 (#25)

---------

Co-authored-by: hyerinhwang-sailin <[email protected]>

* HOTFIX(workflow): 오타 수정

---------

Co-authored-by: hyerinhwang-sailin <[email protected]>

* [feat] #28 - 비회원 예매 조회 POST API 구현 (#29)

* chore(application-dev.yml): dialect 추가

* chore(application-prod.yml): dialect 추가

* [#28] chore(build.gradle): security 의존성 비활성화

- security 일시적으로 비활성화

* [#28] refactor(Booking): 예매 엔티티에 빌더 및 정적팩토리 메서드 추가

* [#28] refactor(ErrorResponse): 정적 팩토리 메서드 네이밍 변환

* [#28] refactor(Schedule): 회차 엔티티에 빌더 및 정적 팩토리 메서드 추가

* [#28] refactor(Performance): 공연 엔티티에 빌더 및 정적 팩토리 메서드 추가

* [#28] refactor(SuccessResponse): 정적 팩토리 메서드 네이밍 변환

* [#28] refactor(GlobalExceptionHandler): INTERNAL_SERVER_ERROR 핸들러 메서드 추가

* [#28] feat(BookingSuccessCode): 예매 성공 메시지를 관리하는 열거형 생성

* [#28] feat(BookingErrorCode): 예매 에러 메시지를 관리하는 열거형 생성

* [#28] feat(BookingRetrieveResponse): 예매 조회 응답 DTO 생성

* [#28] feat(BookingRetrieveRequest): 예매 조회 요청 DTO 생성

* [#28] feat(BookingRepository): 예매 레포지토리 생성 및 비회원 예매 조회 시 예매 내역 가져오는 메서드 구현

* [#28] feat(BookingService): 예매 서비스 레이어 생성 및 비회원 조회 메서드 구현

* [#28] feat(BookingController): 예매 컨트롤러 생성 및 비회원 예매조회 POST API 구현

* [feat] #30 - SwaggerConfig 및 WebConfig 구현 (#31)

* [#30] chore(build.gradle): springdoc 의존성 추가

* [#30] feat(SwaggerConfig): SwaggerConfig 추가

* [#30] feat(WebConfig): WebConfig 추가

* HOTFIX(workflows): push 이벤트 시 github action이 빌드 되지 않도록 수정

* HOTFIX(Jenkinsfile): 포트 수정

* [feat] #32 - 티켓 예매 가능 여부 GET API 구현 (#33)

* [#32] refactor(BookingController): 메서드명 수정

* [#32] feat(ConflictException): Conflict 409에러 클래스 생성

* [#32] feat(GlobalExceptionHandler): ConflictException 등록

* [#32] feat(TicketAvailabilityRequest): TicketAvailabilityRequest DTO 생성

* [#32] feat(TicketAvailabilityResponse): TicketAvailabilityResponse DTO 생성

* [#32] feat(ScheduleSuccessCode): ScheduleSuccessCode 열거형 생성

* [#32] feat(ScheduleErrorCode): ScheduleErrorCode 열거형 생성

* [#32] feat(ScheduleRepository): ScheduleRepository 생성

* [#32] feat(ScheduleService): ScheduleService 생성 및 회차별 티켓 구매 가능 여부 판단 메서드 구현

* [#32] feat(ScheduleController): 회차별 티켓 수량 조회 GET API 구현

* [feat] #17 - 카카오 소셜 로그인 API 구현 (#36)

* [#17] feat(build.gradle): jwt, security, open feign, Redis 의존성 추가

* [#17] feat(BeatApplication): OpenFeign 관련 어노테이션 추가

* [#17] feat(RedisConfig): redis 설정

* [#17] feat: redis 활용 jwt 토큰 생성 로직 구현

* [#17] feat(SecurityConfig): security 설정

* [#17] refactor: Member, Users 엔티티 수정 및 관련 enum 추가

* [#17] feat: Member, Users 도메인 관련 인증 로직 구현

* [#17] feat(MemberController): Member 관련 API 엔드포인트 구현

* [#17] feat: Security 관련 인증 객체 구현

* [#17] feat: 소셜로그인 로직 구현

* [#17] fix: 소셜로그인 오류 해결

* [#17] refactor: 코드리뷰 반영

* [#17] refactor: 코드리뷰 반영

---------

Co-authored-by: DongHoon Lee <[email protected]>

* [feat] #34 - 비회원 예매 POST API 구현 (#35)

* [#34] feat(Users): 빌더 및 정적 팩토리 메서드 추가

* [#34] feat(Entity): 엔티티 id 필드 수정

* [#34] refactor(application.yml): dialect 추가

* [#34] refactor(ScheduleService): 네이밍 수정

* [#34] refactor(BookingSuccessCode): 비회원 예매 조회 성공 메시지 추가

* [#34] feat(GuestBookingRequest): 비회원 예매 요청 DTO 생성

* [#34] feat(GuestBookingResponse): 비회원 예매 응답 DTO 생성

* [#34] refactor(BookingRetrieveService): 네이밍 수정

* [#34] feat(PerformanceRepository): 공연 레포지토리 생성

* [#34] feat(UserRepository): 유저 레포지토리 생성

* [#34] refactor(BookingRepository): 비회원 예매 시 네가지 정보가 모두 일치 해야만 다른 유저로 판단하는 메서드 구현

* [#34] refactor(ScheduleRepository): 비관적 락 적용

* [#34] feat(GuestBookingService): 비관적 락을 이용해 비회원 예매 로직 구현

* [#34] feat(BookingController): 비회원 예매 POST API 구현

* [#34] test(GuestBookingServiceConcurrencyTest): 동시성 테스트 구현

* [Refactor] #37 - 카카오 로그인 API response 수정 (#39)

* [#37] rename: 빈 충돌 해결 위해 UserRepository를 UsersRepository로 rename

* [#37] refactor: login response에서 refreshToken을 cookie에 담아주도록 변경

* [#37] fix: dao, repository 충돌 해결

* [#37] refactor: 어노테이션 수정

* [feat] #40 - 소개 관련 공연 정보 조회 GET API 구현 (#41)

* [#40] feat: repository 추가

* [#40] feat: 공연 관련 성공, 실패 메세지 추가

* [#40] feat(PerformanceDetailResponse): 공연 상세페이지 조회 응답 dto

* [#40] feat(PerformanceService): 공연 상세페이지 조회 로직 구현

* [#40] feat(PerformanceController): 공연 상세페이지 엔드포인트 구현

* [#40] feat(SecurityConfig): auth whitelist update

* [#40] refactor: dto 분리 및 rename

* [feat] #42 - 예매 관련 공연 정보 GET API 구현 (#43)

* [#42] feat: 예매 관련 정보 조회 dto 생성

* [#42] feat: 예매 관련 정보 조회 성공 메세지 추가

* [#42] feat(ScheduleService): 잔여티켓계산, 예매가능여부확인, 예매가능여부 update 메소드 구현

* [#42] feat(PerformanceService): 예매관련공연정보의 response 생성하는 로직 구현

* [#42] feat(PerformanceController): 예매관련공연정보 조회 엔드포인트 구현

* [#42] feat(SecurityConfig): auth_whitelist update

* [#42] refactor(ScheduleService): findTicketAvailability에서 getAvailableTicketCount method 사용하도록 수정

* [feat] #38 - 회원 예매 POST API 구현 (#45)

* [#38] fix(Cast): Join 하는 부분 수정 및 빌더와 정적 팩토리 메서드 패턴 도입

* [#38] chore(application.yml): 계층 수정

* [#38] feat: 커스텀 어노테이션 생성

* [#38] fix(UserRepository): 중복된 클래스 삭제

* [#38] feat(UserErrorCode): 유저의 에러 메시지를 관리하는 열거형 생성

* [#38] refactor(MemberErrorCode): message 목적에 맞게 변경

* [#38] refactor(BookingSuccessCode): 회원 예매 성공 메시지 추가

* [#38] feat: 커스텀 어노테이션 생성 커밋에 누락된 클래스 추가

* [#38] refactor(GuestBookingService): schedule에서 바로 get 하도록 수정

* [#38] test(GuestBookingServiceConcurrencyTest): import문 경로명 변경

* [#38] refactor(MemberService): @Transactional 어노테이션이 필요한 메서드에 해당 옵션 추가

* [#38] feat(MemberBookingRequest): 회원 예매 요청 DTO 생성

* [#38] feat(MemberBookingResponse): 회원 예매 응답 DTO 생성

* [#38] refactor(MemberController): refreshToken을 쿠키에 넣어주도록 구현

* [#38] feat(MemberBookingService): 회원 예매 서비스 로직 구현

* [#38] feat(BookingController): 회원 예매 요청 POST API 구현

* [#38] fix: 빌드 안되는 부분 수정

* [#38] remove(MemberBookingService): 사용하지 않는 import문 삭제

* [#38] refactor: 커스텀 어노테이션 이름 수정

* [feat] #44 - 홈페이지 공연 및 홍보 조회 GET API 구현 (#47)

* [#44] refactor: 코드리뷰 반영

* [#44] fix(Promotion): 기본키 이름 수정, performanceId 연관관계 설정

* [#44] feat: Repository 및 관련 로직 추가

* [#44] feat: errorcode, successcode 추가

* [#44] feat: 홈페이지 request, response dto 생성

* [#44] feat(ScheduleService): dueDate 관련 로직 구현

* [#44] feat(PerformanceService): 홈페이지 정렬 및 response 생성 로직 구현

* [#44] chore: import문 추가

* [feat] #46 - 회원 예매 조회 GET API 구현 (#48)

* [#46] remove(BookingRetrieveRequest): 클래스 삭제

* [#46] refactor(BookingSuccessCode): 회원 예매 조회 성공 메시지 추가

* [#46] refactor(GuestBookingRetrieveResponse): 클래스 명 변경

* [#46] refactor(GuestBookingRetrieveRequest): 안쓰는 코드 주석처리

* [#46] refactor(GuestBookingRetrieveService): 클래스 명 수정으로 인한 리팩토링

* [#46] refactor(SecurityConfig): 토큰 사용하지 않는 api 경로 추가하기

* [#46] refactor(BookingRepository): userId로 예약 정보를 가져오는 JPA 메서드 구현

* [#46] feat(MemberBookingRetrieveResponse): 회원 조회 응답 DTO 생성

* [#46] feat(MemberBookingRetrieveService): 회원 예매 조회 로직을 담당하는 서비스 레이어 구현

* [#46] feat(BookingController): 회원 예매 조회 GET API 구현

* [feat] #49 - 예매자 관리 API 구현 (#51)

* [#49] feat: 티켓 관련 success, error code 추가

* [#49] feat(Booking): 입금여부 setter 메소드 추가

* [#49] feat(TicketRetrieveResponse): 예매자 확인 response dto 생성

* [#49] feat(Ticket): 예매자 확인용 티켓 정보 response dto 생성

* [#49] feat(TicketRepository): 예매자 필터링용 메소드 생성

* [#49] feat: 예매자 입금정보 수정 request dto 생성

* [#49] feat(TicketDeleteRequest): 예매자 삭제 request dto 생성

* [#49] feat(TicketService): 예매자 관리 관련 로직 구현

* [#49] feat(TicketController): 예매자 관리 엔드포인트 구현

* [#49] chore: swagger annotation 추가

* HOTFIX(SecurityConfig): WHITELIST 경로명 수정

* [fix] #52 - auth whitelist 수정 (#53)

* [#52]fix(SecurityConfig): auth_whitelist 수정

* [#52]fix(SecurityConfig): auth_whitelist 수정

---------

Co-authored-by: DongHoon Lee <[email protected]>

* [feat] #54 - 등록한 공연 목록 조회 GET API 구현 (#55)

* [#54] feat(PerformanceSuccessCode): success code 추가

* [#54] feat: 회원이 등록한 공연목록 조회 dto 생성

* [#54] feat(PerformanceService): 회원이 등록한 공연목록 조회 로직 구현

* [#54] feat(PerformanceRepository): 회원이 등록한 공연목록 조회 관련 메소드 추가

* [#54] feat(PerformanceController): 회원이 등록한 공연목록 조회 엔드포인트 생성

* [#54] fix(TicketService): exception error 수정

* [#54] chore(application.yml): yml 수정

* [fix] #58 - dev-ci.yml, prod-ci.yml 환경변수 추가  (#59)

* [#58] fix(dev-CI.yml): Dev 서버 CI 워크플로우 수정

* [#58] fix(prod-CI.yml): Prod 서버 CI 워크플로우 수정

* [refactor] #61 - Performance Entity field 추가 (#62)

* [#61] refactor(Performance): bankHolder 필드 추가

* [#61] chore(BookingController): swagger annotation 수정

* [feat] #63 - healthCheckController 생성 (#64)

* [#63] remove(UsersRepository): 중복 클래스 삭제

* [#63] feat(HealthCheckController): healthcheck 컨트롤러 생성

* [feat] #63 - health check URL 화이트리스트에 등록 (#67)

* [#63] remove(UsersRepository): 중복 클래스 삭제

* [#63] feat(HealthCheckController): healthcheck 컨트롤러 생성

* [#63] feat(SecurityConfig): healthcheck url white_list에 등록

* [fix] #57 -  entity 연관관계 설정  SecurityConfig 수정 (#65)

* [#57] refactor: entity 연관관계 설정 및 수정

* [#57] fix(SecurityConfig): auth_whitelist update

* [#57] chore(UsersRepository): 중복된 파일 및 불필요한 패키지 제거

* [#57] refactor(SecurityConfig): auth_whitelist update

* [#57] refactor: 엔티티 정적팩토리 메소드 추가

* [#57] comment(SecurityConfig): 주석 제거

---------

Co-authored-by: DongHoon Lee <[email protected]>

* [fix] #57 - security 관련 에러 대응 (#71)

* [#57] refactor: entity 연관관계 설정 및 수정

* [#57] fix(SecurityConfig): auth_whitelist update

* [#57] chore(UsersRepository): 중복된 파일 및 불필요한 패키지 제거

* [#57] refactor(SecurityConfig): auth_whitelist update

* [#57] refactor: 엔티티 정적팩토리 메소드 추가

* [#57] comment(SecurityConfig): 주석 제거

* [#57] fix(JwtAuthenticationFilter): 에러 로직 수정

* fix(SecurityConfig): webSecurityCustomizer 로직 추가

* [fix] #73 - security 수정 (#74)

* [#57] refactor: entity 연관관계 설정 및 수정

* [#57] fix(SecurityConfig): auth_whitelist update

* [#57] chore(UsersRepository): 중복된 파일 및 불필요한 패키지 제거

* [#57] refactor(SecurityConfig): auth_whitelist update

* [#57] refactor: 엔티티 정적팩토리 메소드 추가

* [#57] comment(SecurityConfig): 주석 제거

* [#57] fix(JwtAuthenticationFilter): 에러 로직 수정

* fix(SecurityConfig): webSecurityCustomizer 로직 추가

* [#57] fix:security 수정

* [#76] fix(SecurityConfig): Base64 인코딩을 하도록 변경 (#77)

* [fix] #76 - 누락된 코드 추가 (#79)

* [#76] fix(SecurityConfig): Base64 인코딩을 하도록 변경

* [#76] chore(SecurityConfig): 누락된 import문 추가

* [#76] chore(JwtTokenProvider): 누락된 코드 추가

* [#81] fix(JwtTokenProvider): jwtsecret을 인코딩하고 디코딩을 하도록 수정 (#82)

---------

Co-authored-by: hyerinhwang-sailin <[email protected]>

* [deploy] merge to main (#87)

* [deploy] merge to develop (#27)

* [deploy] merge to main (#26)

* [#2] chore(.gitignore): .gradle, .idea 파일 삭제 (#3)

* [refactor] #4 - 도메인형 디렉터리 구조 변경 및 local, dev, prod 운영 환경 분리 (#5)

* [#4] fix: 클래스 첫글자 대문자로 수정

* [#4] remove: enum 삭제

* [#4] feat(BaseSuccessCode): 성공 상태 관리를 위한 인터페이스 생성

* [#4] feat(BaseErrorCode): 에러 상태 관리를 위한 인터페이스 생성

* [#4] refactor: global 패키지로 이동

* [#4] refactor: 서버 운영 환경 분리

* [feat] #6 - dev, prod Dockerfile 분리 및 github Action CI workflow 구현 (#7)

* [#6] feat(Dockerfile): prod용 도커 파일 구현

* [#6] feat(Dockerfile-dev): dev용 도커 파일 구현

* [#6] feat(dev-CI.yml): dev용 CI workflow 구현

* [#6] feat(prod-CI.yml): prod용 CI workflow 구현

* [#6] chore(.gitignore): gradle-wrapper.jar 파일은 레포지토리에 포함되도록 설정

* [#6] fix(gradle-wrapper.jar): .gitignore로 누락된 파일 추가

* [#6] chore(build.grade): plain jar 생성 방지

* [#9] docs(README.md): 서비스 소개 README v1 작성 (#10)

* [#11] docs(README.md): 리드미 업데이트 (#12)

* [feat] #13 - 유저, 예매, 공연, 회차 엔티티 생성 (#15)

* [#13] feat(Users): 사용자 엔티티 생성

* [#13] feat(Genre): 장르 열거형 생성

* [#13] feat(BankName): 은행명 열거형 생성

* [#13] refactor(BaseTimeEntity): 업데이트 시간 관리 필드 활성화

* [#13] feat(Performance): 공연 엔티티 생성

* [#13] feat(ScheduleNumber): 회차 번호 열거형 생성

* [#13] feat(Schedule): 회차 엔티티 생성

* [#13] feat(Booking): 예매 엔티티 생성

* [#13] refactor(ScheduleNumber): 네이밍 수정

* [feat] #14 - 회원, 홍보, 등장인물, 스태프 엔티티 생성 (#16)

* [#14] feat(Member): 멤버 엔티티 생성

* [#14] feat(Promotion): 홍보 엔티티 생성

* [#14] feat(Cast): 등장인물 엔티티 생성

* [#14] feat(Staff): 스태프 엔티티 생성

* [feat] #13 - 유저, 예매, 공연, 회차 엔티티 생성 (#15)

* [#13] feat(Users): 사용자 엔티티 생성

* [#13] feat(Genre): 장르 열거형 생성

* [#13] feat(BankName): 은행명 열거형 생성

* [#13] refactor(BaseTimeEntity): 업데이트 시간 관리 필드 활성화

* [#13] feat(Performance): 공연 엔티티 생성

* [#13] feat(ScheduleNumber): 회차 번호 열거형 생성

* [#13] feat(Schedule): 회차 엔티티 생성

* [#13] feat(Booking): 예매 엔티티 생성

* [#13] refactor(ScheduleNumber): 네이밍 수정

* [#14} fix: 스태프, 등장인물, 홍보 엔티티 상속관계 수정

---------

Co-authored-by: DongHoon Lee <[email protected]>

* [#18] feat(Jenkinsfile): 젠킨스 파일 생성 (#19)

* [#20] refactor(Jenkinsfile): 젠킨스 파일 Webhook 테스트용 커밋 (#21)

* [#22] feat(Jenkinsfile): Jenkins multibranch 스크립트 작성 (#23)

* HOTFIX(Jenkinsfile): Jenkins multibranch 스크립트 수정

* HOTFIX(workflows): 빌드 후 젠킨스 배포가 진행되도록 수정

* HOTFIX(workflows): Jenkinsfile 스크립트 수정

* HOTFIX(workflows): Jenkinsfile 스크립트 수정

* HOTFIX(workflows): Jenkinsfile 스크립트 수정

* HOTFIX(workflows): Jenkinsfile 스크립트 수정

* [#24] feat(Jenkinsfile): slack 연동 스크립트 작성 (#25)

---------

Co-authored-by: hyerinhwang-sailin <[email protected]>

* HOTFIX(workflow): 오타 수정

---------

Co-authored-by: hyerinhwang-sailin <[email protected]>

* [feat] #28 - 비회원 예매 조회 POST API 구현 (#29)

* chore(application-dev.yml): dialect 추가

* chore(application-prod.yml): dialect 추가

* [#28] chore(build.gradle): security 의존성 비활성화

- security 일시적으로 비활성화

* [#28] refactor(Booking): 예매 엔티티에 빌더 및 정적팩토리 메서드 추가

* [#28] refactor(ErrorResponse): 정적 팩토리 메서드 네이밍 변환

* [#28] refactor(Schedule): 회차 엔티티에 빌더 및 정적 팩토리 메서드 추가

* [#28] refactor(Performance): 공연 엔티티에 빌더 및 정적 팩토리 메서드 추가

* [#28] refactor(SuccessResponse): 정적 팩토리 메서드 네이밍 변환

* [#28] refactor(GlobalExceptionHandler): INTERNAL_SERVER_ERROR 핸들러 메서드 추가

* [#28] feat(BookingSuccessCode): 예매 성공 메시지를 관리하는 열거형 생성

* [#28] feat(BookingErrorCode): 예매 에러 메시지를 관리하는 열거형 생성

* [#28] feat(BookingRetrieveResponse): 예매 조회 응답 DTO 생성

* [#28] feat(BookingRetrieveRequest): 예매 조회 요청 DTO 생성

* [#28] feat(BookingRepository): 예매 레포지토리 생성 및 비회원 예매 조회 시 예매 내역 가져오는 메서드 구현

* [#28] feat(BookingService): 예매 서비스 레이어 생성 및 비회원 조회 메서드 구현

* [#28] feat(BookingController): 예매 컨트롤러 생성 및 비회원 예매조회 POST API 구현

* [feat] #30 - SwaggerConfig 및 WebConfig 구현 (#31)

* [#30] chore(build.gradle): springdoc 의존성 추가

* [#30] feat(SwaggerConfig): SwaggerConfig 추가

* [#30] feat(WebConfig): WebConfig 추가

* HOTFIX(workflows): push 이벤트 시 github action이 빌드 되지 않도록 수정

* HOTFIX(Jenkinsfile): 포트 수정

* [feat] #32 - 티켓 예매 가능 여부 GET API 구현 (#33)

* [#32] refactor(BookingController): 메서드명 수정

* [#32] feat(ConflictException): Conflict 409에러 클래스 생성

* [#32] feat(GlobalExceptionHandler): ConflictException 등록

* [#32] feat(TicketAvailabilityRequest): TicketAvailabilityRequest DTO 생성

* [#32] feat(TicketAvailabilityResponse): TicketAvailabilityResponse DTO 생성

* [#32] feat(ScheduleSuccessCode): ScheduleSuccessCode 열거형 생성

* [#32] feat(ScheduleErrorCode): ScheduleErrorCode 열거형 생성

* [#32] feat(ScheduleRepository): ScheduleRepository 생성

* [#32] feat(ScheduleService): ScheduleService 생성 및 회차별 티켓 구매 가능 여부 판단 메서드 구현

* [#32] feat(ScheduleController): 회차별 티켓 수량 조회 GET API 구현

* [feat] #17 - 카카오 소셜 로그인 API 구현 (#36)

* [#17] feat(build.gradle): jwt, security, open feign, Redis 의존성 추가

* [#17] feat(BeatApplication): OpenFeign 관련 어노테이션 추가

* [#17] feat(RedisConfig): redis 설정

* [#17] feat: redis 활용 jwt 토큰 생성 로직 구현

* [#17] feat(SecurityConfig): security 설정

* [#17] refactor: Member, Users 엔티티 수정 및 관련 enum 추가

* [#17] feat: Member, Users 도메인 관련 인증 로직 구현

* [#17] feat(MemberController): Member 관련 API 엔드포인트 구현

* [#17] feat: Security 관련 인증 객체 구현

* [#17] feat: 소셜로그인 로직 구현

* [#17] fix: 소셜로그인 오류 해결

* [#17] refactor: 코드리뷰 반영

* [#17] refactor: 코드리뷰 반영

---------

Co-authored-by: DongHoon Lee <[email protected]>

* [feat] #34 - 비회원 예매 POST API 구현 (#35)

* [#34] feat(Users): 빌더 및 정적 팩토리 메서드 추가

* [#34] feat(Entity): 엔티티 id 필드 수정

* [#34] refactor(application.yml): dialect 추가

* [#34] refactor(ScheduleService): 네이밍 수정

* [#34] refactor(BookingSuccessCode): 비회원 예매 조회 성공 메시지 추가

* [#34] feat(GuestBookingRequest): 비회원 예매 요청 DTO 생성

* [#34] feat(GuestBookingResponse): 비회원 예매 응답 DTO 생성

* [#34] refactor(BookingRetrieveService): 네이밍 수정

* [#34] feat(PerformanceRepository): 공연 레포지토리 생성

* [#34] feat(UserRepository): 유저 레포지토리 생성

* [#34] refactor(BookingRepository): 비회원 예매 시 네가지 정보가 모두 일치 해야만 다른 유저로 판단하는 메서드 구현

* [#34] refactor(ScheduleRepository): 비관적 락 적용

* [#34] feat(GuestBookingService): 비관적 락을 이용해 비회원 예매 로직 구현

* [#34] feat(BookingController): 비회원 예매 POST API 구현

* [#34] test(GuestBookingServiceConcurrencyTest): 동시성 테스트 구현

* [Refactor] #37 - 카카오 로그인 API response 수정 (#39)

* [#37] rename: 빈 충돌 해결 위해 UserRepository를 UsersRepository로 rename

* [#37] refactor: login response에서 refreshToken을 cookie에 담아주도록 변경

* [#37] fix: dao, repository 충돌 해결

* [#37] refactor: 어노테이션 수정

* [feat] #40 - 소개 관련 공연 정보 조회 GET API 구현 (#41)

* [#40] feat: repository 추가

* [#40] feat: 공연 관련 성공, 실패 메세지 추가

* [#40] feat(PerformanceDetailResponse): 공연 상세페이지 조회 응답 dto

* [#40] feat(PerformanceService): 공연 상세페이지 조회 로직 구현

* [#40] feat(PerformanceController): 공연 상세페이지 엔드포인트 구현

* [#40] feat(SecurityConfig): auth whitelist update

* [#40] refactor: dto 분리 및 rename

* [feat] #42 - 예매 관련 공연 정보 GET API 구현 (#43)

* [#42] feat: 예매 관련 정보 조회 dto 생성

* [#42] feat: 예매 관련 정보 조회 성공 메세지 추가

* [#42] feat(ScheduleService): 잔여티켓계산, 예매가능여부확인, 예매가능여부 update 메소드 구현

* [#42] feat(PerformanceService): 예매관련공연정보의 response 생성하는 로직 구현

* [#42] feat(PerformanceController): 예매관련공연정보 조회 엔드포인트 구현

* [#42] feat(SecurityConfig): auth_whitelist update

* [#42] refactor(ScheduleService): findTicketAvailability에서 getAvailableTicketCount method 사용하도록 수정

* [feat] #38 - 회원 예매 POST API 구현 (#45)

* [#38] fix(Cast): Join 하는 부분 수정 및 빌더와 정적 팩토리 메서드 패턴 도입

* [#38] chore(application.yml): 계층 수정

* [#38] feat: 커스텀 어노테이션 생성

* [#38] fix(UserRepository): 중복된 클래스 삭제

* [#38] feat(UserErrorCode): 유저의 에러 메시지를 관리하는 열거형 생성

* [#38] refactor(MemberErrorCode): message 목적에 맞게 변경

* [#38] refactor(BookingSuccessCode): 회원 예매 성공 메시지 추가

* [#38] feat: 커스텀 어노테이션 생성 커밋에 누락된 클래스 추가

* [#38] refactor(GuestBookingService): schedule에서 바로 get 하도록 수정

* [#38] test(GuestBookingServiceConcurrencyTest): import문 경로명 변경

* [#38] refactor(MemberService): @Transactional 어노테이션이 필요한 메서드에 해당 옵션 추가

* [#38] feat(MemberBookingRequest): 회원 예매 요청 DTO 생성

* [#38] feat(MemberBookingResponse): 회원 예매 응답 DTO 생성

* [#38] refactor(MemberController): refreshToken을 쿠키에 넣어주도록 구현

* [#38] feat(MemberBookingService): 회원 예매 서비스 로직 구현

* [#38] feat(BookingController): 회원 예매 요청 POST API 구현

* [#38] fix: 빌드 안되는 부분 수정

* [#38] remove(MemberBookingService): 사용하지 않는 import문 삭제

* [#38] refactor: 커스텀 어노테이션 이름 수정

* [feat] #44 - 홈페이지 공연 및 홍보 조회 GET API 구현 (#47)

* [#44] refactor: 코드리뷰 반영

* [#44] fix(Promotion): 기본키 이름 수정, performanceId 연관관계 설정

* [#44] feat: Repository 및 관련 로직 추가

* [#44] feat: errorcode, successcode 추가

* [#44] feat: 홈페이지 request, response dto 생성

* [#44] feat(ScheduleService): dueDate 관련 로직 구현

* [#44] feat(PerformanceService): 홈페이지 정렬 및 response 생성 로직 구현

* [#44] chore: import문 추가

* [feat] #46 - 회원 예매 조회 GET API 구현 (#48)

* [#46] remove(BookingRetrieveRequest): 클래스 삭제

* [#46] refactor(BookingSuccessCode): 회원 예매 조회 성공 메시지 추가

* [#46] refactor(GuestBookingRetrieveResponse): 클래스 명 변경

* [#46] refactor(GuestBookingRetrieveRequest): 안쓰는 코드 주석처리

* [#46] refactor(GuestBookingRetrieveService): 클래스 명 수정으로 인한 리팩토링

* [#46] refactor(SecurityConfig): 토큰 사용하지 않는 api 경로 추가하기

* [#46] refactor(BookingRepository): userId로 예약 정보를 가져오는 JPA 메서드 구현

* [#46] feat(MemberBookingRetrieveResponse): 회원 조회 응답 DTO 생성

* [#46] feat(MemberBookingRetrieveService): 회원 예매 조회 로직을 담당하는 서비스 레이어 구현

* [#46] feat(BookingController): 회원 예매 조회 GET API 구현

* [feat] #49 - 예매자 관리 API 구현 (#51)

* [#49] feat: 티켓 관련 success, error code 추가

* [#49] feat(Booking): 입금여부 setter 메소드 추가

* [#49] feat(TicketRetrieveResponse): 예매자 확인 response dto 생성

* [#49] feat(Ticket): 예매자 확인용 티켓 정보 response dto 생성

* [#49] feat(TicketRepository): 예매자 필터링용 메소드 생성

* [#49] feat: 예매자 입금정보 수정 request dto 생성

* [#49] feat(TicketDeleteRequest): 예매자 삭제 request dto 생성

* [#49] feat(TicketService): 예매자 관리 관련 로직 구현

* [#49] feat(TicketController): 예매자 관리 엔드포인트 구현

* [#49] chore: swagger annotation 추가

* HOTFIX(SecurityConfig): WHITELIST 경로명 수정

* [fix] #52 - auth whitelist 수정 (#53)

* [#52]fix(SecurityConfig): auth_whitelist 수정

* [#52]fix(SecurityConfig): auth_whitelist 수정

---------

Co-authored-by: DongHoon Lee <[email protected]>

* [feat] #54 - 등록한 공연 목록 조회 GET API 구현 (#55)

* [#54] feat(PerformanceSuccessCode): success code 추가

* [#54] feat: 회원이 등록한 공연목록 조회 dto 생성

* [#54] feat(PerformanceService): 회원이 등록한 공연목록 조회 로직 구현

* [#54] feat(PerformanceRepository): 회원이 등록한 공연목록 조회 관련 메소드 추가

* [#54] feat(PerformanceController): 회원이 등록한 공연목록 조회 엔드포인트 생성

* [#54] fix(TicketService): exception error 수정

* [#54] chore(application.yml): yml 수정

* [fix] #58 - dev-ci.yml, prod-ci.yml 환경변수 추가  (#59)

* [#58] fix(dev-CI.yml): Dev 서버 CI 워크플로우 수정

* [#58] fix(prod-CI.yml): Prod 서버 CI 워크플로우 수정

* [refactor] #61 - Performance Entity field 추가 (#62)

* [#61] refactor(Performance): bankHolder 필드 추가

* [#61] chore(BookingController): swagger annotation 수정

* [feat] #63 - healthCheckController 생성 (#64)

* [#63] remove(UsersRepository): 중복 클래스 삭제

* [#63] feat(HealthCheckController): healthcheck 컨트롤러 생성

* [feat] #63 - health check URL 화이트리스트에 등록 (#67)

* [#63] remove(UsersRepository): 중복 클래스 삭제

* [#63] feat(HealthCheckController): healthcheck 컨트롤러 생성

* [#63] feat(SecurityConfig): healthcheck url white_list에 등록

* [fix] #57 -  entity 연관관계 설정  SecurityConfig 수정 (#65)

* [#57] refactor: entity 연관관계 설정 및 수정

* [#57] fix(SecurityConfig): auth_whitelist update

* [#57] chore(UsersRepository): 중복된 파일 및 불필요한 패키지 제거

* [#57] refactor(SecurityConfig): auth_whitelist update

* [#57] refactor: 엔티티 정적팩토리 메소드 추가

* [#57] comment(SecurityConfig): 주석 제거

---------

Co-authored-by: DongHoon Lee <[email protected]>

* [fix] #57 - security 관련 에러 대응 (#71)

* [#57] refactor: entity 연관관계 설정 및 수정

* [#57] fix(SecurityConfig): auth_whitelist update

* [#57] chore(UsersRepository): 중복된 파일 및 불필요한 패키지 제거

* [#57] refactor(SecurityConfig): auth_whitelist update

* [#57] refactor: 엔티티 정적팩토리 메소드 추가

* [#57] comment(SecurityConfig): 주석 제거

* [#57] fix(JwtAuthenticationFilter): 에러 로직 수정

* fix(SecurityConfig): webSecurityCustomizer 로직 추가

* [fix] #73 - security 수정 (#74)

* [#57] refactor: entity 연관관계 설정 및 수정

* [#57] fix(SecurityConfig): auth_whitelist update

* [#57] chore(UsersRepository): 중복된 파일 및 불필요한 패키지 제거

* [#57] refactor(SecurityConfig): auth_whitelist update

* [#57] refactor: 엔티티 정적팩토리 메소드 추가

* [#57] comment(SecurityConfig): 주석 제거

* [#57] fix(JwtAuthenticationFilter): 에러 로직 수정

* fix(SecurityConfig): webSecurityCustomizer 로직 추가

* [#57] fix:security 수정

* [#76] fix(SecurityConfig): Base64 인코딩을 하도록 변경 (#77)

* [fix] #76 - 누락된 코드 추가 (#79)

* [#76] fix(SecurityConfig): Base64 인코딩을 하도록 변경

* [#76] chore(SecurityConfig): 누락된 import문 추가

* [#76] chore(JwtTokenProvider): 누락된 코드 추가

* [#81] fix(JwtTokenProvider): jwtsecret을 인코딩하고 디코딩을 하도록 수정 (#82)

* [#85] chore(application.yml): 환경변수 설정 (#86)

---------

Co-authored-by: hyerinhwang-sailin <[email protected]>

---------

Co-authored-by: hyerinhwang-sailin <[email protected]>

* Revert "[deploy] merge to main (#90)" (#91)

This reverts commit f519b0c82a2f01d4374eb045b9e90c6303381e50.

* [fix] #93 - 누락된 어노테이션 및 누락된 경로명 추가 (#94)

* [#93] fix(HealthCheckController): 누락된 어노테이션 추가

* [#93] refactor(SecurityConfig): 누락된 경로명 추가

* [bug] #84 - actuator/health 의존성 및 설정 추가 (#96)

* [#84] chore(build.gradle): 의존성 추가

* [#84] chore: health/actuator yml 설정 추가

* [#84] chore: redis yml 설정 추가

* [#84] chore: yml 수정 (#99)

* [bug] #101 - yml, s3 수정 (#102)

* [#101] chore: yml 수정

* [#101] feat: s3 추가

* HOTIFX: prod ci-yml 수정

* Main redis host yml 수정 (#105)

* [deploy] merge to main (#104)

* [deploy] merge to develop (#27)

* [deploy] merge to main (#26)

* [#2] chore(.gitignore): .gradle, .idea 파일 삭제 (#3)

* [refactor] #4 - 도메인형 디렉터리 구조 변경 및 local, dev, prod 운영 환경 분리 (#5)

* [#4] fix: 클래스 첫글자 대문자로 수정

* [#4] remove: enum 삭제

* [#4] feat(BaseSuccessCode): 성공 상태 관리를 위한 인터페이스 생성

* [#4] feat(BaseErrorCode): 에러 상태 관리를 위한 인터페이스 생성

* [#4] refactor: global 패키지로 이동

* [#4] refactor: 서버 운영 환경 분리

* [feat] #6 - dev, prod Dockerfile 분리 및 github Action CI workflow 구현 (#7)

* [#6] feat(Dockerfile): prod용 도커 파일 구현

* [#6] feat(Dockerfile-dev): dev용 도커 파일 구현

* [#6] feat(dev-CI.yml): dev용 CI workflow 구현

* [#6] feat(prod-CI.yml): prod용 CI workflow 구현

* [#6] chore(.gitignore): gradle-wrapper.jar 파일은 레포지토리에 포함되도록 설정

* [#6] fix(gradle-wrapper.jar): .gitignore로 누락된 파일 추가

* [#6] chore(build.grade): plain jar 생성 방지

* [#9] docs(README.md): 서비스 소개 README v1 작성 (#10)

* [#11] docs(README.md): 리드미 업데이트 (#12)

* [feat] #13 - 유저, 예매, 공연, 회차 엔티티 생성 (#15)

* [#13] feat(Users): 사용자 엔티티 생성

* [#13] feat(Genre): 장르 열거형 생성

* [#13] feat(BankName): 은행명 열거형 생성

* [#13] refactor(BaseTimeEntity): 업데이트 시간 관리 필드 활성화

* [#13] feat(Performance): 공연 엔티티 생성

* [#13] feat(ScheduleNumber): 회차 번호 열거형 생성

* [#13] feat(Schedule): 회차 엔티티 생성

* [#13] feat(Booking): 예매 엔티티 생성

* [#13] refactor(ScheduleNumber): 네이밍 수정

* [feat] #14 - 회원, 홍보, 등장인물, 스태프 엔티티 생성 (#16)

* [#14] feat(Member): 멤버 엔티티 생성

* [#14] feat(Promotion): 홍보 엔티티 생성

* [#14] feat(Cast): 등장인물 엔티티 생성

* [#14] feat(Staff): 스태프 엔티티 생성

* [feat] #13 - 유저, 예매, 공연, 회차 엔티티 생성 (#15)

* [#13] feat(Users): 사용자 엔티티 생성

* [#13] feat(Genre): 장르 열거형 생성

* [#13] feat(BankName): 은행명 열거형 생성

* [#13] refactor(BaseTimeEntity): 업데이트 시간 관리 필드 활성화

* [#13] feat(Performance): 공연 엔티티 생성

* [#13] feat(ScheduleNumber): 회차 번호 열거형 생성

* [#13] feat(Schedule): 회차 엔티티 생성

* [#13] feat(Booking): 예매 엔티티 생성

* [#13] refactor(ScheduleNumber): 네이밍 수정

* [#14} fix: 스태프, 등장인물, 홍보 엔티티 상속관계 수정

---------

Co-authored-by: DongHoon Lee <[email protected]>

* [#18] feat(Jenkinsfile): 젠킨스 파일 생성 (#19)

* [#20] refactor(Jenkinsfile): 젠킨스 파일 Webhook 테스트용 커밋 (#21)

* [#22] feat(Jenkinsfile): Jenkins multibranch 스크립트 작성 (#23)

* HOTFIX(Jenkinsfile): Jenkins multibranch 스크립트 수정

* HOTFIX(workflows): 빌드 후 젠킨스 배포가 진행되도록 수정

* HOTFIX(workflows): Jenkinsfile 스크립트 수정

* HOTFIX(workflows): Jenkinsfile 스크립트 수정

* HOTFIX(workflows): Jenkinsfile 스크립트 수정

* HOTFIX(workflows): Jenkinsfile 스크립트 수정

* [#24] feat(Jenkinsfile): slack 연동 스크립트 작성 (#25)

---------

Co-authored-by: hyerinhwang-sailin <[email protected]>

* HOTFIX(workflow): 오타 수정

---------

Co-authored-by: hyerinhwang-sailin <[email protected]>

* [feat] #28 - 비회원 예매 조회 POST API 구현 (#29)

* chore(application-dev.yml): dialect 추가

* chore(application-prod.yml): dialect 추가

* [#28] chore(build.gradle): security 의존성 비활성화

- security 일시적으로 비활성화

* [#28] refactor(Booking): 예매 엔티티에 빌더 및 정적팩토리 메서드 추가

* [#28] refactor(ErrorResponse): 정적 팩토리 메서드 네이밍 변환

* [#28] refactor(Schedule): 회차 엔티티에 빌더 및 정적 팩토리 메서드 추가

* [#28] refactor(Performance): 공연 엔티티에 빌더 및 정적 팩토리 메서드 추가

* [#28] refactor(SuccessResponse): 정적 팩토리 메서드 네이밍 변환

* [#28] refactor(GlobalExceptionHandler): INTERNAL_SERVER_ERROR 핸들러 메서드 추가

* [#28] feat(BookingSuccessCode): 예매 성공 메시지를 관리하는 열거형 생성

* [#28] feat(BookingErrorCode): 예매 에러 메시지를 관리하는 열거형 생성

* [#28] feat(BookingRetrieveResponse): 예매 조회 응답 DTO 생성

* [#28] feat(BookingRetrieveRequest): 예매 조회 요청 DTO 생성

* [#28] feat(BookingRepository): 예매 레포지토리 생성 및 비회원 예매 조회 시 예매 내역 가져오는 메서드 구현

* [#28] feat(BookingService): 예매 서비스 레이어 생성 및 비회원 조회 메서드 구현

* [#28] feat(BookingController): 예매 컨트롤러 생성 및 비회원 예매조회 POST API 구현

* [feat] #30 - SwaggerConfig 및 WebConfig 구현 (#31)

* [#30] chore(build.gradle): springdoc 의존성 추가

* [#30] feat(SwaggerConfig): SwaggerConfig 추가

* [#30] feat(WebConfig): WebConfig 추가

* HOTFIX(workflows): push 이벤트 시 github action이 빌드 되지 않도록 수정

* HOTFIX(Jenkinsfile): 포트 수정

* [feat] #32 - 티켓 예매 가능 여부 GET API 구현 (#33)

* [#32] refactor(BookingController): 메서드명 수정

* [#32] feat(ConflictException): Conflict 409에러 클래스 생성

* [#32] feat(GlobalExceptionHandler): ConflictException 등록

* [#32] feat(TicketAvailabilityRequest): TicketAvailabilityRequest DTO 생성

* [#32] feat(TicketAvailabilityResponse): TicketAvailabilityResponse DTO 생성

* [#32] feat(ScheduleSuccessCode): ScheduleSuccessCode 열거형 생성

* [#32] feat(ScheduleErrorCode): ScheduleErrorCode 열거형 생성

* [#32] feat(ScheduleRepository): ScheduleRepository 생성

* [#32] feat(ScheduleService): ScheduleService 생성 및 회차별 티켓 구매 가능 여부 판단 메서드 구현

* [#32] feat(ScheduleController): 회차별 티켓 수량 조회 GET API 구현

* [feat] #17 - 카카오 소셜 로그인 API 구현 (#36)

* [#17] feat(build.gradle): jwt, security, open feign, Redis 의존성 추가

* [#17] feat(BeatApplication): OpenFeign 관련 어노테이션 추가

* [#17] feat(RedisConfig): redis 설정

* [#17] feat: redis 활용 jwt 토큰 생성 로직 구현

* [#17] feat(SecurityConfig): security 설정

* [#17] refactor: Member, Users 엔티티 수정 및 관련 enum 추가

* [#17] feat: Member, Users 도메인 관련 인증 로직 구현

* [#17] feat(MemberController): Member 관련 API 엔드포인트 구현

* [#17] feat: Security 관련 인증 객체 구현

* [#17] feat: 소셜로그인 로직 구현

* [#17] fix: 소셜로그인 오류 해결

* [#17] refactor: 코드리뷰 반영

* [#17] refactor: 코드리뷰 반영

---------

Co-authored-by: DongHoon Lee <[email protected]>

* [feat] #34 - 비회원 예매 POST API 구현 (#35)

* [#34] feat(Users): 빌더 및 정적 팩토리 메서드 추가

* [#34] feat(Entity): 엔티티 id 필드 수정

* [#34] refactor(application.yml): dialect 추가

* [#34] refactor(ScheduleService): 네이밍 수정

* [#34] refactor(BookingSuccessCode): 비회원 예매 조회 성공 메시지 추가

* [#34] feat(GuestBookingRequest): 비회원 예매 요청 DTO 생성

* [#34] feat(GuestBookingResponse): 비회원 예매 응답 DTO 생성

* [#34] refactor(BookingRetrieveService): 네이밍 수정

* [#34] feat(PerformanceRepository): 공연 레포지토리 생성

* [#34] feat(UserRepository): 유저 레포지토리 생성

* [#34] refactor(BookingRepository): 비회원 예매 시 네가지 정보가 모두 일치 해야만 다른 유저로 판단하는 메서드 구현

* [#34] refactor(ScheduleRepository): 비관적 락 적용

* [#34] feat(GuestBookingService): 비관적 락을 이용해 비회원 예매 로직 구현

* [#34] feat(BookingController): 비회원 예매 POST API 구현

* [#34] test(GuestBookingServiceConcurrencyTest): 동시성 테스트 구현

* [Refactor] #37 - 카카오 로그인 API response 수정 (#39)

* [#37] rename: 빈 충돌 해결 위해 UserRepository를 UsersRepository로 rename

* [#37] refactor: login response에서 refreshToken을 cookie에 담아주도록 변경

* [#37] fix: dao, repository 충돌 해결

* [#37] refactor: 어노테이션 수정

* [feat] #40 - 소개 관련 공연 정보 조회 GET API 구현 (#41)

* [#40] feat: repository 추가

* [#40] feat: 공연 관련 성공, 실패 메세지 추가

* [#40] feat(PerformanceDetailResponse): 공연 상세페이지 조회 응답 dto

* [#40] feat(PerformanceService): 공연 상세페이지 조회 로직 구현

* [#40] feat(PerformanceController): 공연 상세페이지 엔드포인트 구현

* [#40] feat(SecurityConfig): auth whitelist update

* [#40] refactor: dto 분리 및 rename

* [feat] #42 - 예매 관련 공연 정보 GET API 구현 (#43)

* [#42] feat: 예매 관련 정보 조회 dto 생성

* [#42] feat: 예매 관련 정보 조회 성공 메세지 추가

* [#42] feat(ScheduleService): 잔여티켓계산, 예매가능여부확인, 예매가능여부 update 메소드 구현

* [#42] feat(PerformanceService): 예매관련공연정보의 response 생성하는 로직 구현

* [#42] feat(PerformanceController): 예매관련공연정보 조회 엔드포인트 구현

* [#42] feat(SecurityConfig): auth_whitelist update

* [#42] refactor(ScheduleService): findTicketAvailability에서 getAvailableTicketCount method 사용하도록 수정

* [feat] #38 - 회원 예매 POST API 구현 (#45)

* [#38] fix(Cast): Join 하는 부분 수정 및 빌더와 정적 팩토리 메서드 패턴 도입

* [#38] chore(application.yml): 계층 수정

* [#38] feat: 커스텀 어노테이션 생성

* [#38] fix(UserRepository): 중복된 클래스 삭제

* [#38] feat(UserErrorCode): 유저의 에러 메시지를 관리하는 열거형 생성

* [#38] refactor(MemberErrorCode): message 목적에 맞게 변경

* [#38] refactor(BookingSuccessCode): 회원 예매 성공 메시지 추가

* [#38] feat: 커스텀 어노테이션 생성 커밋에 누락된 클래스 추가

* [#38] refactor(GuestBookingService): schedule에서 바로 get 하도록 수정

* [#38] test(GuestBookingServiceConcurrencyTest): import문 경로명 변경

* [#38] refactor(MemberService): @Transactional 어노테이션이 필요한 메서드에 해당 옵션 추가

* [#38] feat(MemberBookingRequest): 회원 예매 요청 DTO 생성

* [#38] feat(MemberBookingResponse): 회원 예매 응답 DTO 생성

* [#38] refactor(MemberController): refreshToken을 쿠키에 넣어주도록 구현

* [#38] feat(MemberBookingService): 회원 예매 서비스 로직 구현

* [#38] feat(BookingController): 회원 예매 요청 POST API 구현

* [#38] fix: 빌드 안되는 부분 수정

* [#38] remove(MemberBookingService): 사용하지 않는 import문 삭제

* [#38] refactor: 커스텀 어노테이션 이름 수정

* [feat] #44 - 홈페이지 공연 및 홍보 조회 GET API 구현 (#47)

* [#44] refactor: 코드리뷰 반영

* [#44] fix(Promotion): 기본키 이름 수정, performanceId 연관관계 설정

* [#44] feat: Repository 및 관련 로직 추가

* [#44] feat: errorcode, successcode 추가

* [#44] feat: 홈페이지 request, response dto 생성

* [#44] feat(ScheduleService): dueDate 관련 로직 구현

* [#44] feat(PerformanceService): 홈페이지 정렬 및 response 생성 로직 구현

* [#44] chore: import문 추가

* [feat] #46 - 회원 예매 조회 GET API 구현 (#48)

* [#46] remove(BookingRetrieveRequest): 클래스 삭제

* [#46] refactor(BookingSuccessCode): 회원 예매 조회 성공 메시지 추가

* [#46] refactor(GuestBookingRetrieveResponse): 클래스 명 변경

* [#46] refactor(GuestBookingRetrieveRequest): 안쓰는 코드 주석처리

* [#46] refactor(GuestBookingRetrieveService): 클래스 명 수정으로 인한 리팩토링

* [#46] refactor(SecurityConfig): 토큰 사용하지 않는 api 경로 추가하기

* [#46] refactor(BookingRepository): userId로 예약 정보를 가져오는 JPA 메서드 구현

* [#46] feat(MemberBookingRetrieveResponse): 회원 조회 응답 DTO 생성

* [#46] feat(MemberBookingRetrieveService): 회원 예매 조회 로직을 담당하는 서비스 레이어 구현

* [#46] feat(BookingController): 회원 예매 조회 GET API 구현

* [feat] #49 - 예매자 관리 API 구현 (#51)

* [#49] feat: 티켓 관련 success, error code 추가

* [#49] feat(Booking): 입금여부 setter 메소드 추가

* [#49] feat(TicketRetrieveResponse): 예매자 확인 response dto 생성

* [#49] feat(Ticket): 예매자 확인용 티켓 정보 response dto 생성

* [#49] feat(TicketRepository): 예매자 필터링용 메소드 생성

* [#49] feat: 예매자 입금정보 수정 request dto 생성

* [#49] feat(TicketDeleteRequest): 예매자 삭제 request dto 생성

* [#49] feat(TicketService): 예매자 관리 관련 로직 구현

* [#49] feat(TicketController): 예매자 관리 엔드포인트 구현

* [#49] chore: swagger annotation 추가

* HOTFIX(SecurityConfig): WHITELIST 경로명 수정

* [fix] #52 - auth whitelist 수정 (#53)

* [#52]fix(SecurityConfig): auth_whitelist 수정

* [#52]fix(SecurityConfig): auth_whitelist 수정

---------

Co-authored-by: DongHoon Lee <[email protected]>

* [feat] #54 - 등록한 공연 목록 조회 GET API 구현 (#55)

* [#54] feat(PerformanceSuccessCode): success code 추가

* [#54] feat: 회원이 등록한 공연목록 조회 dto 생성

* [#54] feat(PerformanceService): 회원이 등록한 공연목록 조회 로직 구현

* [#54] feat(PerformanceRepository): 회원이 등록한 공연목록 조회 관련 메소드 추가

* [#54] feat(PerformanceController): 회원이 등록한 공연목록 조회 엔드포인트 생성

* [#54] fix(TicketService): exception error 수정

* [#54] chore(application.yml): yml 수정

* [fix] #58 - dev-ci.yml, prod-ci.yml 환경변수 추가  (#59)

* [#58] fix(dev-CI.yml): Dev 서버 CI 워크플로우 수정

* [#58] fix(prod-CI.yml): Prod 서버 CI 워크플로우 수정

* [refactor] #61 - Performance Entity field 추가 (#62)

* [#61] refactor(Performance): bankHolder 필드 추가

* [#61] chore(BookingController): swagger annotation 수정

* [feat] #63 - healthCheckController 생성 (#64)

* [#63] remove(UsersRepository): 중복 클래스 삭제

* [#63] feat(HealthCheckController): healthcheck 컨트롤러 생성

* [feat] #63 - health check URL 화이트리스트에 등록 (#67)

* [#63] remove(UsersRepository): 중복 클래스 삭제

* [#63] feat(HealthCheckController): healthcheck 컨트롤러 생성

* [#63] feat(SecurityConfig): healthcheck url white_list에 등록

* [fix] #57 -  entity 연관관계 설정  SecurityConfig 수정 (#65)

* [#57] refactor: entity 연관관계 설정 및 수정

* [#57] fix(SecurityConfig): auth_whitelist update

* [#57] chore(UsersRepository): 중복된 파일 및 불필요한 패키지 제거

* [#57] refactor(SecurityConfig): auth_whitelist update

* [#57] refactor: 엔티티 정적팩토리 메소드 추가

* [#57] comment(SecurityConfig): 주석 제거

---------

Co-authored-by: DongHoon Lee <[email protected]>

* [fix] #57 - security 관련 에러 대응 (#71)

* [#57] refactor: entity 연관관계 설정 및 수정

* [#57] fix(SecurityConfig): auth_whitelist update

* [#57] chore(UsersRepository): 중복된 파일 및 불필요한 패키지 제거

* [#57] refactor(SecurityConfig): auth_whitelist update

* [#57] refactor: 엔티티 정적팩토리 메소드 추가

* [#57] comment(SecurityConfig): 주석 제거

* [#57] fix(JwtAuthenticationFilter): 에러 로직 수정

* fix(SecurityConfig): webSecurityCustomizer 로직 추가

* [fix] #73 - security 수정 (#74)

* [#57] refactor: entity 연관관계 설정 및 수정

* [#57] fix(SecurityConfig): auth_whitelist update

* [#57] chore(UsersRepository): 중복된 파일 및 불필요한 패키지 제거

* [#57] refactor(SecurityConfig): auth_whitelist update

* [#57] refactor: 엔티티 정적팩토리 메소드 추가

* [#57] comment(SecurityConfig): 주석 제거

* [#57] fix(JwtAuthenticationFilter): 에러 로직 수정

* fix(SecurityConfig): webSecurityCustomizer 로직 추가

* [#57] fix:security 수정

* [#76] fix(SecurityConfig): Base64 인코딩을 하도록 변경 (#77)

* [fix] #76 - 누락된 코드 추가 (#79)

* [#76] fix(SecurityConfig): Base64 인코딩을 하도록 변경

* [#76] chore(SecurityConfig): 누락된 import문 추가

* [#76] chore(JwtTokenProvider): 누락된 코드 추가

* [#81] fix(JwtTokenProvider): jwtsecret을 인코딩하고 디코딩을 하도록 수정 (#82)

* [#85] chore(application.yml): 환경변수 설정 (#86)

* [chore] #88 - 레디스 환경변수 추가 (#89)

* [#88] chore(dev-CI.yml): dev서버 레디스 환경변수 설정 추가

* [#88] chore(prod-CI.yml): prod 서버 레디스 환경변수 설정 추가

* [deploy] merge to main (#90)

* [deploy] merge to main (#83)

* [deploy] merge to develop (#27)

* [deploy] merge to main (#26)

* [#2] chore(.gitignore): .gradle, .idea 파일 삭제 (#3)

* [refactor] #4 - 도메인형 디렉터리 구조 변경 및 local, dev, prod 운영 환경 분리 (#5)

* [#4] fix: 클래스 첫글자 대문자로 수정

* [#4] remove: enum 삭제

* [#4] feat(BaseSuccessCode): 성공 상태 관리를 위한 인터페이스 생성

* [#4] feat(BaseErrorCode): 에러 상태 관리를 위한 인터페이스 생성

* [#4] refactor: global 패키지로 이동

* [#4] refactor: 서버 운영 환경 분리

* [feat] #6 - dev, prod Dockerfile 분리 및 github Action CI workflow 구현 (#7)

* [#6] feat(Dockerfile): prod용 도커 파일 구현

* [#6] feat(Dockerfile-dev): dev용 도커 파일 구현

* [#6] feat(dev-CI.yml): dev용 CI workflow 구현

* [#6] feat(prod-CI.yml): prod용 CI workflow 구현

* [#6] chore(.gitignore): gradle-wrapper.jar 파일은 레포지토리에 포함되도록 설정

* [#6] fix(gradle-wrapper.jar): .gitignore로 누락된 파일 추가

* [#6] chore(build.grade): plain jar 생성 방지

* [#9] docs(README.md): 서비스 소개 README v1 작성 (#10)

* [#11] docs(README.md): 리드미 업데이트 (#12)

* [feat] #13 - 유저, 예매, 공연, 회차 엔티티 생성 (#15)

* [#13] feat(Users): 사용자 엔티티 생성

* [#13] feat(Genre): 장르 열거형 생성

* [#13] feat(BankName): 은행명 열거형 생성

* [#13] refactor(BaseTimeEntity): 업데이트 시간 관리 필드 활성화

* [#13] feat(Performance): 공연 엔티티 생성

* [#13] feat(ScheduleNumber): 회차 번호 열거형 생성

* [#13] feat(Schedule): 회차 엔티티 생성

* [#13] feat(Booking): 예매 엔티티 생성

* [#13] refactor(ScheduleNumber): 네이밍 수정

* [feat] #14 - 회원, 홍보, 등장인물, 스태프 엔티티 생성 (#16)

* [#14] feat(Member): 멤버 엔티티 생성

* [#14] feat(Promotion): 홍보 엔티티 생성

* [#14] feat(Cast): 등장인물 엔티티 생성

* [#14] feat(Staff): 스태프 엔티티 생성

* [feat] #13 - 유저, 예매, 공연, 회차 엔티티 생성 (#15)

* [#13] feat(Users): 사용자 엔티티 생성

* [#13] feat(Genre): 장르 열거형 생성

* [#13] feat(BankName): 은행명 열거형 생성

* [#13] refactor(BaseTimeEntity): 업데이트 시간 관리 필드 활성화

* [#13] feat(Performance): 공연 엔티티 생성

* [#13] feat(ScheduleNumber): 회차 번호 열거형 생성

* [#13] feat(Schedule): 회차 엔티티 생성

* [#13] feat(Booking): 예매 엔티티 생성

* [#13] refactor(ScheduleNumber): 네이밍 수정

* [#14} fix: 스태프, 등장인물, 홍보 엔티티 상속관계 수정

---------

Co-authored-by: DongHoon Lee <[email protected]>

* [#18] feat(Jenkinsfile): 젠킨스 파일 생성 (#19)

* [#20] refactor(Jenkinsfile): 젠킨스 파일 Webhook 테스트용 커밋 (#21)

* [#22] feat(Jenkinsfile): Jenkins multibranch 스크립트 작성 (#23)

* HOTFIX(Jenkinsfile): Jenkins multibranch 스크립트 수정

* HOTFIX(workflows): 빌드 후 젠킨스 배포가 진행되도록 수정

* HOTFIX(workflows): Jenkinsfile 스크립트 수정

* HOTFIX(workflows): Jenkinsfile 스크립트 수정

* HOTFIX(workflows): Jenkinsfile 스크립트 수정

* HOTFIX(workflows): Jenkinsfile 스크립트 수정

* [#24] feat(Jenkinsfile): slack 연동 스크립트 작성 (#25)

---------

Co-authored-by: hyerinhwang-sailin <[email protected]>

* HOTFIX(workflow): 오타 수정

---------

Co-authored-by: hyerinhwang-sailin <[email protected]>

* [feat] #28 - 비회원 예매 조회 POST API 구현 (#29)

* chore(application-dev.yml): dialect 추가

* chore(application-prod.yml): dialect 추가

* [#28] chore(build.gradle): security 의존성 비활성화

- security 일시적으로 비활성화

* [#28] refactor(Booking): 예매 엔티티에 빌더 및 정적팩토리 메서드 추가

* [#28] refactor(ErrorResponse): 정적 팩토리 메서드 네이밍 변환

* [#28] refactor(Schedule): 회차 엔티티에 빌더 및 정적 팩토리 메서드 추가

* [#28] refactor(Performance): 공연 엔티티에 빌더 및 정적 팩토리 메서드 추가

* [#28] refactor(SuccessResponse): 정적 팩토리 메서드 네이밍 변환

* [#28] refactor(GlobalExceptionHandler): INTERNAL_SERVER_ERROR 핸들러 메서드 추가

* [#28] feat(BookingSuccessCode): 예매 성공 메시지를 관리하는 열거형 생성

* [#28] feat(BookingErrorCode): 예매 에러 메시지를 관리하는 열거형 생성

* [#28] feat(BookingRetrieveResponse): 예매 조회 응답 DTO 생성

* [#28] feat(BookingRetrieveRequest): 예매 조회 요청 DTO 생성

* [#28] feat(BookingRepository): 예매 레포지토리 생성 및 비회원 예매 조회 시 예매 내역 가져오는 메서드 구현

* [#28] feat(BookingService): 예매 서비스 레이어 생성 및 비회원 조회 메서드 구현

* [#28] feat(BookingController): 예매 컨트롤러 생성 및 비회원 예매조회 POST API 구현

* [feat] #30 - SwaggerConfig 및 WebConfig 구현 (#31)

* [#30] chore(build.gradle): springdoc 의존성 추가

* [#30] feat(SwaggerConfig): SwaggerConfig 추가

* [#30] feat(WebConfig): WebConfig 추가

* HOTFIX(workflows): push 이벤트 시 github action이 빌드 되지 않도록 수정

* HOTFIX(Jenkinsfile): 포트 수정

* [feat] #32 - 티켓 예매 가능 여부 GET API 구현 (#33)

* [#32] refactor(BookingController): 메서드명 수정

* [#32] feat(ConflictException): Conflict 409에러 클래스 생성

* [#32] feat(GlobalExceptionHandler): ConflictException 등록

* [#32] feat(TicketAvailabilityRequest): TicketAvailabilityRequest DTO 생성

* [#32] feat(TicketAvailabilityResponse): TicketAvailabilityResponse DTO 생성

* [#32] feat(ScheduleSuccessCode): ScheduleSuccessCode 열거형 생성

* [#32] feat(ScheduleErrorCode): ScheduleErrorCode 열거형 생성

* [#32] feat(ScheduleRepository): ScheduleRepository 생성

* [#32] feat(ScheduleService): ScheduleService 생성 및 회차별 티켓 구매 가능 여부 판단 메서드 구현

* [#32] feat(ScheduleController): 회차별 티켓 수량 조회 GET API 구현

* [feat] #17 - 카카오 소셜 로그인 API 구현 (#36)

* [#17] feat(build.gradle): jwt, security, open feign, Redis 의존성 추가

* [#17] feat(BeatApplication): OpenFeign 관련 어노테이션 추가

* [#17] feat(RedisConfig): redis 설정

* [#17] feat: redis 활용 jwt 토큰 생성 로직 구현

* [#17] feat(SecurityConfig): security 설정

* [#17] refactor: Member, Users 엔티티 수정 및 관련 enum 추가

* [#17] feat: Member, Users 도메인 관련 인증 로직 구현

* [#17] feat(MemberController): Member 관련 API 엔드포인트 구현

* [#17] feat: Security 관련 인증 객체 구현

* [#17] feat: 소셜로그인 로직 구현

* [#17] fix: 소셜로그인 오류 해결

* [#17] refactor: 코드리뷰 반영

* [#17] refactor: 코드리뷰 반영

---------

Co-authored-by: DongHoon Lee <[email protected]>

* [feat] #34 - 비회원 예매 POST API 구현 (#35)

* [#34] feat(Users): 빌더 및 정적 팩토리 메서드 추가

* [#34] feat(Entity): 엔티티 id 필드 수정

* [#34] refactor(application.yml): dialect 추가

* [#34] refactor(ScheduleService): 네이밍 수정

* [#34] refactor(BookingSuccessCode): 비회원 예매 조회 성공 메시지 추가

* [#34] feat(GuestBookingRequest): 비회원 예매 요청 DTO 생성

* [#34] feat(GuestBookingResponse): 비회원 예매 응답 DTO 생성

* [#34] refactor(BookingRetrieveService): 네이밍 수정

* [#34] feat(PerformanceRepository): 공연 레포지토리 생성

* [#34] feat(UserRepository): 유저 레포지토리 생성

* [#34] refactor(BookingRepository): 비회원 예매 시 네가지 정보가 모두 일치 해야만 다른 유저로 판단하는 메서드 구현

* [#34] refactor(ScheduleRepository): 비관적 락 적용

* [#34] feat(GuestBookingService): 비관적 락을 이용해 비회원 예매 로직 구현

* [#34] feat(BookingController): 비회원 예매 POST API 구현

* [#34] test(GuestBookingServiceConcurrencyTest): 동시성 테스트 구현

* [Refactor] #37 - 카카오 로그인 API response 수정 (#39)

* [#37] rename: 빈 충돌 해결 위해 UserRepository를 UsersRepository로 rename

* [#37] refactor: login response에서 refreshToken을 cookie에 담아주도록 변경

* [#37] fix: dao, repository 충돌 해결

* [#37] refactor: 어노테이션 수정

* [feat] #40 - 소개 관련 공연 정보 조회 GET API 구현 (#41)

* [#40] feat: repository 추가

* [#40] feat: 공연 관련 성공, 실패 메세지 추가

* [#40] feat(PerformanceDetailResponse): 공연 상세페이지 조회 응답 dto

* [#40] feat(PerformanceService): 공연 상세페이지 조회 로직 구현

* [#40] feat(PerformanceController): 공연 상세페이지 엔드포인트 구현

* [#40] feat(SecurityConfig): auth whitelist update

* [#40] refactor: dto 분리 및 rename

* [feat] #42 - 예매 관련 공연 정보 GET API 구현 (#43)

* [#42] feat: 예매 관련 정보 조회 dto 생성

* [#42] feat: 예매 관련 정보 조회 성공 메세지 추가

* [#42] feat(ScheduleService): 잔여티켓계산, 예매가능여부확인, 예매가능여부 update 메소드 구현

* [#42] feat(PerformanceService): 예매관련공연정보의 response 생성하는 로직 구현

* [#42] feat(PerformanceController): 예매관련공연정보 조회 엔드포인트 구현

* [#42] feat(SecurityConfig): auth_whitelist update

* [#42] refactor(ScheduleService): findTicketAvailability에서 getAvailableTicketCount method 사용하도록 수정

* [feat] #38 - 회원 예매 POST API 구현 (#45)

* [#38] fix(Cast): Join 하는 부분 수정 및 빌더와 정적 팩토리 메서드 패턴 도입

* [#38] chore(application.yml): 계층 수정

* [#38] feat: 커스텀 어노테이션 생성

* [#38] fix(UserRepository): 중복된 클래스 삭제

* [#38] feat(UserErrorCode): 유저의 에러 메시지를 관리하는 열거형 생성

* [#38] refactor(MemberErrorCode): message 목적에 맞게 변경

* [#38] refactor(BookingSuccessCode): 회원 예매 성공 메시지 추가

* [#38] feat: 커스텀 어노테이션 생성 커밋에 누락된 클래스 추가

* [#38] refactor(GuestBookingService): schedule에서 바로 get 하도록 수정

* [#38] test(GuestBookingServiceConcurrencyTest): import문 경로명 변경

* [#38] refactor(MemberService): @Transactional 어노테이션이 필요한 메서드에 해당 옵션 추가

* [#38] feat(MemberBookingRequest): 회원 예매 요청 DTO 생성

* [#38] feat(MemberBookingResponse): 회원 예매 응답 DTO 생성

* [#38] refactor(MemberController): refreshToken을 쿠키에 넣어주도록 구현

* [#38] feat(MemberBookingService): 회원 예매 서비스 로직 구현

* [#38] feat(BookingController): 회원 예매 요청 POST API 구현

* [#38] fix: 빌드 안되는 부분 수정

* [#38] remove(MemberBookingService): 사용하지 않는 import문 삭제

* [#38] refactor: 커스텀 어노테이션 이름 수정

* [feat] #44 - 홈페이지 공연 및 홍보 조회 GET API 구현 (#47)

* [#44] refactor: 코드리뷰 반영

* [#44] fix(Promotion): 기본키 이름 수정, performanceId 연관관계 설정

* [#44] feat: Repository 및 관련 로직 추가

* [#44] feat: errorcode, successcode 추가

* [#44] feat: 홈페이지 request, response dto 생성

* [#44] feat(ScheduleService): dueDate 관련 로직 구현

* [#44] feat(PerformanceService): 홈페이지 정렬 및 response 생성 로직 구현

* [#44] chore: import문 추가

* [feat] #46 - 회원 예매 조회 GET API 구현 (#48)

* [#46] remove(BookingRetrieveRequest): 클래스 삭제

* [#46] refactor(BookingSuccessCode): 회원 예매 조회 성공 메시지 추가

* [#46] refactor(GuestBookingRetrieveResponse): 클래스 명 변경

* [#46] refactor(GuestBookingRetrieveRequest): 안쓰는 코드 주석처리

* [#46] refactor(GuestBookingRetrieveService): 클래스 명 수정으로 인한 리팩토링

* [#46] refactor(SecurityConfig): 토큰 사용하지 않는 api 경로 추가하기

* [#46] refactor(BookingRepository): userId로 예약 정보를 가져오는 JPA 메서드 구현

* [#46] feat(MemberBookingRetrieveResponse): 회원 조회 응답 DTO 생성

* [#46] feat(MemberBookingRetrieveService): 회원 예매 조회 로직을 담당하는 서비스 레이어 구현

* [#46] feat(BookingController): 회원 예매 조회 GET API 구현

* [feat] #49 - 예매자 관리 API 구현 (#51)

* [#49] feat: 티켓 관련 success, error code 추가

* [#49] feat(Booking): 입금여부 setter 메소드 추가

* [#49] feat(TicketRetrieveResponse): 예매자 확인 response dto 생성

* [#49] feat(Ticket): 예매자 확인용 티켓 정보 response dto 생성

* [#49] feat(TicketRepository): 예매자 필터링용 메소드 생성

* [#49] feat: 예매자 입금정보 수정 request dto 생성

* [#49] feat(TicketDeleteRequest): 예매자 삭제 request dto 생성

* [#49] feat(TicketService): 예매자 관리 관련 로직 구현

* [#49] feat(TicketController): 예매자 관리 엔드포인트 구현

* [#49] chore: swagger annotation 추가

* HOTFIX(SecurityConfig): WHITELIST 경로명 수정

* [fix] #52 - auth whitelist 수정 (#53)

* [#52]fix(SecurityConfig): auth_whitelist 수정

* [#52]fix(SecurityConfig): auth_whitelist 수정

---------

Co-authored-by: DongHoon Lee <[email protected]>

* [feat] #54 - 등록한 공연 목록 조회 GET API 구현 (#55)

* [#54] feat(PerformanceSuccessCode): success code 추가

* [#54] feat: 회원이 등록한 공연목록 조회 dto 생성

* [#54] feat(PerformanceService): 회원이 등록한 공연목록 조회 로직 구현

* [#54] feat(PerformanceRepository): 회원이 등록한 공연목록 조회 관련 메소드 추가

* [#54] feat(PerformanceController): 회원이 등록한 공연목록 조회 엔드포인트 생성

* [#54] fix(TicketService): exception error 수정

* [#54] chore(application.yml): yml 수정

* [fix] #58 - dev-ci.yml, prod-ci.yml 환경변수 추가  (#59)

* [#58] fix(dev-CI.yml): Dev 서버 CI 워크플로우 수정

* [#58] fix(prod-CI.yml): Prod 서버 CI 워크플로우 수정

* [refactor] #61 - Performance Entity field 추가 (#62)

* [#61] refactor(Performance): bankHolder 필드 추가

* [#61] chore(BookingController): swagger annotation 수정

* [feat] #63 - healthCheckController 생성 (#64)

* [#63] remove(UsersRe…
  • Loading branch information
hoonyworld and hyerinhwang-sailin authored Oct 8, 2024
1 parent eb3ec1b commit 3a814c1
Show file tree
Hide file tree
Showing 159 changed files with 4,212 additions and 1,689 deletions.
20 changes: 12 additions & 8 deletions .github/workflows/dev-CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,10 @@ jobs:
DEV_COOLSMS_KEY: ${{ secrets.DEV_COOLSMS_KEY }}
DEV_COOLSMS_NUMBER: ${{ secrets.DEV_COOLSMS_NUMBER }}
DEV_COOLSMS_SECRET: ${{ secrets.DEV_COOLSMS_SECRET }}
DEV_ACCESS_TOKEN_EXPIRE_TIME: ${{ secrets.DEV_ACCESS_TOKEN_EXPIRE_TIME }}
DEV_REFRESH_TOKEN_EXPIRE_TIME: ${{ secrets.DEV_REFRESH_TOKEN_EXPIRE_TIME }}
DEV_ALLOWED_ORIGINS: ${{ secrets.DEV_ALLOWED_ORIGINS }}
DEV_SERVER_URL: ${{ secrets.DEV_SERVER_URL }}
run: |
cd ./src/main/resources
envsubst < application-dev.yml > application-dev.tmp.yml && mv application-dev.tmp.yml application-dev.yml
Expand Down Expand Up @@ -81,11 +85,11 @@ jobs:
docker build -f Dockerfile-dev --platform linux/amd64 -t hoonyworld/beat-dev .
docker push hoonyworld/beat-dev
# Trigger Jenkins job - Jenkins 작업 트리거
- name: Trigger Jenkins job
uses: appleboy/jenkins-action@master
with:
url: ${{ secrets.DEV_WEBHOOK_URL }}
user: "beat"
token: ${{ secrets.DEV_JENKINS_API_TOKEN }}
job: "beat-project"
# # Trigger Jenkins job - Jenkins 작업 트리거
# - name: Trigger Jenkins job
# uses: appleboy/jenkins-action@master
# with:
# url: ${{ secrets.DEV_WEBHOOK_URL }}
# user: "beat"
# token: ${{ secrets.DEV_JENKINS_API_TOKEN }}
# job: "beat-project"
20 changes: 12 additions & 8 deletions .github/workflows/prod-CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,10 @@ jobs:
PROD_COOLSMS_KEY: ${{ secrets.PROD_COOLSMS_KEY }}
PROD_COOLSMS_NUMBER: ${{ secrets.PROD_COOLSMS_NUMBER }}
PROD_COOLSMS_SECRET: ${{ secrets.PROD_COOLSMS_SECRET }}
PROD_ACCESS_TOKEN_EXPIRE_TIME: ${{ secrets.PROD_ACCESS_TOKEN_EXPIRE_TIME }}
PROD_REFRESH_TOKEN_EXPIRE_TIME: ${{ secrets.PROD_REFRESH_TOKEN_EXPIRE_TIME }}
PROD_ALLOWED_ORIGINS: ${{ secrets.PROD_ALLOWED_ORIGINS }}
PROD_SERVER_URL: ${{ secrets.PROD_SERVER_URL }}
run: |
cd ./src/main/resources
envsubst < application-prod.yml > application-prod.tmp.yml && mv application-prod.tmp.yml application-prod.yml
Expand Down Expand Up @@ -81,11 +85,11 @@ jobs:
docker build --platform linux/amd64 -t donghoon0203/beat-prod .
docker push donghoon0203/beat-prod
# Trigger Jenkins job - Jenkins 작업 트리거
- name: Trigger Jenkins job
uses: appleboy/jenkins-action@master
with:
url: ${{ secrets.PROD_WEBHOOK_URL }}
user: "beat"
token: ${{ secrets.PROD_JENKINS_API_TOKEN }}
job: "beat-project"
# # Trigger Jenkins job - Jenkins 작업 트리거
# - name: Trigger Jenkins job
# uses: appleboy/jenkins-action@master
# with:
# url: ${{ secrets.PROD_WEBHOOK_URL }}
# user: "beat"
# token: ${{ secrets.PROD_JENKINS_API_TOKEN }}
# job: "beat-project"
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -178,3 +178,6 @@ Temporary Items

# End of https://www.toptal.com/developers/gitignore/api/intellij,java,macos.gradle/
.idea/

# Ignore application-local.yml
src/main/resources/application-local.yml
30 changes: 0 additions & 30 deletions HELP.md

This file was deleted.

2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,4 +114,4 @@ BEAT와 함께 효율적이고 체계적으로 공연을 관리해 볼까요?
<img src="https://github.com/user-attachments/assets/35b618b6-932e-4ef8-99bc-857f4e45d610">

## 👥 Contributors
- [BEAT Client Repository](https://github.com/TEAM-BEAT/BEAT-Client)
- [BEAT Client Repository](https://github.com/TEAM-BEAT/BEAT-Client)
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ repositories {
dependencies {
// Spring
implementation 'org.springframework.boot:spring-boot-starter-web'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
// developmentOnly 'org.springframework.boot:spring-boot-devtools'
implementation 'org.springframework.boot:spring-boot-starter-actuator'

// Database
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/com/beat/BeatApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,13 @@
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.cloud.openfeign.FeignAutoConfiguration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
@EnableFeignClients
@EnableScheduling
@EnableAsync
@ImportAutoConfiguration({FeignAutoConfiguration.class})
public class BeatApplication {

Expand Down
134 changes: 134 additions & 0 deletions src/main/java/com/beat/admin/adapter/in/api/AdminApi.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
package com.beat.admin.adapter.in.api;

import com.beat.admin.application.dto.response.CarouselFindAllResponse;
import com.beat.admin.application.dto.response.UserFindAllResponse;
import com.beat.admin.application.dto.request.CarouselHandleRequest;
import com.beat.admin.application.dto.response.CarouselHandleAllResponse;
import com.beat.global.auth.annotation.CurrentMember;
import com.beat.global.common.dto.ErrorResponse;
import com.beat.global.common.dto.SuccessResponse;
import com.beat.global.external.s3.application.dto.BannerPresignedUrlFindResponse;
import com.beat.global.external.s3.application.dto.CarouselPresignedUrlFindAllResponse;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

@Tag(name = "Admin", description = "관리자 제어 API")
public interface AdminApi {

@Operation(summary = "유저 정보 조회", description = "관리자가 유저들의 정보를 조회하는 GET API")
@ApiResponses(
value = {
@ApiResponse(
responseCode = "200",
description = "관리자 권한으로 모든 유저 조회에 성공하였습니다.",
content = @Content(schema = @Schema(implementation = SuccessResponse.class))
),
@ApiResponse(
responseCode = "404",
description = "회원이 없습니다",
content = @Content(schema = @Schema(implementation = ErrorResponse.class))
)
}
)
ResponseEntity<SuccessResponse<UserFindAllResponse>> readAllUsers(
@CurrentMember Long memberId
);

@Operation(summary = "캐러셀에 업로드 할 이미지에 대한 presigned URL 발급", description = "관리자가 캐러셀에 업로드 할 이미지에 대한 presigned URL을 발급 받는 GET API")
@ApiResponses(
value = {
@ApiResponse(
responseCode = "200",
description = "캐러셀 Presigned URL 발급 성공",
content = @Content(schema = @Schema(implementation = SuccessResponse.class))
),
@ApiResponse(
responseCode = "404",
description = "회원이 없습니다.",
content = @Content(schema = @Schema(implementation = ErrorResponse.class))
)
}
)
ResponseEntity<SuccessResponse<CarouselPresignedUrlFindAllResponse>> createAllCarouselPresignedUrls(
@CurrentMember Long memberId,
@RequestParam List<String> carouselImages
);

@Operation(summary = "배너에 업로드 할 이미지에 대한 presigned URL 발급", description = "관리자가 배너에 업로드 할 이미지에 대한 presigned URL을 발급 받는 GET API")
@ApiResponses(
value = {
@ApiResponse(
responseCode = "200",
description = "배너 Presigned URL 발급 성공",
content = @Content(schema = @Schema(implementation = SuccessResponse.class))
),
@ApiResponse(
responseCode = "404",
description = "회원이 없습니다.",
content = @Content(schema = @Schema(implementation = ErrorResponse.class))
)
}
)
ResponseEntity<SuccessResponse<BannerPresignedUrlFindResponse>> createBannerPresignedUrl(
@CurrentMember Long memberId,
@RequestParam String bannerImage
);

@Operation(summary = "캐러셀에 등록된 모든 공연 정보 조회", description = "관리자가 현재 캐러셀에 등록된 모든 공연 정보를 조회하는 GET API")
@ApiResponses(
value = {
@ApiResponse(
responseCode = "200",
description = "관리자 권한으로 현재 캐러셀에 등록된 모든 공연 조회에 성공하였습니다.",
content = @Content(schema = @Schema(implementation = SuccessResponse.class))
),
@ApiResponse(
responseCode = "404",
description = "회원이 없습니다.",
content = @Content(schema = @Schema(implementation = ErrorResponse.class))
)
}
)
ResponseEntity<SuccessResponse<CarouselFindAllResponse>> readAllCarouselImages(
@CurrentMember Long memberId
);

@Operation(summary = "캐러셀 이미지 수정", description = "관리자가 캐러셀 이미지를 수정하는 PUT API")
@ApiResponses(
value = {
@ApiResponse(
responseCode = "200",
description = "캐러셀 이미지 수정 성공",
content = @Content(schema = @Schema(implementation = SuccessResponse.class))
),
@ApiResponse(
responseCode = "404",
description = "회원이 없습니다.",
content = @Content(schema = @Schema(implementation = ErrorResponse.class))
),
@ApiResponse(
responseCode = "404",
description = "해당 홍보 정보를 찾을 수 없습니다.",
content = @Content(schema = @Schema(implementation = ErrorResponse.class))
),
@ApiResponse(
responseCode = "404",
description = "해당 공연 정보를 찾을 수 없습니다.",
content = @Content(schema = @Schema(implementation = ErrorResponse.class))
)
}
)
ResponseEntity<SuccessResponse<CarouselHandleAllResponse>> processCarouselImages(
@CurrentMember Long memberId,
@RequestBody CarouselHandleRequest request
);
}
79 changes: 79 additions & 0 deletions src/main/java/com/beat/admin/adapter/in/api/AdminController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
package com.beat.admin.adapter.in.api;

import com.beat.admin.application.dto.response.CarouselFindAllResponse;
import com.beat.admin.application.dto.request.CarouselHandleRequest;
import com.beat.admin.application.dto.response.CarouselHandleAllResponse;
import com.beat.admin.exception.AdminSuccessCode;
import com.beat.admin.application.dto.response.UserFindAllResponse;
import com.beat.admin.facade.AdminFacade;
import com.beat.global.auth.annotation.CurrentMember;
import com.beat.global.common.dto.SuccessResponse;
import com.beat.global.external.s3.application.dto.BannerPresignedUrlFindResponse;
import com.beat.global.external.s3.application.dto.CarouselPresignedUrlFindAllResponse;

import lombok.RequiredArgsConstructor;

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/api/admin")
@RequiredArgsConstructor
public class AdminController implements AdminApi {

private final AdminFacade adminFacade;

@Override
@GetMapping("/users")
public ResponseEntity<SuccessResponse<UserFindAllResponse>> readAllUsers(@CurrentMember Long memberId) {
UserFindAllResponse response = adminFacade.checkMemberAndFindAllUsers(memberId);
return ResponseEntity.status(HttpStatus.OK)
.body(SuccessResponse.of(AdminSuccessCode.FETCH_ALL_USERS_SUCCESS, response));
}

@Override
@GetMapping("/carousels/presigned-url")
public ResponseEntity<SuccessResponse<CarouselPresignedUrlFindAllResponse>> createAllCarouselPresignedUrls(
@CurrentMember Long memberId, @RequestParam List<String> carouselImages) {
CarouselPresignedUrlFindAllResponse response = adminFacade.checkMemberAndIssueAllPresignedUrlsForCarousel(
memberId, carouselImages);
return ResponseEntity.ok(SuccessResponse.of(AdminSuccessCode.CAROUSEL_PRESIGNED_URL_ISSUED, response));
}

@Override
@GetMapping("/banner/presigned-url")
public ResponseEntity<SuccessResponse<BannerPresignedUrlFindResponse>> createBannerPresignedUrl(
@CurrentMember Long memberId, @RequestParam String bannerImage) {
BannerPresignedUrlFindResponse response = adminFacade.checkMemberAndIssuePresignedUrlForBanner(memberId,
bannerImage);
return ResponseEntity.status(HttpStatus.OK)
.body(SuccessResponse.of(AdminSuccessCode.BANNER_PRESIGNED_URL_ISSUED, response));
}

@Override
@GetMapping("/carousels")
public ResponseEntity<SuccessResponse<CarouselFindAllResponse>> readAllCarouselImages(
@CurrentMember Long memberId) {
CarouselFindAllResponse response = adminFacade.checkMemberAndFindAllPromotionsSortedByCarouselNumber(memberId);
return ResponseEntity.status(HttpStatus.OK)
.body(SuccessResponse.of(AdminSuccessCode.FETCH_ALL_CAROUSEL_PROMOTIONS_SUCCESS, response));
}

@Override
@PutMapping("/carousels")
public ResponseEntity<SuccessResponse<CarouselHandleAllResponse>> processCarouselImages(
@CurrentMember Long memberId,
@RequestBody CarouselHandleRequest request) {
CarouselHandleAllResponse response = adminFacade.checkMemberAndProcessAllPromotionsSortedByCarouselNumber(memberId, request);
return ResponseEntity.status(HttpStatus.OK)
.body(SuccessResponse.of(AdminSuccessCode.UPDATE_ALL_CAROUSEL_PROMOTIONS_SUCCESS, response));
}
}
Loading

0 comments on commit 3a814c1

Please sign in to comment.