Skip to content

Commit

Permalink
Release/v1.1.0 (#171)
Browse files Browse the repository at this point in the history
* feat: release 1.0.2 (#87)

* 추첨 이벤트 추첨 구현 (#92)

* feat: EventUser 데이터베이스에서 N 명 추첨 메서드 생성 (#37)

* feat: 랭킹 Dto Example 추가 (#37)

* feat: winnersMeta Json 타입으로 변경 (#37)

* feat: Json 타입 변경으로 인한 util, test 변경 (#37)

* feat: DTO 변경 및 Wrapper Class to Primitive Type 으로 변경 (#37)

* #feat: 추첨 메서드 작성 (#37)

* feat: 추첨 메서드를 위한 API 생성 및 인가를 위한 ApiKey 임시 설정 (#37)

* feat: WrapperClass 변경 (#37)

* feat: Request 를 위한 Dto 생성 및 ApiKey Validate (#37)

* #feat: JsonParseException 추가 (#37)

* feat: 이미 추첨이 완료된 경우 Exception (#37)

* feat: 반환값 변경 (#37)

* feat: 총 수상자 수 로직 위치 변경 (#37)

* feat: 랜덤 사용자 추출 및 Extra 추출 (#37)

* feat: 주석 추가 및 네이밍 변경, 예외 처리 순서 변경 (#37)

* fix: Rank 추가 및 등수 저장 (#37)

* test: 추첨 로직 테스트 (#37)

* test: drawWinner 메서드 테스트 코드 작성 (#37)

* docs: Swagger 문서화 (#37)

* fix: User builder 로 변경 (#37)

* #feat: MySQL 예약어로 winner 필드 명 변경 (#37)

* feat: RAND 및 Pageable 이슈로 인한 Native 쿼리로 변경 (#37)

* �EventUser Info API 변경합니다. (#95)

* docs: Swagger 문서화 정리 (#94)

* feat: EventUser NotFound 시 예외 처리 (#94)

* test: 메서드 변경으로 인한 테스트 코드 변경 (#94)

* EventUserRepository 단위 테스트 (#99)

* feat: 테스트 시 내장 H2 사용 및 초기 SQL 문 삽입 (#94)

* test: EventUserRepository 테스트 코드 작성

* cors 설정 변경 및 quiz 이벤트 로직 변경 (#97)

* fix: CorsConfig를 WebConfig로 통합 (#91)

* feat: 테스트 용 데이터 생성 메서드 작성 (#91)

* feat: 환경을 상수로 선언 (test, prod, dev) (#91)

* feat: 퀴즈 마지막 번호(lastQuizNumber) 추가 (#91)

* feat: 기대평 결과 값을 오름차순이 아닌 내림차순으로 변경 (#91)

* fix: 서비스 로직 변경 (기대평을 최신순으로 반환) (#91)

* fix: QuizNotExistException으로 변경 (#91)

* fix: /api/v1/quiz 퀴즈 문제 가져오는 api는 로그인이 필요함 (#91)

* fix: /api/v1/quiz 퀴즈 문제 가져오는 api는 로그인이 필요함 (#91)

* fix: RequestParam을 Dto로 변경 (#91)

* feat: 퀴즈 문제 api의 Dto (#91)

* feat: 퀴즈 이벤트가 진행중인지 검사하는 로직 작성  (#91)

* feat: 퀴즈 api의 비즈니스 로직을 검사하는 유닛 테스트  (#91)

* fix: 서브이벤트가 없으면 200반환이 아니라 400으로 반환되어야 한다  (#91)

* refactor: CorsConfig에서 cors 설정하던 것을 WebConfig로 이동  (#91)

* feat: quiz repository를 테스트  (#91)

* feat: findByEventIdAndExecuteType 메서드 추가  (#91)

* chore: 공백 제거  (#91)

* fix: h2 테스트 의존성 추가 (#91)

* fix: 유효성 검사 어노테이션 추가 [@Validated] (#98)

* sql 파일 수정 및 병합으로 인한 코드 중복 해결 (#103)

* fix: H2 database INSERT 문법 변경

* fix: 코드 중복 제거

* fix: 변수 재선언 제거

* fix: 테스트할 sql 파일 수정

* eventId를 쿼리 파라미터로 받지 않게 수정 (#105)

* fix: eventId를 환경변수로 받음 (#104)

* fix: eventId 제거 (#104)

* fix: eventId 제거 (#104)

* fix: Winners 테이블에 ranking 컬럼 추가 (#104)

* fix: 상태 값을 상수로 변경 (#104)

* api 경로 수정 및 예외 수정 (#109)

* fix: expectationComment -> comment

* fix: GET /expectation/land -> /expectation
fix: POST /expectation/register -> /expectation

* fix: expectationBannerImgUrl -> bannerImgUrl

* fix: expectationContent -> comments

* fix: validation 라이브러리 추가

* fix: @Data, @NoArgsConstruct 추가

* chore: expectationPage 컬럼 명 변경

* fix: 퀴즈 테이블명 수정

* fix: api 경로 수정

* fix: 중복 코드 제거

* fix: quiz 테이블명 변경에 따른 코드 수정

* fix: POST 메서드에 @ParameterObject 제거

* fix: 테이블 명을 quizzes에서 quiz_firstcome_events로 변경

* fix: quizSubmitResponseDto를 반환하지 않는 문제 해결

* fix: @ParameterObject 제거

* 드로잉 추첨 이벤트 테이블 및 추첨 메서드 도메인 변경합니다. (#110)

* feat: 추첨 메서드 도메인 변경 (#108)

* test: 추첨 이벤트 테스트 코드 작성 (#108)

* feat: Import 부분 삭제 (#108)

* feat: 유효성 검사 메서드 추출 (#108)

* 단축 URL 생성 및 Redirect 구현합니다. (#107)

* feat: Entity 및 Dto 변경 (#100)

* feat: 이벤트 참가 유저 랜덤값 생성 및 예외 처리 (#100)

* feat: ShaedUrl 랜덤값 업데이트 및 저장 (#100)

* feat: shard-url API 생성 및 문서화 (#100)

* feat: URL 을 통해 특정 유저 매핑 후 Redirect URL 반환 (#100)

* feat: Shared URL을 PathParameter 로 가지는 API 생성 (#100)

* Release/v1.0.3

commit 34bb96bb73bffe6165f59579142bcf862144be3a
Author: min9805 <[email protected]>
Date:   Fri Aug 9 11:36:13 2024 +0900

    feat: cors 와이드카드 설정

commit 21fc9a590a5fbe90a65f22c03cf8ca48682f776b
Author: min9805 <[email protected]>
Date:   Fri Aug 9 11:36:02 2024 +0900

    feat: build 시 test active 설정

commit 7cc569ed5a23fd857bbe06814eae035be4f66529
Merge: 7b3bf77 44b068c
Author: min9805 <[email protected]>
Date:   Fri Aug 9 11:29:34 2024 +0900

    Merge branch 'master' into release/v1.0.3

    # Conflicts:
    #	gradle.properties
    #	src/test/java/com/hyundai/softeer/backend/domain/expectation/repository/ExpectationRepositoryTest.java
    #	src/test/resources/sql/integration.sql

commit 7b3bf77a8d9337d8392f614061e6512e3086d141
Author: min9805 <[email protected]>
Date:   Fri Aug 9 11:24:40 2024 +0900

    feat: API Path 수정

commit 1346467f6f0af906cec8f04553e7d1fb7a1ad336
Author: min9805 <[email protected]>
Date:   Fri Aug 9 11:22:23 2024 +0900

    feat: Log Permission Error

commit 7f02308d5408a200e5b766d17b881223911e36ff
Merge: 5db777b 1771b59
Author: mjmj <[email protected]>
Date:   Fri Aug 9 10:10:02 2024 +0900

    Merge branch 'release/v1.0.3' into dev

commit 1771b5960e96d7e3a529328ebb42242e058929cf
Author: mjmj <[email protected]>
Date:   Fri Aug 9 10:09:48 2024 +0900

    fix: 테스트 yml 추가

commit 5db777b8bb8d822299fc12e9fa627b3446057e6c
Merge: 913af8e b5564cc
Author: mjmj <[email protected]>
Date:   Fri Aug 9 02:04:36 2024 +0900

    Merge branch 'release/v1.0.3' into dev

commit b5564cc72e29d5da6e660761451bea197cf85676
Author: mjmj <[email protected]>
Date:   Fri Aug 9 02:03:59 2024 +0900

    fix: base64 적용 해제

commit 913af8e12a1ecba585293c762ce48156fd63ec42
Merge: 8f40eb0 4afe625
Author: mjmj <[email protected]>
Date:   Fri Aug 9 02:01:11 2024 +0900

    Merge branch 'release/v1.0.3' into dev

commit 4afe625b9a1604ed5935cbdb0043a0ffe801b50f
Author: mjmj <[email protected]>
Date:   Fri Aug 9 02:00:40 2024 +0900

    fix: base64 적용

commit 8f40eb01508eb70bf568258f8e229af7226cadc0
Merge: cf2a476 9839ded
Author: mjmj <[email protected]>
Date:   Fri Aug 9 01:08:27 2024 +0900

    Merge branch 'release/v1.0.3' into dev

commit 9839dedd91e6b84cff1a74f60fc0052cf569df67
Author: mjmj <[email protected]>
Date:   Fri Aug 9 01:08:12 2024 +0900

    feat: cicd에서 테스트 파일을 읽도록 수정

commit cf2a476229cd11d83f3d2bd4c5d9cb5bf2934a36
Merge: cfb648f 907bd62
Author: mjmj <[email protected]>
Date:   Fri Aug 9 00:54:34 2024 +0900

    Merge branch 'release/v1.0.3' into dev

commit 907bd62e9e13fa34819d3ea8b599db9906593a8c
Author: mjmj <[email protected]>
Date:   Fri Aug 9 00:54:12 2024 +0900

    chore: 버전 1.0.3 설정

commit 43f9bc77734d8d442af9f29cb51a99d4964b4282
Author: mjmj <[email protected]>
Date:   Fri Aug 9 00:52:42 2024 +0900

    fix: shared_url unique key 위반 해결

commit 44b068c86e5f39b61a1c90341720f5e71f2e58f7
Merge: fc95896 4149e6d
Author: mjmj <[email protected]>
Date:   Tue Aug 6 19:06:29 2024 +0900

    Merge branch 'release/v1.0.2'

commit 4149e6d9d5e7c61eecbb5107f2571f27a8d9a0c7
Author: mjmj <[email protected]>
Date:   Tue Aug 6 18:59:42 2024 +0900

    fix: ci pull-request에서 push로 변경

commit 4a4ae8b6ecab7b7dca6ebc3a62bb2165b0a5e258
Author: mjmj <[email protected]>
Date:   Tue Aug 6 18:25:30 2024 +0900

    fix: repositoryTest 삭제

commit a96eaaa3ffdf671b495da506c9503fe2b9171a02
Author: mjmj <[email protected]>
Date:   Tue Aug 6 17:24:57 2024 +0900

    feat: release 1.0.2

commit fc958965b800fdff9b7b63c6bd953dd46cb26b67
Author: mjmj <[email protected]>
Date:   Tue Aug 6 12:07:21 2024 +0900

    hotfix: json resolve 문제 해결 (#85)

* 드로잉 게임 정보 API 생성했습니다. (#115)

* fix: base64 적용

* fix: base64 적용 해제

* fix: 테스트 yml 추가

* fix: repositoryTest 삭제

* feat: drawing 엔티티 변경 (#93)

* feat: 드로잉 게임을 위한 이미지 반환 타입 지정 (#93)

* test: Drawing Repository 테스트 작성 및 SQL 문 최신화 (#93)

* test: 드로잉 게임 정보 조회 Service 테스트 코드 작성 (#93)

* feat: 게임 정보 조회 API 생성 및 문서화 (#93)

* feat: 반환값 변경으로 인한 DTO 변경 (#93)

* feat: 데이터 요청사항 변경으로 Dto 변경 (#93)

* feat: integration-h2.sql 문 최신화 (#93)

---------

Co-authored-by: mjmj <[email protected]>

* Fix/#114 v1.0.3 bugs (#116)

* feat: JWT UserNot Found 시 예외 처리 (#114)

* feat: 로그인 처리에서 JwtException 으로 처리 (#114)

* feat: Email or Phone 으로 조회하는 메서드 추가 (#114)

* test: Email, Phone 조회 테스트 코드 작성 (#114)

* feat: 이메일, 전화번호 확인 로직 추가 (#114)

* feat: firstcome 오타 수정 (#114)

* feat: quiz 엔티티 이름 drawing 과 통일 (#114)

* feat: 랜딩 페이지 별도 분리 및 화이트리스트 적용 (#114)

* feat: Controller 단 Valid, event_id 설정 및 DTO 전달 (#114)

* feat: import 정리 (#114)

* Release v1.0.4

commit 92b5f1797b485d74c492536443e1793c97d9cd39
Author: min9805 <[email protected]>
Date:   Fri Aug 9 20:44:40 2024 +0900

    test: Test 코드 변경

commit d4d692b2ca862b3497482dcfc782a39ddacf989e
Author: min9805 <[email protected]>
Date:   Fri Aug 9 20:37:07 2024 +0900

    feat: 이름 변경

commit 6dd36d023903103b875cc1627a42a68b74556acb
Merge: 2db0aa7 679277e
Author: min9805 <[email protected]>
Date:   Fri Aug 9 20:35:45 2024 +0900

    Merge branch 'master' into release/v1.0.4

    # Conflicts:
    #	.github/workflows/gradle-publish.yml
    #	gradle.properties
    #	src/main/java/com/hyundai/softeer/backend/domain/event/dto/ApiKeyRequest.java
    #	src/main/java/com/hyundai/softeer/backend/domain/eventuser/controller/SharedUrlController.java
    #	src/main/java/com/hyundai/softeer/backend/domain/eventuser/service/EventUserService.java
    #	src/main/java/com/hyundai/softeer/backend/domain/expectation/controller/ExpectationController.java
    #	src/main/java/com/hyundai/softeer/backend/domain/firstcome/quiz/controller/QuizFirstComeController.java
    #	src/main/java/com/hyundai/softeer/backend/domain/firstcome/quiz/dto/QuizRequest.java
    #	src/main/java/com/hyundai/softeer/backend/domain/firstcome/quiz/service/QuizFirstComeService.java
    #	src/main/java/com/hyundai/softeer/backend/domain/firstcomeevent/quiz/dto/QuizSubmitRequest.java
    #	src/main/java/com/hyundai/softeer/backend/domain/lottery/drawing/controller/DrawingLotteryController.java
    #	src/main/java/com/hyundai/softeer/backend/domain/lottery/drawing/service/DrawingLotteryService.java
    #	src/main/java/com/hyundai/softeer/backend/domain/lottery/service/LotteryService.java
    #	src/main/java/com/hyundai/softeer/backend/domain/subevent/controller/SubEventController.java
    #	src/main/java/com/hyundai/softeer/backend/domain/subevent/dto/SubEventRequest.java
    #	src/main/java/com/hyundai/softeer/backend/domain/subevent/service/SubEventService.java
    #	src/main/java/com/hyundai/softeer/backend/global/filter/JwtAuthorizationFilter.java
    #	src/test/java/com/hyundai/softeer/backend/domain/eventuser/repository/EventUserRepositoryTest.java
    #	src/test/java/com/hyundai/softeer/backend/domain/expectation/repository/ExpectationRepositoryTest.java
    #	src/test/java/com/hyundai/softeer/backend/domain/lottery/drawing/service/DrawingLotteryServiceTest.java
    #	src/test/java/com/hyundai/softeer/backend/domain/subevent/service/SubEventServiceTest.java
    #	src/test/resources/sql/integration-h2.sql
    #	src/test/resources/sql/integration.sql

commit 2db0aa7852007040626351b3083ec4c0947437c9
Author: min9805 <[email protected]>
Date:   Fri Aug 9 20:31:51 2024 +0900

    feat: v1.0.4

commit 679277edd7a9a747c910cb8d91972c390c564e33
Author: min9805 <[email protected]>
Date:   Fri Aug 9 11:39:51 2024 +0900

    Release/v1.0.3 (#113)

    * feat: release 1.0.2 (#87)

    * 추첨 이벤트 추첨 구현 (#92)

    * feat: EventUser 데이터베이스에서 N 명 추첨 메서드 생성 (#37)

    * feat: 랭킹 Dto Example 추가 (#37)

    * feat: winnersMeta Json 타입으로 변경 (#37)

    * feat: Json 타입 변경으로 인한 util, test 변경 (#37)

    * feat: DTO 변경 및 Wrapper Class to Primitive Type 으로 변경 (#37)

    * #feat: 추첨 메서드 작성 (#37)

    * feat: 추첨 메서드를 위한 API 생성 및 인가를 위한 ApiKey 임시 설정 (#37)

    * feat: WrapperClass 변경 (#37)

    * feat: Request 를 위한 Dto 생성 및 ApiKey Validate (#37)

    * #feat: JsonParseException 추가 (#37)

    * feat: 이미 추첨이 완료된 경우 Exception (#37)

    * feat: 반환값 변경 (#37)

    * feat: 총 수상자 수 로직 위치 변경 (#37)

    * feat: 랜덤 사용자 추출 및 Extra 추출 (#37)

    * feat: 주석 추가 및 네이밍 변경, 예외 처리 순서 변경 (#37)

    * fix: Rank 추가 및 등수 저장 (#37)

    * test: 추첨 로직 테스트 (#37)

    * test: drawWinner 메서드 테스트 코드 작성 (#37)

    * docs: Swagger 문서화 (#37)

    * fix: User builder 로 변경 (#37)

    * #feat: MySQL 예약어로 winner 필드 명 변경 (#37)

    * feat: RAND 및 Pageable 이슈로 인한 Native 쿼리로 변경 (#37)

    * �EventUser Info API 변경합니다. (#95)

    * docs: Swagger 문서화 정리 (#94)

    * feat: EventUser NotFound 시 예외 처리 (#94)

    * test: 메서드 변경으로 인한 테스트 코드 변경 (#94)

    * EventUserRepository 단위 테스트 (#99)

    * feat: 테스트 시 내장 H2 사용 및 초기 SQL 문 삽입 (#94)

    * test: EventUserRepository 테스트 코드 작성

    * cors 설정 변경 및 quiz 이벤트 로직 변경 (#97)

    * fix: CorsConfig를 WebConfig로 통합 (#91)

    * feat: 테스트 용 데이터 생성 메서드 작성 (#91)

    * feat: 환경을 상수로 선언 (test, prod, dev) (#91)

    * feat: 퀴즈 마지막 번호(lastQuizNumber) 추가 (#91)

    * feat: 기대평 결과 값을 오름차순이 아닌 내림차순으로 변경 (#91)

    * fix: 서비스 로직 변경 (기대평을 최신순으로 반환) (#91)

    * fix: QuizNotExistException으로 변경 (#91)

    * fix: /api/v1/quiz 퀴즈 문제 가져오는 api는 로그인이 필요함 (#91)

    * fix: /api/v1/quiz 퀴즈 문제 가져오는 api는 로그인이 필요함 (#91)

    * fix: RequestParam을 Dto로 변경 (#91)

    * feat: 퀴즈 문제 api의 Dto (#91)

    * feat: 퀴즈 이벤트가 진행중인지 검사하는 로직 작성  (#91)

    * feat: 퀴즈 api의 비즈니스 로직을 검사하는 유닛 테스트  (#91)

    * fix: 서브이벤트가 없으면 200반환이 아니라 400으로 반환되어야 한다  (#91)

    * refactor: CorsConfig에서 cors 설정하던 것을 WebConfig로 이동  (#91)

    * feat: quiz repository를 테스트  (#91)

    * feat: findByEventIdAndExecuteType 메서드 추가  (#91)

    * chore: 공백 제거  (#91)

    * fix: h2 테스트 의존성 추가 (#91)

    * fix: 유효성 검사 어노테이션 추가 [@Validated] (#98)

    * sql 파일 수정 및 병합으로 인한 코드 중복 해결 (#103)

    * fix: H2 database INSERT 문법 변경

    * fix: 코드 중복 제거

    * fix: 변수 재선언 제거

    * fix: 테스트할 sql 파일 수정

    * eventId를 쿼리 파라미터로 받지 않게 수정 (#105)

    * fix: eventId를 환경변수로 받음 (#104)

    * fix: eventId 제거 (#104)

    * fix: eventId 제거 (#104)

    * fix: Winners 테이블에 ranking 컬럼 추가 (#104)

    * fix: 상태 값을 상수로 변경 (#104)

    * api 경로 수정 및 예외 수정 (#109)

    * fix: expectationComment -> comment

    * fix: GET /expectation/land -> /expectation
    fix: POST /expectation/register -> /expectation

    * fix: expectationBannerImgUrl -> bannerImgUrl

    * fix: expectationContent -> comments

    * fix: validation 라이브러리 추가

    * fix: @Data, @NoArgsConstruct 추가

    * chore: expectationPage 컬럼 명 변경

    * fix: 퀴즈 테이블명 수정

    * fix: api 경로 수정

    * fix: 중복 코드 제거

    * fix: quiz 테이블명 변경에 따른 코드 수정

    * fix: POST 메서드에 @ParameterObject 제거

    * fix: 테이블 명을 quizzes에서 quiz_firstcome_events로 변경

    * fix: quizSubmitResponseDto를 반환하지 않는 문제 해결

    * fix: @ParameterObject 제거

    * 드로잉 추첨 이벤트 테이블 및 추첨 메서드 도메인 변경합니다. (#110)

    * feat: 추첨 메서드 도메인 변경 (#108)

    * test: 추첨 이벤트 테스트 코드 작성 (#108)

    * feat: Import 부분 삭제 (#108)

    * feat: 유효성 검사 메서드 추출 (#108)

    * 단축 URL 생성 및 Redirect 구현합니다. (#107)

    * feat: Entity 및 Dto 변경 (#100)

    * feat: 이벤트 참가 유저 랜덤값 생성 및 예외 처리 (#100)

    * feat: ShaedUrl 랜덤값 업데이트 및 저장 (#100)

    * feat: shard-url API 생성 및 문서화 (#100)

    * feat: URL 을 통해 특정 유저 매핑 후 Redirect URL 반환 (#100)

    * feat: Shared URL을 PathParameter 로 가지는 API 생성 (#100)

    * fix: shared_url unique key 위반 해결

    * chore: 버전 1.0.3 설정

    * feat: cicd에서 테스트 파일을 읽도록 수정

    * fix: base64 적용

    * fix: base64 적용 해제

    * fix: 테스트 yml 추가

    * feat: Log Permission Error

    * feat: API Path 수정

    * feat: build 시 test active 설정

    * feat: cors 와이드카드 설정

    ---------

    Co-authored-by: mjmj <[email protected]>
    Co-authored-by: mjmj <[email protected]>

commit 44b068c86e5f39b61a1c90341720f5e71f2e58f7
Merge: fc95896 4149e6d
Author: mjmj <[email protected]>
Date:   Tue Aug 6 19:06:29 2024 +0900

    Merge branch 'release/v1.0.2'

commit 4149e6d9d5e7c61eecbb5107f2571f27a8d9a0c7
Author: mjmj <[email protected]>
Date:   Tue Aug 6 18:59:42 2024 +0900

    fix: ci pull-request에서 push로 변경

commit 4a4ae8b6ecab7b7dca6ebc3a62bb2165b0a5e258
Author: mjmj <[email protected]>
Date:   Tue Aug 6 18:25:30 2024 +0900

    fix: repositoryTest 삭제

commit a96eaaa3ffdf671b495da506c9503fe2b9171a02
Author: mjmj <[email protected]>
Date:   Tue Aug 6 17:24:57 2024 +0900

    feat: release 1.0.2

commit fc958965b800fdff9b7b63c6bd953dd46cb26b67
Author: mjmj <[email protected]>
Date:   Tue Aug 6 12:07:21 2024 +0900

    hotfix: json resolve 문제 해결 (#85)

* 메인 랜딩페이지 api 작성 (#121)

* feat: 메인 랜딩 페이지 이미지 url을 저장하는 컬럼 추가

* feat: 메인 랜딩 페이지 이미지 url을 저장하는 컬럼 추가

* feat: 메인 랜딩 페이지 화이트리스트 추가

* feat: 메인 랜딩 페이지 api 추가

* chore: 메인 랜딩 페이지 테스트 작성

* feat: 메인 랜딩 페이지 서비스 레이어 작성

* refactor: 도메인이 main인 것은 너무 추상적이다. main을 event 도메인으로 이동

* fix: @Value와 @NotNull과 같이 쓰는 것은 의미가 없음

* fix: any(Long.class)를 anyLong()으로 변경

* fix: Event의 event_registered_at은 created_at과 중복됨

* 드로잉 이벤트 채점 로직 추가합니다. (#125)

* feat: 드로잉 추첨 이벤트 게임 제출 및 채점 API (#124)

* feat: 정답 json 파싱을 위한 의존성 주입과 util 메서드 생성 (#124)

* feat: 파싱 및 채점 후 반환 메서드 생성 (#124)

* feat: 유클리드 거리 계산을 통한 점수 채점 (#124)

* test: 점수 측정 테스트 코드 작성 (#124)

* feat: 코사인 유사도를 통한 채점 로직 구현 (#124)

* feat: 유클리드 점수 측정 범위 0~100 으로 제한 (#124)

* test: 고득점과 저득점 테스트케이스 분리 (#124)

* feat: example 설정 및 controller 연결 (#124)

* feat: 프론트엔드 요청 사항으로 blur 이미지 함께 반환 (#124)

* feat: n_차 게임 점수 저장 로직 추가 (#124)

* test: 저장로직 추가로 인한 테스트 코드 변경 (#124)

* feat: 총 점 계산 로직 (#124)

* feat: ScoreCalculator 분리 (#124)

* test: ScoreCalculator Spy 객체 주입 (#124)

* feat: get 사용 로직 메서드 분리 (#124)

* 드로잉 게임 시 횟수를 차감합니다. (#127)

* feat: default 값, lastChargeAt 추가 및 updateLastVisitedAtAndLastChargeAt 메서드 추가 (#124)

* feat: 로그인 사용자만 API 허용 (#124)

* feat: 기회 차감 로직 생성 및 NoChanceUser 예외 처리 (#124)

* test: 게임 Info 요청 시 게임 가능 횟수에 대한 테스트 코드 (#124)

* test: 첫 참여 유저에 대한 테스트코드 작성 (#124)

* feat: 플레이 타입에 따른 횟수 차감을 위한 Enum 생성 (#126)

* feat: 이벤트 타입을 받기 위한 Dto 변경 (#126)

* feat: UserDetailService Exception BaseException 으로 변경 (#126)

* feat: 플레이 타입에 따른 update 분기 처리 (#126)

* test: 플레이 타입에 따른 테스트코드 작성 (#126)

* 중복 당첨자 검사할 수 있는 로직 추가 (#129)

* fix: 중복 당첨자 검사 기능 추가

* fix: 중복 검사가 있을 때 Dto 템플릿 추가

* feat: 디버그 레벨에서 request(url, method) 기록 저장

* feat: findByUserIdAndSubEventId 추가

* 메인 랜딩 페이지 퀴즈 시작 시간 정보 제공 (#135)

* feat: subEvent가 시작되었는지 여부를 나타내는 메서드

* fix: 퀴즈 시작 시간과 시작 여부를 알려주는 List 변수 작성

* fix: MainLandDto 수정에 따른 로직 수정

* feat: 시작 시간이 잘 응답하는지 확인

* feat: 시작 시간과 시작 여부를 담고 잇는 Dto 작성

* fix: 불필요한 코드 삭제

* fix: swagger example이 부적절하게 나와있는 것을 확인하고 수정

* v1.0.4 의 각종 버그들 정리했습니다. (#133)

* #feat: Spring.log 파일 gitignore 추가 (#128)

* feat: 공유 url 접근 시 공유 점수 추가 (#128)

* feat: Tag 생성 및 컨트롤러 태그 삽입 (#128)

* feat: 로그 파일 위치 변경 및 ignore 최신화 (#128)

* feat: 설명과 상이한 부분 변경 (#128)

* feat: 실제 당첨 이미지를 위한 엔티티 필드 추가 및 반환 값 변경 (#128)

* feat: 랜딩 페이지 조회 시 subEvent 반환되도록 DTO 변경 (#128)

* feat: deault 값 설정 (#128)

* feat: 요구사항 변경으로 엔티티 및 DTO 변경 (#128)

* feat: SQL 문 최신화 (#128)

* Release v1.0.5

commit 32b991cebe0e49d54993f946fb87d9865dc51386
Merge: a5bddd7 99e81a2
Author: Mingyu <[email protected]>
Date:   Wed Aug 14 17:32:39 2024 +0900

    Merge branch 'master' into release/v1.0.5

    # Conflicts:
    #	build.gradle
    #	gradle.properties
    #	src/main/java/com/hyundai/softeer/backend/domain/event/entity/Event.java
    #	src/main/java/com/hyundai/softeer/backend/domain/eventuser/controller/SharedUrlController.java
    #	src/main/java/com/hyundai/softeer/backend/domain/eventuser/entity/EventUser.java
    #	src/main/java/com/hyundai/softeer/backend/domain/eventuser/service/EventUserService.java
    #	src/main/java/com/hyundai/softeer/backend/domain/firstcome/quiz/controller/QuizFirstComeController.java
    #	src/main/java/com/hyundai/softeer/backend/domain/firstcome/quiz/dto/QuizFirstComeSubmitResponseDto.java
    #	src/main/java/com/hyundai/softeer/backend/domain/firstcome/quiz/service/QuizFirstComeService.java
    #	src/main/java/com/hyundai/softeer/backend/domain/lottery/drawing/controller/DrawingLotteryController.java
    #	src/main/java/com/hyundai/softeer/backend/domain/lottery/drawing/dto/DrawingGameInfoDto.java
    #	src/main/java/com/hyundai/softeer/backend/domain/lottery/drawing/dto/DrawingInfoDtos.java
    #	src/main/java/com/hyundai/softeer/backend/domain/lottery/drawing/dto/PositionDto.java
    #	src/main/java/com/hyundai/softeer/backend/domain/lottery/drawing/entity/DrawingLotteryEvent.java
    #	src/main/java/com/hyundai/softeer/backend/domain/lottery/drawing/repository/DrawingLotteryRepository.java
    #	src/main/java/com/hyundai/softeer/backend/domain/lottery/drawing/service/DrawingLotteryService.java
    #	src/main/java/com/hyundai/softeer/backend/domain/subevent/controller/SubEventController.java
    #	src/main/java/com/hyundai/softeer/backend/domain/winner/repository/WinnerRepository.java
    #	src/main/java/com/hyundai/softeer/backend/global/config/SwaggerConfig.java
    #	src/main/java/com/hyundai/softeer/backend/global/exception/error/JwtException.java
    #	src/main/java/com/hyundai/softeer/backend/global/filter/JwtAuthorizationFilter.java
    #	src/main/java/com/hyundai/softeer/backend/global/jwt/UserDetailService.java
    #	src/main/java/com/hyundai/softeer/backend/global/utils/ParseUtil.java
    #	src/main/resources/logback-spring.xml
    #	src/main/resources/sql/integration.sql
    #	src/test/java/com/hyundai/softeer/backend/domain/lottery/drawing/service/DrawingLotteryServiceTest.java
    #	src/test/java/com/hyundai/softeer/backend/global/utils/ParseUtilTest.java
    #	src/test/resources/sql/integration-h2.sql
    #	src/test/resources/sql/integration.sql

commit a5bddd7b0a4a68148932ba7fa49bef2779736a50
Author: Mingyu <[email protected]>
Date:   Wed Aug 14 17:29:44 2024 +0900

    feat: versioning

commit 99e81a2714978a7556a187f761bffb716411fedd
Author: min9805 <[email protected]>
Date:   Fri Aug 9 20:46:32 2024 +0900

    Release/v1.0.4 (#119)

    * feat: release 1.0.2 (#87)

    * 추첨 이벤트 추첨 구현 (#92)

    * feat: EventUser 데이터베이스에서 N 명 추첨 메서드 생성 (#37)

    * feat: 랭킹 Dto Example 추가 (#37)

    * feat: winnersMeta Json 타입으로 변경 (#37)

    * feat: Json 타입 변경으로 인한 util, test 변경 (#37)

    * feat: DTO 변경 및 Wrapper Class to Primitive Type 으로 변경 (#37)

    * #feat: 추첨 메서드 작성 (#37)

    * feat: 추첨 메서드를 위한 API 생성 및 인가를 위한 ApiKey 임시 설정 (#37)

    * feat: WrapperClass 변경 (#37)

    * feat: Request 를 위한 Dto 생성 및 ApiKey Validate (#37)

    * #feat: JsonParseException 추가 (#37)

    * feat: 이미 추첨이 완료된 경우 Exception (#37)

    * feat: 반환값 변경 (#37)

    * feat: 총 수상자 수 로직 위치 변경 (#37)

    * feat: 랜덤 사용자 추출 및 Extra 추출 (#37)

    * feat: 주석 추가 및 네이밍 변경, 예외 처리 순서 변경 (#37)

    * fix: Rank 추가 및 등수 저장 (#37)

    * test: 추첨 로직 테스트 (#37)

    * test: drawWinner 메서드 테스트 코드 작성 (#37)

    * docs: Swagger 문서화 (#37)

    * fix: User builder 로 변경 (#37)

    * #feat: MySQL 예약어로 winner 필드 명 변경 (#37)

    * feat: RAND 및 Pageable 이슈로 인한 Native 쿼리로 변경 (#37)

    * �EventUser Info API 변경합니다. (#95)

    * docs: Swagger 문서화 정리 (#94)

    * feat: EventUser NotFound 시 예외 처리 (#94)

    * test: 메서드 변경으로 인한 테스트 코드 변경 (#94)

    * EventUserRepository 단위 테스트 (#99)

    * feat: 테스트 시 내장 H2 사용 및 초기 SQL 문 삽입 (#94)

    * test: EventUserRepository 테스트 코드 작성

    * cors 설정 변경 및 quiz 이벤트 로직 변경 (#97)

    * fix: CorsConfig를 WebConfig로 통합 (#91)

    * feat: 테스트 용 데이터 생성 메서드 작성 (#91)

    * feat: 환경을 상수로 선언 (test, prod, dev) (#91)

    * feat: 퀴즈 마지막 번호(lastQuizNumber) 추가 (#91)

    * feat: 기대평 결과 값을 오름차순이 아닌 내림차순으로 변경 (#91)

    * fix: 서비스 로직 변경 (기대평을 최신순으로 반환) (#91)

    * fix: QuizNotExistException으로 변경 (#91)

    * fix: /api/v1/quiz 퀴즈 문제 가져오는 api는 로그인이 필요함 (#91)

    * fix: /api/v1/quiz 퀴즈 문제 가져오는 api는 로그인이 필요함 (#91)

    * fix: RequestParam을 Dto로 변경 (#91)

    * feat: 퀴즈 문제 api의 Dto (#91)

    * feat: 퀴즈 이벤트가 진행중인지 검사하는 로직 작성  (#91)

    * feat: 퀴즈 api의 비즈니스 로직을 검사하는 유닛 테스트  (#91)

    * fix: 서브이벤트가 없으면 200반환이 아니라 400으로 반환되어야 한다  (#91)

    * refactor: CorsConfig에서 cors 설정하던 것을 WebConfig로 이동  (#91)

    * feat: quiz repository를 테스트  (#91)

    * feat: findByEventIdAndExecuteType 메서드 추가  (#91)

    * chore: 공백 제거  (#91)

    * fix: h2 테스트 의존성 추가 (#91)

    * fix: 유효성 검사 어노테이션 추가 [@Validated] (#98)

    * sql 파일 수정 및 병합으로 인한 코드 중복 해결 (#103)

    * fix: H2 database INSERT 문법 변경

    * fix: 코드 중복 제거

    * fix: 변수 재선언 제거

    * fix: 테스트할 sql 파일 수정

    * eventId를 쿼리 파라미터로 받지 않게 수정 (#105)

    * fix: eventId를 환경변수로 받음 (#104)

    * fix: eventId 제거 (#104)

    * fix: eventId 제거 (#104)

    * fix: Winners 테이블에 ranking 컬럼 추가 (#104)

    * fix: 상태 값을 상수로 변경 (#104)

    * api 경로 수정 및 예외 수정 (#109)

    * fix: expectationComment -> comment

    * fix: GET /expectation/land -> /expectation
    fix: POST /expectation/register -> /expectation

    * fix: expectationBannerImgUrl -> bannerImgUrl

    * fix: expectationContent -> comments

    * fix: validation 라이브러리 추가

    * fix: @Data, @NoArgsConstruct 추가

    * chore: expectationPage 컬럼 명 변경

    * fix: 퀴즈 테이블명 수정

    * fix: api 경로 수정

    * fix: 중복 코드 제거

    * fix: quiz 테이블명 변경에 따른 코드 수정

    * fix: POST 메서드에 @ParameterObject 제거

    * fix: 테이블 명을 quizzes에서 quiz_firstcome_events로 변경

    * fix: quizSubmitResponseDto를 반환하지 않는 문제 해결

    * fix: @ParameterObject 제거

    * 드로잉 추첨 이벤트 테이블 및 추첨 메서드 도메인 변경합니다. (#110)

    * feat: 추첨 메서드 도메인 변경 (#108)

    * test: 추첨 이벤트 테스트 코드 작성 (#108)

    * feat: Import 부분 삭제 (#108)

    * feat: 유효성 검사 메서드 추출 (#108)

    * 단축 URL 생성 및 Redirect 구현합니다. (#107)

    * feat: Entity 및 Dto 변경 (#100)

    * feat: 이벤트 참가 유저 랜덤값 생성 및 예외 처리 (#100)

    * feat: ShaedUrl 랜덤값 업데이트 및 저장 (#100)

    * feat: shard-url API 생성 및 문서화 (#100)

    * feat: URL 을 통해 특정 유저 매핑 후 Redirect URL 반환 (#100)

    * feat: Shared URL을 PathParameter 로 가지는 API 생성 (#100)

    * Release/v1.0.3

    commit 34bb96bb73bffe6165f59579142bcf862144be3a
    Author: min9805 <[email protected]>
    Date:   Fri Aug 9 11:36:13 2024 +0900

        feat: cors 와이드카드 설정

    commit 21fc9a590a5fbe90a65f22c03cf8ca48682f776b
    Author: min9805 <[email protected]>
    Date:   Fri Aug 9 11:36:02 2024 +0900

        feat: build 시 test active 설정

    commit 7cc569ed5a23fd857bbe06814eae035be4f66529
    Merge: 7b3bf77 44b068c
    Author: min9805 <[email protected]>
    Date:   Fri Aug 9 11:29:34 2024 +0900

        Merge branch 'master' into release/v1.0.3

        # Conflicts:
        #	gradle.properties
        #	src/test/java/com/hyundai/softeer/backend/domain/expectation/repository/ExpectationRepositoryTest.java
        #	src/test/resources/sql/integration.sql

    commit 7b3bf77a8d9337d8392f614061e6512e3086d141
    Author: min9805 <[email protected]>
    Date:   Fri Aug 9 11:24:40 2024 +0900

        feat: API Path 수정

    commit 1346467f6f0af906cec8f04553e7d1fb7a1ad336
    Author: min9805 <[email protected]>
    Date:   Fri Aug 9 11:22:23 2024 +0900

        feat: Log Permission Error

    commit 7f02308d5408a200e5b766d17b881223911e36ff
    Merge: 5db777b 1771b59
    Author: mjmj <[email protected]>
    Date:   Fri Aug 9 10:10:02 2024 +0900

        Merge branch 'release/v1.0.3' into dev

    commit 1771b5960e96d7e3a529328ebb42242e058929cf
    Author: mjmj <[email protected]>
    Date:   Fri Aug 9 10:09:48 2024 +0900

        fix: 테스트 yml 추가

    commit 5db777b8bb8d822299fc12e9fa627b3446057e6c
    Merge: 913af8e b5564cc
    Author: mjmj <[email protected]>
    Date:   Fri Aug 9 02:04:36 2024 +0900

        Merge branch 'release/v1.0.3' into dev

    commit b5564cc72e29d5da6e660761451bea197cf85676
    Author: mjmj <[email protected]>
    Date:   Fri Aug 9 02:03:59 2024 +0900

        fix: base64 적용 해제

    commit 913af8e12a1ecba585293c762ce48156fd63ec42
    Merge: 8f40eb0 4afe625
    Author: mjmj <[email protected]>
    Date:   Fri Aug 9 02:01:11 2024 +0900

        Merge branch 'release/v1.0.3' into dev

    commit 4afe625b9a1604ed5935cbdb0043a0ffe801b50f
    Author: mjmj <[email protected]>
    Date:   Fri Aug 9 02:00:40 2024 +0900

        fix: base64 적용

    commit 8f40eb01508eb70bf568258f8e229af7226cadc0
    Merge: cf2a476 9839ded
    Author: mjmj <[email protected]>
    Date:   Fri Aug 9 01:08:27 2024 +0900

        Merge branch 'release/v1.0.3' into dev

    commit 9839dedd91e6b84cff1a74f60fc0052cf569df67
    Author: mjmj <[email protected]>
    Date:   Fri Aug 9 01:08:12 2024 +0900

        feat: cicd에서 테스트 파일을 읽도록 수정

    commit cf2a476229cd11d83f3d2bd4c5d9cb5bf2934a36
    Merge: cfb648f 907bd62
    Author: mjmj <[email protected]>
    Date:   Fri Aug 9 00:54:34 2024 +0900

        Merge branch 'release/v1.0.3' into dev

    commit 907bd62e9e13fa34819d3ea8b599db9906593a8c
    Author: mjmj <[email protected]>
    Date:   Fri Aug 9 00:54:12 2024 +0900

        chore: 버전 1.0.3 설정

    commit 43f9bc77734d8d442af9f29cb51a99d4964b4282
    Author: mjmj <[email protected]>
    Date:   Fri Aug 9 00:52:42 2024 +0900

        fix: shared_url unique key 위반 해결

    commit 44b068c86e5f39b61a1c90341720f5e71f2e58f7
    Merge: fc95896 4149e6d
    Author: mjmj <[email protected]>
    Date:   Tue Aug 6 19:06:29 2024 +0900

        Merge branch 'release/v1.0.2'

    commit 4149e6d9d5e7c61eecbb5107f2571f27a8d9a0c7
    Author: mjmj <[email protected]>
    Date:   Tue Aug 6 18:59:42 2024 +0900

        fix: ci pull-request에서 push로 변경

    commit 4a4ae8b6ecab7b7dca6ebc3a62bb2165b0a5e258
    Author: mjmj <[email protected]>
    Date:   Tue Aug 6 18:25:30 2024 +0900

        fix: repositoryTest 삭제

    commit a96eaaa3ffdf671b495da506c9503fe2b9171a02
    Author: mjmj <[email protected]>
    Date:   Tue Aug 6 17:24:57 2024 +0900

        feat: release 1.0.2

    commit fc958965b800fdff9b7b63c6bd953dd46cb26b67
    Author: mjmj <[email protected]>
    Date:   Tue Aug 6 12:07:21 2024 +0900

        hotfix: json resolve 문제 해결 (#85)

    * 드로잉 게임 정보 API 생성했습니다. (#115)

    * fix: base64 적용

    * fix: base64 적용 해제

    * fix: 테스트 yml 추가

    * fix: repositoryTest 삭제

    * feat: drawing 엔티티 변경 (#93)

    * feat: 드로잉 게임을 위한 이미지 반환 타입 지정 (#93)

    * test: Drawing Repository 테스트 작성 및 SQL 문 최신화 (#93)

    * test: 드로잉 게임 정보 조회 Service 테스트 코드 작성 (#93)

    * feat: 게임 정보 조회 API 생성 및 문서화 (#93)

    * feat: 반환값 변경으로 인한 DTO 변경 (#93)

    * feat: 데이터 요청사항 변경으로 Dto 변경 (#93)

    * feat: integration-h2.sql 문 최신화 (#93)

    ---------

    Co-authored-by: mjmj <[email protected]>

    * Fix/#114 v1.0.3 bugs (#116)

    * feat: JWT UserNot Found 시 예외 처리 (#114)

    * feat: 로그인 처리에서 JwtException 으로 처리 (#114)

    * feat: Email or Phone 으로 조회하는 메서드 추가 (#114)

    * test: Email, Phone 조회 테스트 코드 작성 (#114)

    * feat: 이메일, 전화번호 확인 로직 추가 (#114)

    * feat: firstcome 오타 수정 (#114)

    * feat: quiz 엔티티 이름 drawing 과 통일 (#114)

    * feat: 랜딩 페이지 별도 분리 및 화이트리스트 적용 (#114)

    * feat: Controller 단 Valid, event_id 설정 및 DTO 전달 (#114)

    * feat: import 정리 (#114)

    * feat: v1.0.4

    * feat: 이름 변경

    * test: Test 코드 변경

    ---------

    Co-authored-by: mjmj <[email protected]>
    Co-authored-by: mjmj <[email protected]>

commit 679277edd7a9a747c910cb8d91972c390c564e33
Author: min9805 <[email protected]>
Date:   Fri Aug 9 11:39:51 2024 +0900

    Release/v1.0.3 (#113)

    * feat: release 1.0.2 (#87)

    * 추첨 이벤트 추첨 구현 (#92)

    * feat: EventUser 데이터베이스에서 N 명 추첨 메서드 생성 (#37)

    * feat: 랭킹 Dto Example 추가 (#37)

    * feat: winnersMeta Json 타입으로 변경 (#37)

    * feat: Json 타입 변경으로 인한 util, test 변경 (#37)

    * feat: DTO 변경 및 Wrapper Class to Primitive Type 으로 변경 (#37)

    * #feat: 추첨 메서드 작성 (#37)

    * feat: 추첨 메서드를 위한 API 생성 및 인가를 위한 ApiKey 임시 설정 (#37)

    * feat: WrapperClass 변경 (#37)

    * feat: Request 를 위한 Dto 생성 및 ApiKey Validate (#37)

    * #feat: JsonParseException 추가 (#37)

    * feat: 이미 추첨이 완료된 경우 Exception (#37)

    * feat: 반환값 변경 (#37)

    * feat: 총 수상자 수 로직 위치 변경 (#37)

    * feat: 랜덤 사용자 추출 및 Extra 추출 (#37)

    * feat: 주석 추가 및 네이밍 변경, 예외 처리 순서 변경 (#37)

    * fix: Rank 추가 및 등수 저장 (#37)

    * test: 추첨 로직 테스트 (#37)

    * test: drawWinner 메서드 테스트 코드 작성 (#37)

    * docs: Swagger 문서화 (#37)

    * fix: User builder 로 변경 (#37)

    * #feat: MySQL 예약어로 winner 필드 명 변경 (#37)

    * feat: RAND 및 Pageable 이슈로 인한 Native 쿼리로 변경 (#37)

    * �EventUser Info API 변경합니다. (#95)

    * docs: Swagger 문서화 정리 (#94)

    * feat: EventUser NotFound 시 예외 처리 (#94)

    * test: 메서드 변경으로 인한 테스트 코드 변경 (#94)

    * EventUserRepository 단위 테스트 (#99)

    * feat: 테스트 시 내장 H2 사용 및 초기 SQL 문 삽입 (#94)

    * test: EventUserRepository 테스트 코드 작성

    * cors 설정 변경 및 quiz 이벤트 로직 변경 (#97)

    * fix: CorsConfig를 WebConfig로 통합 (#91)

    * feat: 테스트 용 데이터 생성 메서드 작성 (#91)

    * feat: 환경을 상수로 선언 (test, prod, dev) (#91)

    * feat: 퀴즈 마지막 번호(lastQuizNumber) 추가 (#91)

    * feat: 기대평 결과 값을 오름차순이 아닌 내림차순으로 변경 (#91)

    * fix: 서비스 로직 변경 (기대평을 최신순으로 반환) (#91)

    * fix: QuizNotExistException으로 변경 (#91)

    * fix: /api/v1/quiz 퀴즈 문제 가져오는 api는 로그인이 필요함 (#91)

    * fix: /api/v1/quiz 퀴즈 문제 가져오는 api는 로그인이 필요함 (#91)

    * fix: RequestParam을 Dto로 변경 (#91)

    * feat: 퀴즈 문제 api의 Dto (#91)

    * feat: 퀴즈 이벤트가 진행중인지 검사하는 로직 작성  (#91)

    * feat: 퀴즈 api의 비즈니스 로직을 검사하는 유닛 테스트  (#91)

    * fix: 서브이벤트가 없으면 200반환이 아니라 400으로 반환되어야 한다  (#91)

    * refactor: CorsConfig에서 cors 설정하던 것을 WebConfig로 이동  (#91)

    * feat: quiz repository를 테스트  (#91)

    * feat: findByEventIdAndExecuteType 메서드 추가  (#91)

    * chore: 공백 제거  (#91)

    * fix: h2 테스트 의존성 추가 (#91)

    * fix: 유효성 검사 어노테이션 추가 [@Validated] (#98)

    * sql 파일 수정 및 병합으로 인한 코드 중복 해결 (#103)

    * fix: H2 database INSERT 문법 변경

    * fix: 코드 중복 제거

    * fix: 변수 재선언 제거

    * fix: 테스트할 sql 파일 수정

    * eventId를 쿼리 파라미터로 받지 않게 수정 (#105)

    * fix: eventId를 환경변수로 받음 (#104)

    * fix: eventId 제거 (#104)

    * fix: eventId 제거 (#104)

    * fix: Winners 테이블에 ranking 컬럼 추가 (#104)

    * fix: 상태 값을 상수로 변경 (#104)

    * api 경로 수정 및 예외 수정 (#109)

    * fix: expectationComment -> comment

    * fix: GET /expectation/land -> /expectation
    fix: POST /expectation/register -> /expectation

    * fix: expectationBannerImgUrl -> bannerImgUrl

    * fix: expectationContent -> comments

    * fix: validation 라이브러리 추가

    * fix: @Data, @NoArgsConstruct 추가

    * chore: expectationPage 컬럼 명 변경

    * fix: 퀴즈 테이블명 수정

    * fix: api 경로 수정

    * fix: 중복 코드 제거

    * fix: quiz 테이블명 변경에 따른 코드 수정

    * fix: POST 메서드에 @ParameterObject 제거

    * fix: 테이블 명을 quizzes에서 quiz_firstcome_events로 변경

    * fix: quizSubmitResponseDto를 반환하지 않는 문제 해결

    * fix: @ParameterObject 제거

    * 드로잉 추첨 이벤트 테이블 및 추첨 메서드 도메인 변경합니다. (#110)

    * feat: 추첨 메서드 도메인 변경 (#108)

    * test: 추첨 이벤트 테스트 코드 작성 (#108)

    * feat: Import 부분 삭제 (#108)

    * feat: 유효성 검사 메서드 추출 (#108)

    * 단축 URL 생성 및 Redirect 구현합니다. (#107)

    * feat: Entity 및 Dto 변경 (#100)

    * feat: 이벤트 참가 유저 랜덤값 생성 및 예외 처리 (#100)

    * feat: ShaedUrl 랜덤값 업데이트 및 저장 (#100)

    * feat: shard-url API 생성 및 문서화 (#100)

    * feat: URL 을 통해 특정 유저 매핑 후 Redirect URL 반환 (#100)

    * feat: Shared URL을 PathParameter 로 가지는 API 생성 (#100)

    * fix: shared_url unique key 위반 해결

    * chore: 버전 1.0.3 설정

    * feat: cicd에서 테스트 파일을 읽도록 수정

    * fix: base64 적용

    * fix: base64 적용 해제

    * fix: 테스트 yml 추가

    * feat: Log Permission Error

    * feat: API Path 수정

    * feat: build 시 test active 설정

    * feat: cors 와이드카드 설정

    ---------

    Co-authored-by: mjmj <[email protected]>
    Co-authored-by: mjmj <[email protected]>

commit 44b068c86e5f39b61a1c90341720f5e71f2e58f7
Merge: fc95896 4149e6d
Author: mjmj <[email protected]>
Date:   Tue Aug 6 19:06:29 2024 +0900

    Merge branch 'release/v1.0.2'

commit 4149e6d9d5e7c61eecbb5107f2571f27a8d9a0c7
Author: mjmj <[email protected]>
Date:   Tue Aug 6 18:59:42 2024 +0900

    fix: ci pull-request에서 push로 변경

commit 4a4ae8b6ecab7b7dca6ebc3a62bb2165b0a5e258
Author: mjmj <[email protected]>
Date:   Tue Aug 6 18:25:30 2024 +0900

    fix: repositoryTest 삭제

commit a96eaaa3ffdf671b495da506c9503fe2b9171a02
Author: mjmj <[email protected]>
Date:   Tue Aug 6 17:24:57 2024 +0900

    feat: release 1.0.2

commit fc958965b800fdff9b7b63c6bd953dd46cb26b67
Author: mjmj <[email protected]>
Date:   Tue Aug 6 12:07:21 2024 +0900

    hotfix: json resolve 문제 해결 (#85)

* Hotfix/v1.0.5

commit b23278ef1e1b1a4b4fa4dd527f5c57524ac3eef4
Author: Mingyu <[email protected]>
Date:   Wed Aug 14 18:33:00 2024 +0900

    feat: 화이트리스트 최신화

commit 156d191b7715aedad6eb92a54a6fb0b02cfc5b93
Author: min9805 <[email protected]>
Date:   Wed Aug 14 17:34:34 2024 +0900

    Release/v1.0.5 (#138)

    * feat: release 1.0.2 (#87)

    * 추첨 이벤트 추첨 구현 (#92)

    * feat: EventUser 데이터베이스에서 N 명 추첨 메서드 생성 (#37)

    * feat: 랭킹 Dto Example 추가 (#37)

    * feat: winnersMeta Json 타입으로 변경 (#37)

    * feat: Json 타입 변경으로 인한 util, test 변경 (#37)

    * feat: DTO 변경 및 Wrapper Class to Primitive Type 으로 변경 (#37)

    * #feat: 추첨 메서드 작성 (#37)

    * feat: 추첨 메서드를 위한 API 생성 및 인가를 위한 ApiKey 임시 설정 (#37)

    * feat: WrapperClass 변경 (#37)

    * feat: Request 를 위한 Dto 생성 및 ApiKey Validate (#37)

    * #feat: JsonParseException 추가 (#37)

    * feat: 이미 추첨이 완료된 경우 Exception (#37)

    * feat: 반환값 변경 (#37)

    * feat: 총 수상자 수 로직 위치 변경 (#37)

    * feat: 랜덤 사용자 추출 및 Extra 추출 (#37)

    * feat: 주석 추가 및 네이밍 변경, 예외 처리 순서 변경 (#37)

    * fix: Rank 추가 및 등수 저장 (#37)

    * test: 추첨 로직 테스트 (#37)

    * test: drawWinner 메서드 테스트 코드 작성 (#37)

    * docs: Swagger 문서화 (#37)

    * fix: User builder 로 변경 (#37)

    * #feat: MySQL 예약어로 winner 필드 명 변경 (#37)

    * feat: RAND 및 Pageable 이슈로 인한 Native 쿼리로 변경 (#37)

    * �EventUser Info API 변경합니다. (#95)

    * docs: Swagger 문서화 정리 (#94)

    * feat: EventUser NotFound 시 예외 처리 (#94)

    * test: 메서드 변경으로 인한 테스트 코드 변경 (#94)

    * EventUserRepository 단위 테스트 (#99)

    * feat: 테스트 시 내장 H2 사용 및 초기 SQL 문 삽입 (#94)

    * test: EventUserRepository 테스트 코드 작성

    * cors 설정 변경 및 quiz 이벤트 로직 변경 (#97)

    * fix: CorsConfig를 WebConfig로 통합 (#91)

    * feat: 테스트 용 데이터 생성 메서드 작성 (#91)

    * feat: 환경을 상수로 선언 (test, prod, dev) (#91)

    * feat: 퀴즈 마지막 번호(lastQuizNumber) 추가 (#91)

    * feat: 기대평 결과 값을 오름차순이 아닌 내림차순으로 변경 (#91)

    * fix: 서비스 로직 변경 (기대평을 최신순으로 반환) (#91)

    * fix: QuizNotExistException으로 변경 (#91)

    * fix: /api/v1/quiz 퀴즈 문제 가져오는 api는 로그인이 필요함 (#91)

    * fix: /api/v1/quiz 퀴즈 문제 가져오는 api는 로그인이 필요함 (#91)

    * fix: RequestParam을 Dto로 변경 (#91)

    * feat: 퀴즈 문제 api의 Dto (#91)

    * feat: 퀴즈 이벤트가 진행중인지 검사하는 로직 작성  (#91)

    * feat: 퀴즈 api의 비즈니스 로직을 검사하는 유닛 테스트  (#91)

    * fix: 서브이벤트가 없으면 200반환이 아니라 400으로 반환되어야 한다  (#91)

    * refactor: CorsConfig에서 cors 설정하던 것을 WebConfig로 이동  (#91)

    * feat: quiz repository를 테스트  (#91)

    * feat: findByEventIdAndExecuteType 메서드 추가  (#91)

    * chore: 공백 제거  (#91)

    * fix: h2 테스트 의존성 추가 (#91)

    * fix: 유효성 검사 어노테이션 추가 [@Validated] (#98)

    * sql 파일 수정 및 병합으로 인한 코드 중복 해결 (#103)

    * fix: H2 database INSERT 문법 변경

    * fix: 코드 중복 제거

    * fix: 변수 재선언 제거

    * fix: 테스트할 sql 파일 수정

    * eventId를 쿼리 파라미터로 받지 않게 수정 (#105)

    * fix: eventId를 환경변수로 받음 (#104)

    * fix: eventId 제거 (#104)

    * fix: eventId 제거 (#104)

    * fix: Winners 테이블에 ranking 컬럼 추가 (#104)

    * fix: 상태 값을 상수로 변경 (#104)

    * api 경로 수정 및 예외 수정 (#109)

    * fix: expectationComment -> comment

    * fix: GET /expectation/land -> /expectation
    fix: POST /expectation/register -> /expectation

    * fix: expectationBannerImgUrl -> bannerImgUrl

    * fix: expectationContent -> comments

    * fix: validation 라이브러리 추가

    * fix: @Data, @NoArgsConstruct 추가

    * chore: expectationPage 컬럼 명 변경

    * fix: 퀴즈 테이블명 수정

    * fix: api 경로 수정

    * fix: 중복 코드 제거

    * fix: quiz 테이블명 변경에 따른 코드 수정

    * fix: POST 메서드에 @ParameterObject 제거

    * fix: 테이블 명을 quizzes에서 quiz_firstcome_events로 변경

    * fix: quizSubmitResponseDto를 반환하지 않는 문제 해결

    * fix: @ParameterObject 제거

    * 드로잉 추첨 이벤트 테이블 및 추첨 메서드 도메인 변경합니다. (#110)

    * feat: 추첨 메서드 도메인 변경 (#108)

    * test: 추첨 이벤트 테스트 코드 작성 (#108)

    * feat: Import 부분 삭제 (#108)

    * feat: 유효성 검사 메서드 추출 (#108)

    * 단축 URL 생성 및 Redirect 구현합니다. (#107)

    * feat: Entity 및 Dto 변경 (#100)

    * feat: 이벤트 참가 유저 랜덤값 생성 및 예외 처리 (#100)

    * feat: ShaedUrl 랜덤값 업데이트 및 저장 (#100)

    * feat: shard-url API 생성 및 문서화 (#100)

    * feat: URL 을 통해 특정 유저 매핑 후 Redirect URL 반환 (#100)

    * feat: Shared URL을 PathParameter 로 가지는 API 생성 (#100)

    * Release/v1.0.3

    commit 34bb96bb73bffe6165f59579142bcf862144be3a
    Author: min9805 <[email protected]>
    Date:   Fri Aug 9 11:36:13 2024 +0900

        feat: cors 와이드카드 설정

    commit 21fc9a590a5fbe90a65f22c03cf8ca48682f776b
    Author: min9805 <[email protected]>
    Date:   Fri Aug 9 11:36:02 2024 +0900

        feat: build 시 test active 설정

    commit 7cc569ed5a23fd857bbe06814eae035be4f66529
    Merge: 7b3bf77 44b068c
    Author: min9805 <[email protected]>
    Date:   Fri Aug 9 11:29:34 2024 +0900

        Merge branch 'master' into release/v1.0.3

        # Conflicts:
        #	gradle.properties
        #	src/test/java/com/hyundai/softeer/backend/domain/expectation/repository/ExpectationRepositoryTest.java
        #	src/test/resources/sql/integration.sql

    commit 7b3bf77a8d9337d8392f614061e6512e3086d141
    Author: min9805 <[email protected]>
    Date:   Fri Aug 9 11:24:40 2024 +0900

        feat: API Path 수정

    commit 1346467f6f0af906cec8f04553e7d1fb7a1ad336
    Author: min9805 <[email protected]>
    Date:   Fri Aug 9 11:22:23 2024 +0900

        feat: Log Permission Error

    commit 7f02308d5408a200e5b766d17b881223911e36ff
    Merge: 5db777b 1771b59
    Author: mjmj <[email protected]>
    Date:   Fri Aug 9 10:10:02 2024 +0900

        Merge branch 'release/v1.0.3' into dev

    commit 1771b5960e96d7e3a529328ebb42242e058929cf
    Author: mjmj <[email protected]>
    Date:   Fri Aug 9 10:09:48 2024 +0900

        fix: 테스트 yml 추가

    commit 5db777b8bb8d822299fc12e9fa627b3446057e6c
    Merge: 913af8e b5564cc
    Author: mjmj <[email protected]>
    Date:   Fri Aug 9 02:04:36 2024 +0900

        Merge branch 'release/v1.0.3' into dev

    commit b5564cc72e29d5da6e660761451bea197cf85676
    Author: mjmj <[email protected]>
    Date:   Fri Aug 9 02:03:59 2024 +0900

        fix: base64 적용 해제

    commit 913af8e12a1ecba585293c762ce48156fd63ec42
    Merge: 8f40eb0 4afe625
    Author: mjmj <[email protected]>
    Date:   Fri Aug 9 02:01:11 2024 +0900

        Merge branch 'release/v1.0.3' into dev

    commit 4afe625b9a1604ed5935cbdb0043a0ffe801b50f
    Author: mjmj <[email protected]>
    Date:   Fri Aug 9 02:00:40 2024 +0900

        fix: base64 적용

    commit 8f40eb01508eb70bf568258f8e229af7226cadc0
    Merge: cf2a476 9839ded
    Author: mjmj <[email protected]>
    Date:   Fri Aug 9 01:08:27 2024 +0900

        Merge branch 'release/v1.0.3' into dev

    commit 9839dedd91e6b84cff1a74f60fc0052cf569df67
    Author: mjmj <[email protected]>
    Date:   Fri Aug 9 01:08:12 2024 +0900

        feat: cicd에서 테스트 파일을 읽도록 수정

    commit cf2a476229cd11d83f3d2bd4c5d9cb5bf2934a36
    Merge: cfb648f 907bd62
    Author: mjmj <[email protected]>
    Date:   Fri Aug 9 00:54:34 2024 +0900

        Merge branch 'release/v1.0.3' into dev

    commit 907bd62e9e13fa34819d3ea8b599db9906593a8c
    Author: mjmj <[email protected]>
    Date:   Fri Aug 9 00:54:12 2024 +0900

        chore: 버전 1.0.3 설정

    commit 43f9bc77734d8d442af9f29cb51a99d4964b4282
    Author: mjmj <[email protected]>
    Date:   Fri Aug 9 00:52:42 2024 +0900

        fix: shared_url unique key 위반 해결

    commit 44b068c86e5f39b61a1c90341720f5e71f2e58f7
    Merge: fc95896 4149e6d
    Author: mjmj <[email protected]>
    Date:   Tue Aug 6 19:06:29 2024 +0900

        Merge branch 'release/v1.0.2'

    commit 4149e6d9d5e7c61eecbb5107f2571f27a8d9a0c7
    Author: mjmj <[email protected]>
    Date:   Tue Aug 6 18:59:42 2024 +0900

        fix: ci pull-request에서 push로 변경

    commit 4a4ae8b6ecab7b7dca6ebc3a62bb2165b0a5e258
    Author: mjmj <[email protected]>
    Date:   Tue Aug 6 18:25:30 2024 +0900

        fix: repositoryTest 삭제

    commit a96eaaa3ffdf671b495da506c9503fe2b9171a02
    Author: mjmj <[email protected]>
    Date:   Tue Aug 6 17:24:57 2024 +0900

        feat: release 1.0.2

    commit fc958965b800fdff9b7b63c6bd953dd46cb26b67
    Author: mjmj <[email protected]>
    Date:   Tue Aug 6 12:07:21 2024 +0900

        hotfix: json resolve 문제 해결 (#85)

    * 드로잉 게임 정보 API 생성했습니다. (#115)

    * fix: base64 적용

    * fix: base64 적용 해제

    * fix: 테스트 yml 추가

    * fix: repositoryTest 삭제

    * feat: drawing 엔티티 변경 (#93)

    * feat: 드로잉 게임을 위한 이미지 반환 타입 지정 (#93)

    * test: Drawing Repository 테스트 작성 및 SQL 문 최신화 (#93)

    * test: 드로잉 게임 정보 조회 Service 테스트 코드 작성 (#93)

    * feat: 게임 정보 조회 API 생성 및 문서화 (#93)

    * feat: 반환값 변경으로 인한 DTO 변경 (#93)

    * feat: 데이터 요청사항 변경으로 Dto 변경 (#93)

    * feat: integration-h2.sql 문 최신화 (#93)

    ---------

    Co-authored-by: mjmj <[email protected]>

    * Fix/#114 v1.0.3 bugs (#116)

    * feat: JWT UserNot Found 시 예외 처리 (#114)

    * feat: 로그인 처리에서 JwtException 으로 처리 (#114)

    * feat: Email or Phone 으로 조회하는 메서드 추가 (#114)

    * test: Email, Phone 조회 테스트 코드 작성 (#114)

    * feat: 이메일, 전화번호 확인 로직 추가 (#114)

    * feat: firstcome 오타 수정 (#114)

    * feat: quiz 엔티티 이름 drawing 과 통일 (#114)

    * feat: 랜딩 페이지 별도 분리 및 화이트리스트 적용 (#114)

    * feat: Controller 단 Valid, event_id 설정 및 DTO 전달 (#114)

    * feat: import 정리 (#114)

    * Release v1.0.4

    commit 92b5f1797b485d74c492536443e1793c97d9cd39
    Author: min9805 <[email protected]>
    Date:   Fri Aug 9 20:44:40 2024 +0900

        test: Test 코드 변경

    commit d4d692b2ca862b3497482dcfc782a39ddacf989e
    Author: min9805 <[email protected]>
    Date:   Fri Aug 9 20:37:07 2024 +0900

        feat: 이름 변경

    commit 6dd36d023903103b875cc1627a42a68b74556acb
    Merge: 2db0aa7 679277e
    Author: min9805 <[email protected]>
    Date:   Fri Aug 9 20:35:45 2024 +0900

        Merge branch 'master' into release/v1.0.4

        # Conflicts:
        #	.github/workflows/gradle-publish.yml
        #	gradle.properties
        #	src/main/java/com/hyundai/softeer/backend/domain/event/dto/ApiKeyRequest.java
        #	src/main/java/com/hyundai/softeer/backend/domain/eventuser/controller/SharedUrlController.java
        #	src/main/java/com/hyundai/softeer/backend/domain/eventuser/service/EventUserService.java
        #	src/main/java/com/hyundai/softeer/backend/domain/expectation/controller/ExpectationController.java
        #	src/main/java/com/hyundai/softeer/backend/domain/firstcome/quiz/controller/QuizFirstComeController.java
        #	src/main/java/com/hyundai/softeer/backend/domain/firstcome/quiz/dto/QuizRequest.java
        #	src/main/java/com/hyundai/softeer/backend/domain/firstcome/quiz/service/QuizFirstComeService.java
        #	src/main/java/com/hyundai/softeer/backend/domain/firstcomeevent/quiz/dto/QuizSubmitRequest.java
        #	src/main/java/com/hyundai/softeer/backend/domain/lottery/drawing/controller/DrawingLotteryController.java
        #	src/main/java/com/hyundai/softeer/backend/domain/lottery/drawing/service/DrawingLotteryService.java
        #	src/main/java/com/hyundai/softeer/backend/domain/lottery/service/LotteryService.java
        #	src/main/java/com/hyundai/softeer/backend/domain/subevent/controller/SubEventController.java
        #	src/main/java/com/hyundai/softeer/backend/domain/subevent/dto/SubEventRequest.java
        #	src/main/java/com/hyundai/softeer/backend/domain/subevent/service/SubEventService.java
        #	src/main/java/com/hyundai/softeer/backend/global/filter/JwtAuthorizationFilter.java
        #	src/test/java/com/hyundai/softeer/backend/domain/eventuser/repository/EventUserRepositoryTest.java
        #	src/test/java/com/hyundai/softeer/backend/domain/expectation/repository/ExpectationRepositoryTest.java
        #	src/test/java/com/hyundai/softeer/backend/domain/lottery/drawing/service/DrawingLotteryServiceTest.java
        #	src/test/java/com/hyundai/softeer/backend/domain/subevent/service/SubEventServiceTest.java
        #	src/test/resources/sql/integration-h2.sql
        #	src/test/resources/sql/integration.sql

    commit 2db0aa7852007040626351b3083ec4c0947437c9
    Author: min9805 <[email protected]>
    Date:   Fri Aug 9 20:31:51 2024 +0900

        feat: v1.0.4

    commit 679277edd7a9a747c910cb8d91972c390c564e33
    Author: min9805 <[email protected]>
    Date:   Fri Aug 9 11:39:51 2024 +0900

        Release/v1.0.3 (#113)

        * feat: release 1.0.2 (#87)

        * 추첨 이벤트 추첨 구현 (#92)

        * feat: EventUser 데이터베이스에서 N 명 추첨 메서드 생성 (#37)

        * feat: 랭킹 Dto Example 추가 (#37)

        * feat: winnersMeta Json 타입으로 변경 (#37)

        * feat: Json 타입 변경으로 인한 util, test 변경 (#37)

        * feat: DTO 변경 및 Wrapper Class to Primitive Type 으로 변경 (#37)

        * #feat: 추첨 메서드 작성 (#37)

        * feat: 추첨 메서드를 위한 API 생성 및 인가를 위한 ApiKey 임시 설정 (#37)

        * feat: WrapperClass 변경 (#37)

        * feat: Request 를 위한 Dto 생성 및 ApiKey Validate (#37)

        * #feat: JsonParseException 추가 (#37)

        * feat: 이미 추첨이 완료된 경우 Exception (#37)

        * feat: 반환값 변경 (#37)

        * feat: 총 수상자 수 로직 위치 변경 (#37)

        * feat: 랜덤 사용자 추출 및 Extra 추출 (#37)

        * feat: 주석 추가 및 네이밍 변경, 예외 처리 순서 변경 (#37)

        * fix: Rank 추가 및 등수 저장 (#37)

        * test: 추첨 로직 테스트 (#37)

        * test: drawWinner 메서드 테스트 코드 작성 (#37)

        * docs: Swagger 문서화 (#37)

        * fix: User builder 로 변경 (#37)

        * #feat: MySQL 예약어로 winner 필드 명 변경 (#37)

        * feat: RAND 및 Pageable 이슈로 인한 Native 쿼리로 변경 (#37)

        * �EventUser Info API 변경합니다. (#95)

        * docs: Swagger 문서화 정리 (#94)

        * feat: EventUser NotFound 시 예외 처리 (#94)

        * test: 메서드 변경으로 인한 테스트 코드 변경 (#94)

        * EventUserRepository 단위 테스트 (#99)

        * feat: 테스트 시 내장 H2 사용 및 초기 SQL 문 삽입 (#94)

        * test: EventUserRepository 테스트 코드 작성

        * cors 설정 변경 및 quiz 이벤트 로직 변경 (#97)

        * fix: CorsConfig를 WebConfig로 통합 (#91)

        * feat: 테스트 용 데이터 생성 메서드 작성 (#91)

        * feat: 환경을 상수로 선언 (test, prod, dev) (#91)

        * feat: 퀴즈 마지막 번호(lastQuizNumber) 추가 (#91)

        * feat: 기대평 결과 값을 오름차순이 아닌 내림차순으로 변경 (#91)

        * fix: 서비스 로직 변경 (기대평을 최신순으로 반환) (#91)

        * fix: QuizNotExistException으로 변경 (#91)

        * fix: /api/v1/quiz 퀴즈 문제 가져오는 api는 로그인이 필요함 (#91)

        * fix: /api/v1/quiz 퀴즈 문제 가져오는 api는 로그인이 필요함 (#91)

        * fix: RequestParam을 Dto로 변경 (#91)

        * feat: 퀴즈 문제 api의 Dto (#91)

        * feat: 퀴즈 이벤트가 진행중인지 검사하는 로직 작성  (#91)

        * feat: 퀴즈 api의 비즈니스 로직을 검사하는 유닛 테스트  (#91)

        * fix: 서브이벤트가 없으면 200반환이 아니라 400으로 반환되어야 한다  (#91)

        * refactor: CorsConfig에서 cors 설정하던 것을 WebConfig로 이동  (#91)

        * feat: quiz repository를 테스트  (#91)

        * feat: findByEventIdAndExecuteType 메서드 추가  (#91)

        * chore: 공백 제거  (#91)

        * fix: h2 테스트 의존성 추가 (#91)

        * fix: 유효성 검사 어노테이션 추가 [@Validated] (#98)

        * sql 파일 수정 및 병합으로 인한 코드 중복 해결 (#103)

        * fix: H2 database INSERT 문법 변경

        * fix: 코드 중복 제거

        * fix: 변수 재선언 제거

        * fix: 테스트할 sql 파일 수정

        * eventId를 쿼리 파라미터로 받지 않게 수정 (#105)

        * fix: eventId를 환경변수로 받음 (#104)

        * fix: eventId 제거 (#104)

        * fix: eventId 제거 (#104)

        * fix: Winners 테이블에 ranking 컬럼 추가 (#104)

        * fix: 상태 값을 상수로 변경 (#104)

        * api 경로 수정 및 예외 수정 (#109)

        * fix: expectationComment -> comment

        * fix: GET /expectation/land -> /expectation
        fix: POST /expectation/register -> /expectation

        * fix: expectationBannerImgUrl -> bannerImgUrl

        * fix: expectationContent -> comments

        * fix: validation 라이브러리 추가

        * fix: @Data, @NoArgsConstruct 추가

        * chore: expectationPage 컬럼 명 변경

        * fix: 퀴즈 테이블명 수정

        * fix: api 경로 수정

        * fix: 중복 코드 제거

        * fix: quiz 테이블명 변경에 따른 코드 수정

        * fix: POST 메서드에 @ParameterObject 제거

        * fix: 테이블 명을 quizzes에서 quiz_firstcome_events로 변경

        * fix: quizSubmitResponseDto를 반환하지 않는 문제 해결

        * fix: @ParameterObject 제거

        * 드로잉 추첨 이벤트 테이블 및 추첨 메서드 도메인 변경합니다. (#110)

        * feat: 추첨 메서드 도메인 변경 (#108)

        * test: 추첨 이벤트 테스트 코드 작성 (#108)

        * feat: Import 부분 삭제 (#108)

        * feat: 유효성 검사 메서드 추출 (#108)

        * 단축 URL 생성 및 Redirect 구현합니다. (#107)

        * feat: Entity 및 Dto 변경 (#100)

        * feat: 이벤트 참가 유저 랜덤값 생성 및 예외 처리 (#100)

        * feat: ShaedUrl 랜덤값 업데이트 및 저장 (#100)

        * feat: shard-url API 생성 및 문서화 (#100)

        * feat: URL 을 통해 특정 유저 매핑 후 Redirect URL 반환 (#100)

        * feat: Shared URL을 PathParameter 로 가지는 API 생성 (#100)

        * fix: shared_url unique key 위반 해결

        * chore: 버전 1.0.3 설정

        * feat: cicd에서 테스트 파일을 읽도록 수정

        * fix: base64 적용

        * fix: base64 적용 해제

        * fix: 테스트 yml 추가

        * feat: Log Permission Error

        * feat: API Path 수정

        * feat: build 시 test active 설정

        * feat: cors 와이드카드 설정

        ---------

        Co-authored-by: mjmj <[email protected]>
        Co-authored-by: mjmj <[email protected]>

    commit 44b068c86e5f39b61a1c90341720f5e71f2e58f7
    Merge: fc95896 4149e6d
    Author: mjmj <[email protected]>
    Date:   Tue Aug 6 19:06:29 2024 +0900

        Merge branch 'release/v1.0.2'

    commit 4149e6d9d5e7c61eecbb5107f2571f27a8d9a0c7
    Author: mjmj <[email protected]>
    Date:   Tue Aug 6 18:59:42 2024 +0900

        fix: ci pull-request에서 push로 변경

    commit 4a4ae8b6ecab7b7dca6ebc3a62bb2165b0a5e258
    Author: mjmj <[email protected]>
    Date:   Tue Aug 6 18:25:30 2024 +0900

        fix: repositoryTest 삭제

    commit a96eaaa3ffdf671b495da506c9503fe2b9171a02
    Author: mjmj <[email protected]>
    Date:   Tue Aug 6 17:24:57 2024 +0900

        feat: release 1.0.2

    commit fc958965b800fdff9b7b63c6bd953dd46cb26b67
    Author: mjmj <[email protected]>
    Date:   Tue Aug 6 12:07:21 2024 +0900

        hotfix: json resolve 문제 해결 (#85)

    * 메인 랜딩페이지 api 작성 (#121)

    * feat: 메인 랜딩 페이지 이미지 url을 저장하는 컬럼 추가

    * feat: 메인 랜딩 페이지 이미지 url을 저장하는 컬럼 추가

    * feat: 메인 랜딩 페이지 화이트리스트 추가

    * feat: 메인 랜딩 페이지 api 추가

    * chore: 메인 랜딩 페이지 테스트 작성

    * feat: 메인 랜딩 페이지 서비스 레이어 작성

    * refactor: 도메인이 main인 것은 너무 추상적이다. main을 event 도메인으로 이동

    * fix: @Value와 @NotNull과 같이 쓰는 것은 의미가 없음

    * fix: any(Long.class)를 anyLong()으로 변경

    * fix: Event의 event_registered_at은 created_at과 중복됨

    * 드로잉 이벤트 채점 로직 추가합니다. (#125)

    * feat: 드로잉 추첨 이벤트 게임 제출 및 채점 API (#124)

    * feat: 정답 json 파싱을 위한 의존성 주입과 util 메서드 생성 (#124)

    * feat: 파싱 및 채점 후 반환 메서드 생성 (#124)

    * feat: 유클리드 거리 계산을 통한 점수 채점 (#124)

    * test: 점수 측정 테스트 코드 작성 (#124)

    * feat: 코사인 유사도를 통한 채점 로직 구현 (#124)

    * feat: 유클리드 점수 측정 범위 0~100 으로 제한 (#124)

    * test: 고득점과 저득점 테스트케이스 분리 (#124)

    * feat: example 설정 및 controller 연결 (#124)

    * feat: 프론트엔드 요청 사항으로 blur 이미지 함께 반환 (#124)

    * feat: n_차 게임 점수 저장 로직 추가 (#124)

    * test: 저장로직 추가로 인한 테스트 코드 변경 (#124)

    * feat: 총 점 계산 로직 (#124)

    * feat: ScoreCalculator 분리 (#124)

    * test: ScoreCalculator Spy 객체 주입 (#124)

    * feat: get 사용 로직 메서드 분리 (#124)

    * 드로잉 게임 시 횟수를 차감합니다. (#127)

    * feat: default 값, lastChargeAt 추가 및 updateLastVisitedAtAndLastChargeAt 메서드 추가 (#124)

    * feat: 로그인 사용자만 API 허용 (#124)

    * feat: 기회 차감 로직 생성 및 NoChanceUser 예외 처리 (#124)

    * test: 게임 Info 요청 시 게임 가능 횟수에 대한 테스트 코드 (#124)

    * test: 첫 참여 유저에 대한 테스트코드 작성 (#124)

    * feat: 플레이 타입에 따른 횟수 차감을 위한 Enum 생성 (#126)

    * feat: 이벤트 타입을 받기 위한 Dto 변경 (#126)

    * feat: UserDetailService Exception BaseException 으로 변경 (#126)

    * feat: 플레이 타입에 따른 update 분기 처리 (#126)

    * test: 플레이 타입에 따른 테스트코드 작성 (#126)

    * 중복 당첨자 검사할 수 있는 로직 추가 (#129)

    * fix: 중복 당첨자 검사 기능 추가

    * fix: 중복 검사가 있을 때 Dto 템플릿 추가

    * feat: 디버그 레벨에서 request(url, method) 기록 저장

    * feat: findByUserIdAndSubEventId 추가

    * 메인 랜딩 페이지 퀴즈 시작 시간 정보 제공 (#135)

    * feat: subEvent가 시작되었는지 여부를 나타내는 메서드

    * fix: 퀴즈 시작 시간과 시작 여부를 알려주는 List 변수 작성

    * fix: MainLandDto 수정에 따른 로직 수정

    * feat: 시작 시간이 잘 응답하는지 확인

    * feat: 시작 시간과 시작 여부를 담고 잇는 Dto 작성

    * fix: 불필요한 코드 삭제

    * fix: swagger example이 부적절하게 나와있는 것을 확인하고 수정

    * v1.0.4 의 각종 버그들 정리했습니다. (#133)

    * #feat: Spring.log 파일 gitignore 추가 (#128)

    * feat: 공유 url 접근 시 공유 점수 추가 (#128)

    * feat: Tag 생성 및 컨트롤러 태그 삽입 (#128)

    * feat: 로그 파일 위치 변경 및 ignore 최신화 (#128)

    * feat: 설명과 상이한 부분 변경 (#128)

    * feat: 실제 당첨 이미지를 위한 엔티티 필드 추가 및 반환 값 변경 (#128)

    * feat: 랜딩 페이지 조회 시 subEvent 반환되도록 DTO 변경 (#128)

    * feat: deault 값 설정 (#128)

    * feat: 요구사항 변경으로 엔티티 및 DTO 변경 (#128)

    * feat: SQL 문 최신화 (#128)

    * feat: versioning

    ---------

    Co-authored-by: mjmj <[email protected]>
    Co-authored-by: mjmj <[email protected]>

commit 99e81a2714978a7556a187f761bffb716411fedd
Author: min9805 <[email protected]>
Date:   Fri Aug 9 20:46:32 2024 +0900

    Release/v1.0.4 (#119)

    * feat: release 1.0.2 (#87)

    * 추첨 이벤트 추첨 구현 (#92)

    * feat: EventUser 데이터베이스에서 N 명 추첨 메서드 생성 (#37)

    * feat: 랭킹 Dto Example 추가 (#37)

    * feat: winnersMeta Json 타입으로 변경 (#37)

    * feat: Json 타입 변경으로 인한 util, test 변경 (#37)

    * feat: DTO 변경 및 Wrapper Class to Primitive Type 으로 변경 (#37)

    * #feat: 추첨 메서드 작성 (#37)

    * feat: 추첨 메서드를 위한 API 생성 및 인가를 위한 ApiKey 임시 설정 (#37)

    * feat: WrapperClass 변경 (#37)

    * feat: Request 를 위한 Dto 생성 및 ApiKey Validate (#37)

    * #feat: JsonParseException 추가 (#37)

    * feat: 이미 추첨이 완료된 경우 Exception (#37)

    * feat: 반환값 변경 (#37)

    * feat: 총 수상자 수 로직 위치 변경 (#37)

    * feat: 랜덤 사용자 추출 및 Extra 추출 (#37)

    * feat: 주석 추가 및 네이밍 변경, 예외 처리 순서 변경 (#37)

    * fix: Rank 추가 및 등수 저장 (#37)

    * test: 추첨 로직 테스트 (#37)

    * test: drawWinner 메서드 테스트 코드 작성 (#37)

    * docs: Swagger 문서화 (#37)

    * fix: User builder 로 변경 (#37)

    * #feat: MySQL 예약어로 winner 필드 명 변경 (#37)

    * feat: RAND 및 Pageable 이슈로 인한 Native 쿼리로 변경 (#37)

    * �EventUser Info API 변경합니다. (#95)

    * docs: Swagger 문서화 정리 (#94)

    * feat: EventUser NotFound 시 예외 처리 (#94)

    * test: 메서드 변경으로 인한 테스트 코드 변경 (#94)

    * EventUserRepository 단위 테스트 (#99)

    * feat: 테스트 시 내장 H2 사용 및 초기 SQL 문 삽입 (#94)

    * test: EventUserRepository 테스트 코드 작성

    * cors 설정 변경 및 quiz 이벤트 로직 변경 (#97)

    * fix: CorsConfig를 WebConfig로 통합 (#91)

    * feat: 테스트 용 데이터 생성 메서드 작성 (#91)

    * feat: 환경을 상수로 선언 (test, prod, dev) (#91)

    * feat: 퀴즈 마지막 번호(lastQuizNumber) 추가 (#91)

    * feat: 기대평 결과 값을 오름차순이 아닌 내림차순으로 변경 (#91)

    * fix: 서비스 로직 변경 (기대평을 최신순으로 반환) (#91)

    * fix: QuizNotExistException으로 변경 (#91)

    * fix: /api/v1/quiz 퀴즈 문제 가져오는 api는 로그인이 필요함 (#91)

    * fix: /api/v1/quiz 퀴즈 문제 가져오는 api는 로그인이 필요함 (#91)

    * fix: RequestParam을 Dto로 변경 (#91)

    * feat: 퀴즈 문제 api의 Dto (#91)

    * feat: 퀴즈 이벤트가 진행중인지 검사하는 로직 작성  (#91)

    * feat: 퀴즈 api의 비즈니스 로직을 검사하는 유닛 테스트  (#91)

    * fix: 서브이벤트가 없으면 200반환이 아니라 400으로 반환되어야 한다  (#91)

    * refactor: CorsConfig에서 cors 설정하던 것을 WebConfig로 이동  (#91)

    * feat: quiz repository를 테스트  (#91)

    * feat: findByEventIdAndExecuteType 메서드 추가  (#91)

    * chore: 공백 제거  (#91)

    * fix: h2 테스트 의존성 추가 (#91)

    * fix: 유효성 검사 어노테이션 추가 [@Validated] (#98)

    * sql 파일 수정 및 병합으로 인한 코드 중복 해결 (#103)

    * fix: H2 database INSERT 문법 변경

    * fix: 코드 중복 제거

    * fix: 변수 재선언 제거

    * fix: 테스트할 sql 파일 수정

    * eventId를 쿼리 파라미터로 받지 않게 수정 (#105)

    * fix: eventId를 환경변수로 받음 (#104)

    * fix: eventId 제거 (#104)

    * fix: eventId 제거 (#104)

    * fix: Winners 테이블에 ranking 컬럼 추가 (#104)

    * fix: 상태 값을 상수로 변경 (#104)

    * api 경로 수정 및 예외 수정 (#109)

    * fix: expectationComment -> comment

    * fix: GET /expectation/land -> /expectation
    fix: POST /expectation/register -> /expectation

    * fix: expectationBannerImgUrl -> bannerImgUrl

    * fix: expectationContent -> comments

    * fix: validation 라이브러리 추가

    * fix: @Data, @NoArgsConstruct 추가

    * chore: expectationPage 컬럼 명 변경

    * fix: 퀴즈 테이블명 수정

    * fix: api 경로 수정

    * fix: 중복 코드 제거

    * fix: quiz 테이블명 변경에 따른 코드 수정

    * fix: POST 메서드에 @ParameterObject 제거

    * fix: 테이블 명을 quizzes에서 quiz_firstcome_events로 변경

    * fix: quizSubmitResponseDto를 반환하지 않는 문제 해결

    * fix: @ParameterObject 제거

    * 드로잉 추첨 이벤트 테이블 및 추첨 메서드 도메인 변경합니다. (#110)

    * feat: 추첨 메서드 도메인 변경 (#108)

    * test: 추첨 이벤트 테스트 코드 작성 (#108)

    * feat: Import 부분 삭제 (#108)

    * feat: 유효성 검사 메서드 추출 (#108)

    * 단축 URL 생성 및 Redirect 구현합니다. (#107)

    * feat: Entity 및 Dto 변경 (#100)

    * feat: 이벤트 참가 유저 랜덤값 생성 및 예외 처리 (#100)

    * feat: ShaedUrl 랜덤값 업데이트 및 저장 (#100)

    * feat: shard-url API 생성 및 문서화 (#100)

    * feat: URL 을 통해 특정 유저 매핑 후 Redirect URL 반환 (#100)

    * feat: Shared URL을 PathParameter 로 가지는 API 생성 (#100)

    * Release/v1.0.3

    commit 34bb96bb73bffe6165f59579142bcf862144be3a
    Author: min9805 <[email protected]>
    Date:   Fri Aug 9 11:36:13 2024 +0900

        feat: cors 와이드카드 설정

    commit 21fc9a590a5fbe90a65f22c03cf8ca48682f776b
    Author: min9805 <[email protected]>
    Date:   Fri Aug 9 11:36:02 2024 +0900

        feat: build 시 test active 설정

    commit 7cc569ed5a23fd857bbe06814eae035be4f66529
    Merge: 7b3bf77 44b068c
    Author: min9805 <[email protected]>
    Date:   Fri Aug 9 11:29:34 2024 +0900

        Merge branch 'master' into release/v1.0.3

        # Conflicts:
        #	gradle.properties
        #	src/test/java/com/hyundai/softeer/backend/domain/expectation/repository/ExpectationRepositoryTest.java
        #	src/test/resources/sql/integration.sql

    commit 7b3bf77a8d9337d8392f614061e6512e3086d141
    Author: min9805 <[email protected]>
    Date:   Fri Aug 9 11:24:40 2024 +0900

        feat: API Path 수정

    commit 1346467f6f0af906cec8f04553e7d1fb7a1ad336
    Author: min9805 <[email protected]>
    Date:   Fri Aug 9 11:22:23 2024 +0900

        feat: Log Permission Error

    commit 7f02308d5408a200e5b766d17b881223911e36ff
    Merge: 5db777b 1771b59
    Author: mjmj <[email protected]>
    Date:   Fri Aug 9 10:10:02 2024 +0900

        Merge branch 'release/v1.0.3' into dev

    commit 1771b5960e96d7e3a529328ebb42242e058929cf
    Author: mjmj <[email protected]>
    Date:   Fri Aug 9 10:09:48 2024 +0900

        fix: 테스트 yml 추가

    commit 5db777b8bb8d822299fc12e9fa627b3446057e6c
    Merge: 913af8e b5564cc
    Author: mjmj <[email protected]>
    Date:   Fri Aug 9 02:04:36 2024 +0900

        Merge branch 'release/v1.0.3' into dev

    commit b5564cc72e29d5da6e660761451bea197cf85676
    Author: mjmj <[email protected]>
    Date:   Fri Aug 9 02:03:59 2024 +0900

        fix: base64 적용 해제

    commit 913af8e12a1ecba585293c762ce48156fd63ec42
    Merge: 8f40eb0 4afe625
    Author: mjmj <[email protected]>
    Date:   Fri Aug 9 02:01:11 2024 +0900

        Merge branch 'release/v1.0.3' into dev

    commit 4afe625b9a1604ed5935cbdb0043a0ffe801b50f
    Author: mjmj <[email protected]>
    Date:   Fri Aug 9 02:00:40 2024 +0900

        fix: base64 적용

    commit 8f40eb01508eb70bf568258f8e229af7226cadc0
    Merge: cf2a476 9839ded
    Author: mjmj <[email protected]>
    Date:   Fri Aug 9 01:08:27 2024 +0900

        Merge branch 'release/v1.0.3' into dev

    commit 9839dedd91e6b84cff1a74f60fc0052cf569df67
    Author: mjmj <[email protected]>
    Date:   Fri Aug 9 01:08:12 2024 +0900

     …
  • Loading branch information
3 people authored Aug 19, 2024
1 parent d7477a7 commit 0595a74
Show file tree
Hide file tree
Showing 28 changed files with 618 additions and 251 deletions.
11 changes: 8 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,18 @@ repositories {
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'junit:junit:4.13.1'
implementation 'org.springframework.boot:spring-boot-starter-aop'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.mysql:mysql-connector-j'
annotationProcessor 'org.projectlombok:lombok'

// db
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'com.mysql:mysql-connector-j'

// redis
implementation 'org.springframework.boot:spring-boot-starter-data-redis'

// validation
implementation 'org.springframework.boot:spring-boot-starter-validation'

Expand All @@ -49,6 +53,7 @@ dependencies {
implementation 'org.json:json:20210307'

testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'junit:junit:4.13.1'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
testRuntimeOnly 'com.mysql:mysql-connector-j'
testAnnotationProcessor 'org.projectlombok:lombok'
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1 +1 @@
version=1.0.6
version=1.1.0
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ public class EventUserInfoDto {
@Schema(description = "공유 보너스 참여 기회", example = "-1")
private Integer shareBonusChance;

@Schema(description = "당첨 여부", example = "true")
private boolean isWinner;

public static EventUserInfoDto fromEntity(EventUser eventUser) {
return EventUserInfoDto.builder()
.lastVisitedAt(eventUser.getLastVisitedAt())
Expand All @@ -44,6 +47,7 @@ public static EventUserInfoDto fromEntity(EventUser eventUser) {
.chance(eventUser.getChance())
.expectationBonusChance(eventUser.getExpectationBonusChance())
.shareBonusChance(eventUser.getShareBonusChance())
.isWinner(eventUser.getIsWinner())
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ public class EventUser {
@Builder.Default
private Boolean isWriteExpectation = false;

@Builder.Default
private Boolean isWinner = false;

@Builder.Default
private LocalDateTime lastVisitedAt = LocalDateTime.now();

Expand Down Expand Up @@ -124,4 +127,8 @@ public void useExpectationBonusChance() {
public void useShareBonusChance() {
this.shareBonusChance -= 1;
}

public void updateWinner() {
this.isWinner = true;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import com.hyundai.softeer.backend.domain.eventuser.exception.SharedUrlNotFoundException;
import com.hyundai.softeer.backend.domain.eventuser.projection.EventUserPageProjection;
import com.hyundai.softeer.backend.domain.eventuser.repository.EventUserRepository;
import com.hyundai.softeer.backend.domain.expectation.constant.ExpectationPage;
import com.hyundai.softeer.backend.domain.subevent.dto.SubEventRequest;
import com.hyundai.softeer.backend.domain.subevent.exception.SubEventNotFoundException;
import com.hyundai.softeer.backend.domain.subevent.repository.SubEventRepository;
Expand All @@ -18,7 +17,6 @@
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

Expand All @@ -36,7 +34,7 @@ public class EventUserService {
public EventUserInfoDto getEventUserInfo(User user, Long subEventId) {
EventUser eventUser = eventUserRepository.findByUserIdAndSubEventId(user.getId(), subEventId)
.orElseThrow(() -> new EventUserNotFoundException());

return EventUserInfoDto.fromEntity(eventUser);
}

Expand Down Expand Up @@ -72,13 +70,13 @@ public EventUserPageResponseDto getUserPage(EventUserPageRequest eventUserPageRe
PAGE_SIZE
);

if(!subEventRepository.existsById(subEventId)) {
if (!subEventRepository.existsById(subEventId)) {
throw new SubEventNotFoundException();
}

Page<EventUserPageProjection> eventUsersWithWinnerStatus = eventUserRepository.findEventUsersWithWinnerStatus(subEventId, pageable);

if(eventUsersWithWinnerStatus.isEmpty()) {
if (eventUsersWithWinnerStatus.isEmpty()) {
throw new EventUserPageNotFoundException();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ public BaseResponse<QuizFirstComeLandResponseDto> getQuizLandingPage() {
1. 정답이 틀린 경우
2. 정답은 맞았으나 선착순에 들지 못한 경우.
3. 정답도 맞고 선착순에도 든 경우.
4. 정답도 맞고 선착순에도 들었지만 이미 참가한 경우.
- request body의 객체의 타입이 맞지 않거나 없는 경우 예외가 발생합니다.
""")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ public class QuizFirstComeInfoRequest {

@NotNull
private Long eventId;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,6 @@ public static QuizFirstComeSubmitResponseDto notCorrect() {
}

public static QuizFirstComeSubmitResponseDto alreadyParticipant() {
return new QuizFirstComeSubmitResponseDto(false, false, true, null);
return new QuizFirstComeSubmitResponseDto(true, true, true, null);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.hyundai.softeer.backend.domain.firstcome.quiz.exception;

import com.hyundai.softeer.backend.global.exception.BaseException;
import org.springframework.http.HttpStatus;

public class AlreadyWonEventUserException extends BaseException {
public AlreadyWonEventUserException() {
super(HttpStatus.BAD_REQUEST, "이미 이벤트에 당첨되었습니다.");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.hyundai.softeer.backend.domain.firstcome.quiz.service;

import lombok.RequiredArgsConstructor;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class CounterService {

public static final String COUNTER_KEY = "COUNTER";

private final RedisTemplate<String, String> redisTemplate;

public Long incrementCounter(String key) {
return redisTemplate.opsForValue().increment(key);
}

public Long decrementCounter(String key) {
return redisTemplate.opsForValue().decrement(key);
}

public Long getCounterValue(String key) {
String value = redisTemplate.opsForValue().get(key);
return (value != null) ? Long.parseLong(value) : 0L;
}

public void resetCounter(String key) {
redisTemplate.opsForValue().set(key, "0");
}

public void setCounter(String key, long value) {
redisTemplate.opsForValue().set(key, String.valueOf(value));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
import com.hyundai.softeer.backend.domain.firstcome.quiz.entity.QuizFirstCome;
import com.hyundai.softeer.backend.domain.firstcome.quiz.exception.QuizAlreadyExistException;
import com.hyundai.softeer.backend.domain.firstcome.quiz.exception.QuizNotFoundException;
import com.hyundai.softeer.backend.domain.firstcome.quiz.exception.QuizRegisterForbiddenException;
import com.hyundai.softeer.backend.domain.firstcome.quiz.repository.QuizFirstComeRepository;
import com.hyundai.softeer.backend.domain.firstcome.quiz.service.winnerdraw.QuizWinnerDraw;
import com.hyundai.softeer.backend.domain.prize.entity.Prize;
import com.hyundai.softeer.backend.domain.prize.repository.PrizeRepository;
import com.hyundai.softeer.backend.domain.subevent.dto.SubEventInfo;
Expand All @@ -22,10 +22,6 @@
import com.hyundai.softeer.backend.domain.subevent.exception.SubEventNotWithinPeriodException;
import com.hyundai.softeer.backend.domain.subevent.repository.SubEventRepository;
import com.hyundai.softeer.backend.domain.user.entity.User;
import com.hyundai.softeer.backend.domain.user.repository.UserRepository;
import com.hyundai.softeer.backend.domain.winner.entity.Winner;
import com.hyundai.softeer.backend.domain.winner.repository.WinnerRepository;
import com.hyundai.softeer.backend.domain.winner.utils.WinnerUtil;
import com.hyundai.softeer.backend.global.utils.DateUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
Expand All @@ -37,7 +33,6 @@
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;

@Service
Expand Down Expand Up @@ -229,21 +224,19 @@ public QuizFirstComeSubmitResponseDto quizSubmit(QuizFirstComeSubmitRequest quiz
return QuizFirstComeSubmitResponseDto.notCorrect();
}

EventUser eventUser = EventUser
.builder()
EventUser newEventUser = EventUser.builder()
.user(authenticatedUser)
.subEvent(subEvent)
.chance(-1)
.build();

eventUserRepository.save(eventUser);
EventUser eventUser = eventUserRepository.save(newEventUser);

return quizWinnerDraw.winnerDraw(quizFirstCome, subEvent, authenticatedUser);
return quizWinnerDraw.winnerDraw(eventUser, quizFirstCome, subEvent, authenticatedUser);
}

@Transactional(readOnly = true)
public List<QuizFirstComeInfoResponseDto> getQuizInfos(QuizFirstComeInfoRequest quizFirstComeInfoRequest) {
Long eventId = quizFirstComeInfoRequest.getEventId();
Long eventId = quizFirstComeInfoRequest.getEventId();

List<QuizFirstComeInfoResponseDto> quizInfos = subEventRepository.findByEventId(eventId)
.stream()
Expand All @@ -257,7 +250,7 @@ public List<QuizFirstComeInfoResponseDto> getQuizInfos(QuizFirstComeInfoRequest
.build();
}).collect(Collectors.toList());

if(quizInfos.isEmpty()) throw new EventNotFoundException();
if (quizInfos.isEmpty()) throw new EventNotFoundException();

return quizInfos;
}
Expand All @@ -270,11 +263,11 @@ public void registerQuiz(List<QuizFirstComeRegisterRequest> quizFirstComeRegiste
eventRepository.findById(eventId)
.orElseThrow(() -> new EventNotFoundException());

if(!subEventRepository.findByEventId(eventId).isEmpty()) {
if (!subEventRepository.findByEventId(eventId).isEmpty()) {
throw new QuizAlreadyExistException();
}

for(QuizFirstComeRegisterRequest quizFirstComeRegisterRequest: quizFirstComeRegisterRequests) {
for (QuizFirstComeRegisterRequest quizFirstComeRegisterRequest : quizFirstComeRegisterRequests) {
SubEvent subEvent = SubEvent.builder()
.startAt(quizFirstComeRegisterRequest.getStartAt())
.endAt(quizFirstComeRegisterRequest.getEndAt())
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.hyundai.softeer.backend.domain.firstcome.quiz.service.winnerdraw;

import com.hyundai.softeer.backend.domain.eventuser.entity.EventUser;
import com.hyundai.softeer.backend.domain.firstcome.quiz.dto.QuizFirstComeSubmitResponseDto;
import com.hyundai.softeer.backend.domain.firstcome.quiz.entity.QuizFirstCome;
import com.hyundai.softeer.backend.domain.subevent.entity.SubEvent;
import com.hyundai.softeer.backend.domain.user.entity.User;

public interface QuizWinnerDraw {

QuizFirstComeSubmitResponseDto winnerDraw(EventUser eventUser, QuizFirstCome quizFirstCome, SubEvent subEvent, User authenticatedUser);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package com.hyundai.softeer.backend.domain.firstcome.quiz.service.winnerdraw;

import com.hyundai.softeer.backend.domain.eventuser.entity.EventUser;
import com.hyundai.softeer.backend.domain.firstcome.quiz.dto.QuizFirstComeSubmitResponseDto;
import com.hyundai.softeer.backend.domain.firstcome.quiz.entity.QuizFirstCome;
import com.hyundai.softeer.backend.domain.firstcome.quiz.service.CounterService;
import com.hyundai.softeer.backend.domain.prize.entity.Prize;
import com.hyundai.softeer.backend.domain.subevent.entity.SubEvent;
import com.hyundai.softeer.backend.domain.user.entity.User;
import com.hyundai.softeer.backend.domain.winner.entity.Winner;
import com.hyundai.softeer.backend.domain.winner.repository.WinnerRepository;
import com.hyundai.softeer.backend.domain.winner.utils.WinnerUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class QuizWinnerDrawRedis implements QuizWinnerDraw {

private final WinnerUtil winnerUtil;
private final WinnerRepository winnerRepository;
private final CounterService counterService;

@Override
public synchronized QuizFirstComeSubmitResponseDto winnerDraw(EventUser eventUser, QuizFirstCome quizFirstCome, SubEvent subEvent, User authenticatedUser) {
if (!winnerUtil.isParticipanted(authenticatedUser.getId(), subEvent.getId()).isEmpty()) {
return QuizFirstComeSubmitResponseDto.alreadyParticipant();
}

long winners = quizFirstCome.getWinners();
long winnerCount = counterService.getCounterValue(CounterService.COUNTER_KEY);

if (winnerCount >= winners) {
return QuizFirstComeSubmitResponseDto.correctBut();
}

Prize prize = quizFirstCome.getPrize();

Winner winner = new Winner();
winner.setPrize(prize);
winner.setSubEvent(subEvent);
winner.setUser(authenticatedUser);
winnerRepository.save(winner);

return QuizFirstComeSubmitResponseDto.winner(prize.getPrizeWinningImgUrl());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package com.hyundai.softeer.backend.domain.firstcome.quiz.service.winnerdraw;

import com.hyundai.softeer.backend.domain.eventuser.entity.EventUser;
import com.hyundai.softeer.backend.domain.eventuser.repository.EventUserRepository;
import com.hyundai.softeer.backend.domain.firstcome.quiz.dto.QuizFirstComeSubmitResponseDto;
import com.hyundai.softeer.backend.domain.firstcome.quiz.entity.QuizFirstCome;
import com.hyundai.softeer.backend.domain.firstcome.quiz.exception.AlreadyWonEventUserException;
import com.hyundai.softeer.backend.domain.firstcome.quiz.repository.QuizFirstComeRepository;
import com.hyundai.softeer.backend.domain.prize.entity.Prize;
import com.hyundai.softeer.backend.domain.subevent.entity.SubEvent;
import com.hyundai.softeer.backend.domain.user.entity.User;
import com.hyundai.softeer.backend.domain.winner.entity.Winner;
import com.hyundai.softeer.backend.domain.winner.repository.WinnerRepository;
import com.hyundai.softeer.backend.domain.winner.utils.WinnerUtil;
import lombok.RequiredArgsConstructor;

@RequiredArgsConstructor
public class QuizWinnerDrawSync implements QuizWinnerDraw {

private final WinnerRepository winnerRepository;
private final WinnerUtil winnerUtil;
private final QuizFirstComeRepository quizFirstComeRepository;
private final EventUserRepository eventUserRepository;

@Override
public synchronized QuizFirstComeSubmitResponseDto winnerDraw(
EventUser eventUser,
QuizFirstCome quizFirstCome,
SubEvent subEvent,
User authenticatedUser) {

if (!winnerUtil.isParticipanted(authenticatedUser.getId(), subEvent.getId()).isEmpty()) {
throw new AlreadyWonEventUserException();
}

int winners = quizFirstCome.getWinners();
int winnerCount = (int) winnerRepository.countWinnerBySubEventId(subEvent.getId());

if (winnerCount >= winners) {
return QuizFirstComeSubmitResponseDto.correctBut();
}

quizFirstCome.setWinnerCount(winnerCount + 1);
quizFirstComeRepository.flush();


Prize prize = quizFirstCome.getPrize();

Winner winner = new Winner();
winner.setPrize(prize);
winner.setSubEvent(subEvent);
winner.setUser(authenticatedUser);
winnerRepository.save(winner);

eventUser.updateWinner();
eventUserRepository.save(eventUser);

return QuizFirstComeSubmitResponseDto.winner(prize.getPrizeWinningImgUrl());
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.hyundai.softeer.backend.domain.lottery.drawing.dto;

import com.hyundai.softeer.backend.domain.subevent.enums.EventPlayType;
import io.swagger.v3.oas.annotations.Parameter;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
Expand All @@ -16,8 +15,4 @@ public class DrawingInfoRequest {
@NotNull
@Parameter
private Long subEventId;

@NotNull
@Parameter
private EventPlayType eventPlayType;
}
Loading

0 comments on commit 0595a74

Please sign in to comment.