Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[5기 - 정의진] SpringBoot Part3 Weekly Mission 제출합니다. #969

Open
wants to merge 134 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
134 commits
Select commit Hold shift + click to select a range
d8206b4
chore: 프로젝트 설정
uijin-j Oct 13, 2023
7a43a14
chore: 프로젝트 구조 수정
uijin-j Oct 13, 2023
b2d855d
docs: gitignore 파일 추가
uijin-j Oct 13, 2023
09383c2
feat: 명령어 리스트 출력 기능
uijin-j Oct 13, 2023
b8b7a70
style: IO 에러 메시지 수정
ASak1104 Oct 13, 2023
3c89d69
feat: 명령어 선택 기능 추가
ASak1104 Oct 13, 2023
956c63e
feat: VoucherService 생성
uijin-j Oct 17, 2023
a90c920
feat: 에러 메시지 Console에 모아서 출력
uijin-j Oct 17, 2023
eab04ca
feat: Voucher 클래스 생성
ASak1104 Oct 17, 2023
7b618f7
feat: VoucherService에 Voucher 생성 기능 추가
ASak1104 Oct 17, 2023
1f39be2
fix: 프로그램이 종료되지 않는 버그 수정
ASak1104 Oct 17, 2023
b0a2cef
refactor: 프로젝트 구조 세분화
ASak1104 Oct 17, 2023
a04242b
feat: 바우처 생성 기능 구현
uijin-j Oct 17, 2023
3afd2b4
feat: 쿠폰 리스트 조회 기능
uijin-j Oct 17, 2023
4753b4d
feat: 메시지 한글로 변경
uijin-j Oct 17, 2023
27ec9d1
style: Console 모듈을 사용하지 않는 출력 코드 수정
ASak1104 Oct 17, 2023
e26fa4a
feat: 쿠폰 생성 시 유효성 검사 기능 추가
ASak1104 Oct 17, 2023
e19a919
feat: 로그 기능 추가
uijin-j Oct 18, 2023
e3e601d
feat: 에러 로그 파일 저장 기능 추가
ASak1104 Oct 18, 2023
e23928d
refactor: run() 메서드와 사용자 입력 부분 분리
ASak1104 Oct 18, 2023
1096094
chore: jackson dependency 추가
ASak1104 Oct 18, 2023
0ff015e
feat: console log appender 추가
ASak1104 Oct 18, 2023
be5b4b4
feat: FileManager 모듈 구현
ASak1104 Oct 18, 2023
3ce8d1a
feat: VoucherType Enum 추가
ASak1104 Oct 18, 2023
989ac9e
feat: voucher 데이터를 파일에 저장하고 불러오는 기능 추가
ASak1104 Oct 18, 2023
a205363
feat: 블랙리스트 조회 기능 추가
uijin-j Oct 18, 2023
bacd5be
refactor: JSONFileManager를 Repository와 병합
ASak1104 Oct 18, 2023
620f34b
feat: 프로파일 설정 적용
uijin-j Oct 18, 2023
7d34e54
feat: 개발환경에 따라 로깅을 다르게 설정
uijin-j Oct 19, 2023
f5c1e48
fix: voucher_data.json 파일이 존재하지 않는 경우 프로그램이 종료되는 오류 해결
uijin-j Oct 19, 2023
db792be
refactor: 콘솔과 어플리케이션 메시지 분리
uijin-j Oct 19, 2023
f4ffc21
feat: 애플리케이션 배너 설정
ASak1104 Oct 19, 2023
870132a
feat: voucher 목록이 있을 때만 출력하도록 수정
ASak1104 Oct 19, 2023
ca47a68
refactor: voucher 타입에 따라 데이터 저장 형식을 분리
ASak1104 Oct 19, 2023
5a0a026
style: reformatting code style
ASak1104 Oct 19, 2023
9121c79
refactor: voucher 서비스와 blacklist 서비스 분리
ASak1104 Oct 19, 2023
0c1a8bf
refactor: Console의 readInt메서드에서 프롬프트 메시지 출력 기능 분리
uijin-j Oct 22, 2023
fdc1b1f
VoucherApplication의 리스트 조회 결과 출력기능을 Console로 변경
uijin-j Oct 22, 2023
a952d4b
refactor: 프로그램 반복 실행 방식을 재귀 호출에서 while문으로 변경
uijin-j Oct 22, 2023
e7a187f
refactor: Application에서 프로그램 실행 로직과 예외 처리 로직을 분리
uijin-j Oct 22, 2023
ff16a1a
refactor: Voucher 인터페이스를 추상 클래스로 변경
uijin-j Oct 22, 2023
9b8d658
refactor: IOException을 RuntimeException 대신 UncheckedIOException으로 감싸서…
uijin-j Oct 22, 2023
3fbfc93
refactor: FixedAmountVoucher과 PercentDiscountVoucher의 유효성 검사 로직 개선
uijin-j Oct 22, 2023
13a07aa
refactor: 사용하지 않는 getter 제거
uijin-j Oct 22, 2023
2d662ea
refactor: Voucher id를 final로 변경
uijin-j Oct 22, 2023
d2771f0
refactor: BlacklistRespository에서 데이터 구분자 상수로 추출
uijin-j Oct 22, 2023
4a623a0
refactor: VoucherManagementSystemApplication에서 프로그램 시작 시 생성되는 로그 포맷 변경
uijin-j Oct 22, 2023
462cbb3
refactor: VoucherApplication에서 컨트롤러 로직 분리 후 의미를 분명히 하기 위해 VoucherAppl…
uijin-j Oct 22, 2023
221b310
feat: prod 프로파일 생성
uijin-j Oct 22, 2023
75298f6
refactor: Console의 printList 메서드명을 printStringList로 변경
uijin-j Oct 23, 2023
634b64d
FixedAmountVoucher 최대 할인 금액 100만원으로 변경
uijin-j Oct 23, 2023
987b265
refactor: BlacklistRepository의 List에 동기화 기능 추가
uijin-j Oct 23, 2023
5685033
refactor: Repository에서 List를 반환할 경우, 불변으로 반환하도록 변경
uijin-j Oct 23, 2023
01ffc2f
refactor: Json관련 클래스명 변경 JSON -> Json
uijin-j Oct 23, 2023
3f7e62d
refactor: load -> loadVoucherMap, loadedList -> jsonVouchers로 메서드명, 변…
uijin-j Oct 23, 2023
941078b
refactor: load -> loadBlacklist로 메서드명 변경
uijin-j Oct 23, 2023
2cdd9c1
refactor: Voucher 구현체들의 validation에서 최대, 최솟값을 한번에 확인하도록 변경
uijin-j Oct 23, 2023
771d192
refactor: 기존의 BlacklistRepository를 인터페이스로 변경 후 구현체로 CsvBlacklistRepos…
uijin-j Oct 23, 2023
93920e4
refactor: Voucher 캐시 자료구조를 HashMap -> ConcurrentHashMap으로 변경
uijin-j Oct 26, 2023
8aa85af
refactor: repository에서 load() 메서드의 반환타입을 void에서 로드된 데이터 Map을 반환하도록 변경
uijin-j Oct 26, 2023
1195580
chore: gradle 파일에 jdbc 의존성 추가
uijin-j Oct 26, 2023
61f5ade
refactor: User -> Customer 도메인명 변경
uijin-j Oct 27, 2023
1ed28dc
feat: CustomerRepository 추가
uijin-j Oct 27, 2023
e0b3918
test: model 레이어 테스트 코드 작성
uijin-j Oct 27, 2023
7d3cc12
feat: CommandMenu 순서 변경
uijin-j Oct 27, 2023
d5cc985
test: MemoryVoucherRepository 테스트 코드 작성
uijin-j Oct 27, 2023
eea2b21
refactor: Customer에서 getInfo() 메서드 제거
uijin-j Oct 27, 2023
4abee97
feat: JdbcVoucherRepository 추가
uijin-j Oct 27, 2023
46fe36d
feat: UUID 관련 유틸 클래스 추가
uijin-j Oct 27, 2023
c86bda2
test: JdbcVoucherRepository 테스트 코드 작성
uijin-j Oct 27, 2023
2267d4c
test: JdbcCustomerRepository 테스트 코드 작성
uijin-j Oct 27, 2023
819ce0d
feat: 특정 바우처 조회 기능 추가 (SEARCH 커맨드)
uijin-j Oct 27, 2023
9213a0e
feat: wallet Application 구조 설정
uijin-j Oct 27, 2023
36f34c4
feat: 지갑 서비스 기능 추가
uijin-j Oct 27, 2023
f3b1d2a
docs: voucher_mgmt_system 데이터 베이스 ddl 스크립트 추가
uijin-j Oct 27, 2023
cc06b8b
docs: 데이터 베이스 연결 관련 파일(application.yml, schema.sql) 수정
uijin-j Oct 29, 2023
0b64103
refactor: 프로젝트명 vouchermanagementsysten -> voucher_management_system으…
uijin-j Oct 29, 2023
93d35e6
refactor: ConsolevoucherApplication을 ManagementApplication과 WalletApp…
uijin-j Oct 29, 2023
e779e5e
test: UUIDUtil 테스트 코드 작성
uijin-j Oct 29, 2023
5e97b28
test: PercentDiscountVoucher 생성 테스트 코드 추가
uijin-j Oct 29, 2023
5b814df
refactor: UUID를 byte[]로 변환하는 로직을 DB 내장 메서드에서 UUIDUtil 메서드 사용으로 변경
uijin-j Oct 29, 2023
ce3d026
test: VoucherService 테스트 코드 작성
uijin-j Oct 29, 2023
50cbc2b
test: BlacklistService 테스트 코드 작성
uijin-j Oct 29, 2023
c474e19
test: CustomerSerivce 테스트 코드 작성
uijin-j Oct 29, 2023
ec5907a
structure: 패키지 구조 정리
uijin-j Oct 31, 2023
6395b5f
test: UUIDUtilTest 리팩토링
uijin-j Oct 31, 2023
37df16d
refactor: Customer 도메인에 Builder 패턴 적용
uijin-j Oct 31, 2023
0ba117e
test: Customer 테스트 추가
uijin-j Oct 31, 2023
97cb580
refactor: Voucher 도메인 추상 클래스에서 클래스로 구조 변경
uijin-j Oct 31, 2023
e9ec743
refactor: controller, service 레이어에 Dto 추가
uijin-j Oct 31, 2023
47b20e5
refactor: 콘솔 어플리케이션 쿠폰 리스트 출력 포맷 변경
uijin-j Oct 31, 2023
2941058
fix: 이미 존재하는 id로 쿠폰을 생성하는 오류 해결
uijin-j Oct 31, 2023
183b21c
test: VoucherRespotitory 테스트 추가
uijin-j Oct 31, 2023
99d5c2e
refactor: VoucherRespository에 @Profile 대신 @Primary 적용
uijin-j Oct 31, 2023
a5e93e3
test: CsvBlacklistRepository 테스트 추가
uijin-j Oct 31, 2023
9787d4c
refactor: 커맨드 메뉴 순서 변경
uijin-j Nov 1, 2023
23adf2b
refactor: 콘솔 메시지 상수로 관리
uijin-j Nov 1, 2023
1bbe347
chore: spring-web, thymeleaf 의존성 추가
uijin-j Nov 1, 2023
22c6fdc
chore: thymeleaf dialect 의존성 추가
uijin-j Nov 1, 2023
5398476
feat: 쿠폰 조회 페이지(voucher_list.html) 제공 컨트롤러 추가
uijin-j Nov 1, 2023
25ba671
feat: VoucherViewController에 Voucher 삭제 메서드 추가
uijin-j Nov 1, 2023
7338f8a
fix: 바우처 삭제 버튼 클릭 시 요청이 Post로 가는 오류 해결
uijin-j Nov 3, 2023
3747c37
feat: VoucherViewController에 Voucher 상세 페이지 기능 추가
uijin-j Nov 3, 2023
dafa837
feat: VoucherViewController에 Voucher 생성 페이지 기능 추가
uijin-j Nov 3, 2023
b74491e
docs: sample_data.json 변경
uijin-j Nov 3, 2023
9bd3c9f
structure: controller 레이어 하위에 dto 폴더 추가
uijin-j Nov 3, 2023
fc2266b
refactor: 'dev' profile 로깅 방식 변경
uijin-j Nov 3, 2023
bacea54
refactor: VoucherViewController 리팩토링 (메서드 분리)
uijin-j Nov 4, 2023
27879f2
docs: resource > data 폴더 수정
uijin-j Nov 4, 2023
894ac02
test: VoucherViewController 테스트 코드 작성
uijin-j Nov 4, 2023
24f9489
fix: 저장소에 존재하는 쿠폰이 없는 경우 생성되는 쿠폰의 아이디가 2L이 되는 오류 해결
uijin-j Nov 4, 2023
1fca235
feat: prod profile을 default profile로 설정
uijin-j Nov 4, 2023
05fd8bd
test: VoucherCreateServiceRequest 생성자 변경에 따른 VoucherService 테스트 코드 변경
uijin-j Nov 4, 2023
59b3b55
feat: VoucherCreateRequest에 discountValue 유효성 검사 로직 추가
uijin-j Nov 4, 2023
95d3955
test: VoucherController 테스트 코드 작성
uijin-j Nov 4, 2023
5b56f46
test: CustomerController 테스트 코드 작성
uijin-j Nov 4, 2023
7b27225
feat: 바우처 RestAPI 기능 추가
uijin-j Nov 4, 2023
a1f374f
feat: 할인 타입별 쿠폰 조회 기능 추가
uijin-j Nov 4, 2023
9886727
test: Service 테스트 시 MemoryRepositoy 사용에서 JdbcRepository 사용으로 변경
uijin-j Nov 4, 2023
06a2b21
refactor: ConsoleVoucherApplication 리팩토링
uijin-j Nov 4, 2023
d8baa9b
refactor: 콘솔 메시지를 클래스 안에서 상수로 저장하고 에러 메시지만 별도의 클래스로 분리
uijin-j Nov 5, 2023
cd5a133
docs: application.yml을 profile에 따라 분리
uijin-j Nov 5, 2023
4850a6e
feat: 이메일로 사용자 조회 기능 추가
uijin-j Nov 5, 2023
6533f54
refacotr: CustomerIdAndName위치를 dto 폴더 아래로 변경
uijin-j Nov 5, 2023
cad8d05
refactor: consoleApp 전체적인 코드 리팩토링
uijin-j Nov 5, 2023
bd8d7fb
refactor: VoucherService 기본이 @Transactional(readOnly = true)로 변경
uijin-j Nov 5, 2023
1fbc3cb
test: 테스트 포맷 통일
uijin-j Nov 5, 2023
1665247
docs: thymeleaf templates html 파일에 스타일 적용
uijin-j Nov 5, 2023
021c299
fix: 지갑서비스 -> 메인 서비스 -> 관리 서비스로 전환할 때, 관리서비스로 넘어가지 않는 오류 해결
uijin-j Nov 5, 2023
06dad6d
feat: 콘솔 지갑 서비스 "준비중"으로 변경
uijin-j Nov 5, 2023
1488876
feat: 블랙리스트 조회 시 String 반환에서 CustomerIdAndName 객체 반환으로 변경
uijin-j Nov 5, 2023
3f89d0d
refactor: 사용하지 않는 변수 제거
uijin-j Nov 5, 2023
1c1a35b
refactor: 에러 메시지를 ErrorMessage 클래스로 분리
uijin-j Nov 5, 2023
460cfe0
refactor: 메서드 분리
uijin-j Nov 5, 2023
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
193 changes: 193 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,193 @@
# Created by https://www.toptal.com/developers/gitignore/api/macos,gradle,java,git,intellij+all
# Edit at https://www.toptal.com/developers/gitignore?templates=macos,gradle,java,git,intellij+all

### Git ###
# Created by git for backups. To disable backups in Git:
# $ git config --global mergetool.keepBackup false
*.orig

# Created by git when using merge tools for conflicts
*.BACKUP.*
*.BASE.*
*.LOCAL.*
*.REMOTE.*
*_BACKUP_*.txt
*_BASE_*.txt
*_LOCAL_*.txt
*_REMOTE_*.txt

### Intellij+all ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839

# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf

# AWS User-specific
.idea/**/aws.xml

# Generated files
.idea/**/contentModel.xml

# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml

# Gradle
.idea/**/gradle.xml
.idea/**/libraries

# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr

# CMake
cmake-build-*/

# Mongo Explorer plugin
.idea/**/mongoSettings.xml

# File-based project format
*.iws

# IntelliJ
out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Cursive Clojure plugin
.idea/replstate.xml

# SonarLint plugin
.idea/sonarlint/

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties

# Editor-based Rest Client
.idea/httpRequests

# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser

### Intellij+all Patch ###
# Ignore everything but code style settings and run configurations
# that are supposed to be shared within teams.

.idea/*

!.idea/codeStyles
!.idea/runConfigurations

### Java ###
# Compiled class file
*.class

# Log file
*.log

# BlueJ files
*.ctxt

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
replay_pid*

### macOS ###
# General
.DS_Store
.AppleDouble
.LSOverride

# Icon must end with two \r
Icon


# Thumbnails
._*

# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent

# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk

### macOS Patch ###
# iCloud generated files
*.icloud

### Gradle ###
.gradle
**/build/
!src/**/build/

# Ignore Gradle GUI config
gradle-app.setting

# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
!gradle-wrapper.jar

# Avoid ignore Gradle wrappper properties
!gradle-wrapper.properties

# Cache of project
.gradletasknamecache

# Eclipse Gradle plugin generated files
# Eclipse Core
.project
# JDT-specific (Eclipse Java Development Tools)
.classpath

### Gradle Patch ###
# Java heap dump
*.hprof

# End of https://www.toptal.com/developers/gitignore/api/macos,gradle,java,git,intellij+all
20 changes: 20 additions & 0 deletions HELP.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Read Me First
The following was discovered as part of building this project:

* The JVM level was changed from '16' to '17', review the [JDK Version Range](https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-Versions#jdk-version-range) on the wiki for more details.
* The original package name 'team.marco.voucher-management-system' is invalid and this project uses 'team.marco.voucher_management_system' instead.

# Getting Started

### Reference Documentation
For further reference, please consider the following sections:

* [Official Gradle documentation](https://docs.gradle.org)
* [Spring Boot Gradle Plugin Reference Guide](https://docs.spring.io/spring-boot/docs/3.1.4/gradle-plugin/reference/html/)
* [Create an OCI image](https://docs.spring.io/spring-boot/docs/3.1.4/gradle-plugin/reference/html/#build-image)

### Additional Links
These additional references should also help you:

* [Gradle Build Scans – insights for your project's build](https://scans.gradle.com#gradle)

37 changes: 37 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
plugins {
id 'java'
id 'org.springframework.boot' version '3.1.4'
id 'io.spring.dependency-management' version '1.1.3'
}

group = 'team.marco'
version = '0.0.1-SNAPSHOT'

java {
sourceCompatibility = '17'
}

repositories {
mavenCentral()
}

dependencies {
// Spring boot
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation('nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect')
implementation 'org.springframework.boot:spring-boot-starter-jdbc'

// Test
testImplementation 'org.springframework.boot:spring-boot-starter-test'

// Jackson
implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.2'

// Mysql
implementation group: 'com.mysql', name: 'mysql-connector-j', version: '8.1.0'
}

tasks.named('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.3-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Loading