Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
bd12cae
feat: setup project
Livenow14 May 30, 2025
1f0573e
chore: 의존성 추가 및 데이터베이스 관련 설정 추가
kkiseug Jun 10, 2025
2ba4a4a
feat: 앨범 등록 기능 구현
kkiseug Jun 10, 2025
1e54592
feat: 멤버 등록 기능 구현
kkiseug Jun 10, 2025
dba2bbd
feat: 예약 등록 기능 구현
kkiseug Jun 10, 2025
a4f3a28
feat: Member 유니크 키 이름으로 변경
kkiseug Jun 10, 2025
28a527b
feat: 초기 데이터 추가
kkiseug Jun 10, 2025
274083c
feat: 세션 로그인 기능 구현
kkiseug Jun 10, 2025
979ffd2
feat: 내 예약 조회 기능 추가
kkiseug Jun 10, 2025
9022653
refactor: 패키지 구조 변경
kkiseug Jun 10, 2025
5290ad4
feat: 회원 본인 예약 삭제 기능 추가
kkiseug Jun 10, 2025
862062d
feat: 예약 상세 조회 기능 추가
kkiseug Jun 10, 2025
f7085e4
feat: 전역 예외 처리 로직 추가
kkiseug Jun 10, 2025
55ce93d
refactor: 앨범 저장과 스포티파이 검색 기능 분리
kkiseug Jun 10, 2025
31b8022
test: 멤버 등록 관련 테스트 추가
kkiseug Jun 10, 2025
b45b24d
feat: 앨범 삭제 기능 추가
kkiseug Jun 10, 2025
68a0a63
refactor: 각 테스트 메서드 분리를 위해 트랜잭션 애노테이션 추가
kkiseug Jun 10, 2025
a81636b
feat: 앨범 조회 기능 추가
kkiseug Jun 10, 2025
e52d785
test: AlbumService 테스트 추가
kkiseug Jun 10, 2025
a1248ee
docs: 애플리케이션 설명 추가
kkiseug Jun 10, 2025
4b7c5cb
feat: 추첨 생성 기능 추가
kkiseug Jun 17, 2025
2f86124
refactor: 예약이 앨범이 아닌 추첨에 대한 예약을 하도록 변경
kkiseug Jun 17, 2025
f0f48be
docs: 추첨 관련 요구사항 추가
kkiseug Jun 17, 2025
fba983f
chore: 예약 의존성 변경에 따라 sql문 수정
kkiseug Jun 17, 2025
88739f5
feat: 지나간 추첨에 대한 예약 불가 검증 추가
kkiseug Jun 17, 2025
8d150db
test: DisplayName과 메서드 이름 분리
kkiseug Jun 17, 2025
ff38400
refactor: 서비스 save 네이밍 대신 create로 변경
kkiseug Jun 17, 2025
ecff6bf
docs: 기능 요구사항 체크리스트 업데이트
kkiseug Jun 17, 2025
6c73cf9
test: 추첨 단위 테스트 추가
kkiseug Jun 17, 2025
5775cde
refactor: 패키지 구조 개편
kkiseug Jun 17, 2025
94a05ca
refactor: 테스트 코드 및 패키지 구조 리팩토링
kkiseug Jun 18, 2025
5bd6bdb
feat: 멤버 Role 기능 추가
kkiseug Jun 18, 2025
f2429ad
feat: 어드민만 Album, Spotify 관련 기능 사용하도록 변경
kkiseug Jun 18, 2025
ce7649c
refactor: 초기 데이터 sql문 갱신
kkiseug Jun 18, 2025
5426c70
refactor: 테스트 트랜잭션 제거 및 공통 유틸 클래스 분리
kkiseug Jun 18, 2025
2fa8468
feat: 글로벌 예외 핸들러 확장
kkiseug Jun 18, 2025
d69f0f2
docs: README 목적에 맞게 일부 변경
kkiseug Jun 18, 2025
88d0720
feat: 예약 주소 변경 기능 추가
kkiseug Jun 18, 2025
9d8bf25
refactor: Spotify 관련 토큰 및 요청 로직 분리
kkiseug Jun 18, 2025
507ef6d
feat: 스포티파이 API 통합 테스트 추가
kkiseug Jun 18, 2025
f4b9ba5
chore: 테스트 의존성 수정
kkiseug Jun 18, 2025
b267649
feat: 예약 중복 방지 로직 추가
kkiseug Jun 18, 2025
86ac0a4
docs: README 기능 설명 추가
kkiseug Jun 18, 2025
755862d
feat: 앨범 중복 등록 방지 로직 추가
kkiseug Jun 18, 2025
04898ec
test: 중복 등록 테스트 추가
kkiseug Jun 18, 2025
dfa6b4f
feat: 로그아웃 기능 추가 및 인터셉터 경로 확장
kkiseug Jun 18, 2025
f5ad4b9
feat: 세션 만료 시간 설정 추가
kkiseug Jun 18, 2025
1b69e7f
refactor: Spotify 앨범 검색 API Request 수정
kkiseug Jun 18, 2025
e622187
chore: 개발 서버용 application.yml 작성
kkiseug Sep 3, 2025
edd4416
chore: 운영 서버용 application.yml 작성
kkiseug Sep 3, 2025
950d7b8
chore: mysql driver 의존성 추가
kkiseug Sep 3, 2025
25590b5
chore: ci 스크립트 작성
kkiseug Sep 3, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
/gradlew text eol=lf
*.bat text eol=crlf
*.jar binary
36 changes: 36 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: CI

on:
pull_request:
branches: [ yeezy-com ]
workflow_dispatch:

jobs:
test:
name: 프로젝트 빌드
runs-on: ubuntu-latest

steps:
- name: 레포지토리 불러오기
uses: actions/checkout@v4

- name: JDK 21 설정
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'openjdk'
cache: 'gradle'

- name: gradlew 실행 권한 부여
run: chmod +x gradlew

- name: 프로젝트 gradlew 빌드
run: ./gradlew build

- name: 테스트 결과 보고서 작성
uses: dorny/test-reporter@v1
if: success() || failure()
with:
name: 테스트 결과
path: backend/build/test-results/test/*.xml
reporter: java-junit
37 changes: 37 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
HELP.md
.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
out/
!**/src/main/**/out/
!**/src/test/**/out/

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

### VS Code ###
.vscode/
31 changes: 30 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,30 @@
# lv3-final-mission
# 앨범 추첨 예약 서비스(라플)

해당 애플리케이션은 Spotify API를 활용하여 앨범을 등록 및 삭제하고 앨범에 대한 추첨을 시작할 수 있습니다. <br />
추첨이 시작되면 사용자들은 이를 예약할 수 있습니다. 또한, 앨범 추첨에 당첨될 시 해당 앨범의 CD를 배송합니다. <br />

## 요구사항
- 앨범
- 앨범에 대한 조작은 Role: Admin만 가능하다.
- [x] 앨범 등록을 할 수 있다.
- [x] spotify 검색 api를 활용하여 앨범 정보를 찾아온다.
- [x] 앨범 조회를 할 수 있다.
- [x] 앨범 삭제를 할 수 있다.

- 추첨
- [x] 등록된 앨범으로 추첨을 시작할 수 있다.
- [x] 추첨을 등록할 수 있다.
- [x] 추첨은 마감 날짜가 정해져있다.

- 예약
- [x] 사용자는 추첨에 대한 예약을 할 수 있다.
- [x] 마감 기한이 지난 추첨에 대해서는 예약할 수 없다.
- [x] 하나의 추첨에 대해 중복 예약할 수 없다.
- [x] 사용자는 본인의 예약 현황을 알 수 있다.
- [x] 사용자는 본인 예약의 배송지를 수정할 수 있다.
- [x] 사용자는 본인의 예약을 삭제할 수 있다.

- 사용자
- [x] 사용자는 본인의 이름으로만 가입이 가능하다.
- [x] 중복되는 이름을 허용하지 않는다.
- [x] 사용자는 본인의 이름으로 로그인 할 수 있다.
42 changes: 42 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
plugins {
id 'org.springframework.boot' version '3.4.4'
id 'io.spring.dependency-management' version '1.1.7'
id 'java'
}

group = 'nextstep'
version = '0.0.1-SNAPSHOT'

java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}

repositories {
mavenCentral()
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

implementation 'io.jsonwebtoken:jjwt-api:0.11.2'
implementation 'io.jsonwebtoken:jjwt-impl:0.11.2'
implementation 'io.jsonwebtoken:jjwt-gson:0.11.2'

implementation 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'

runtimeOnly 'com.mysql:mysql-connector-j:9.4.0'
runtimeOnly 'com.h2database:h2'

testImplementation 'org.springframework.cloud:spring-cloud-contract-wiremock:4.3.0'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'io.rest-assured:rest-assured:5.3.1'
}

test {
useJUnitPlatform()
}
Binary file added gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
7 changes: 7 additions & 0 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Loading