1- # SpringBoot Basic Weekly Mission 1
2- > 바우처 관리 애플리케이션 만들기 1 - 김영주
3-
4-
5-
6- # 1. 요구사항
7-
8- ## 프로젝트 요구사항
9-
10- 1 . Gradle로 프로젝트를 빌드하고, SpringBoot 프로젝트 환경을 설정한다.
11- 2 . Web 기능 없이 Command-line Application으로 만든다.
12- 3 . logback을 통해 로그를 띄우고, 특히 에러는 별도의 파일로 기록한다.
13- 4 . 실행 가능한 jar 파일을 생성한다.
14-
15-
16-
17- ## 기능 요구사항
18-
19- ### 1. 프로그램 시작(랜딩 화면)
20-
21- ```
22- [할인권 프로그램 v1.0]
23- 1. 새 할인권 생성
24- 2. 할인권 조회
25- 3. 프로그램 종료
26-
27- 입력 : 1
28- ```
29-
30- 사용자는 숫자를 입력해서 원하는 메뉴를 선택할 수 있다.
31- - ` 1 ` → 새 할인권 생성 메뉴 실행
32- - ` 2 ` → 저장된 할인권 조회 메뉴 실행
33- - ` 3 ` → 프로그램 종료
34-
35-
36-
37- ### 2. 새 할인권 생성
38-
39- 사용자는 숫자를 입력해서 원하는 할인 방식을 선택할 수 있다.
40-
41- - ` 1 ` → 고정 할인 방식
42- - ` 2 ` → 비율 할인 방식
43-
44-
45-
46- 할인권 생성이 완료되면 생성된 할인권의 ` UUID, 할인 방식, 금액/비율 ` 내용을 보여준다.
47-
48- - ` 고정 할인 방식 `
49-
50- ```
51- 할인 방식을 선택하세요.
52- 1. 고정 할인
53- 2. 비율 할인
54- 입력 : 1
55-
56- 고정 할인 금액을 입력하세요.
57- 1이상의 자연수만 입력하세요. 단위는 원입니다.
58- 입력 : 1000
59-
60- 할인권 생성이 완료되었습니다.
61- sf5e8400-53m2-nn53-me09-456292156231 | 고정 할인 | 1,000원
62- ```
63-
64- - 사용자는 1 이상의 자연수를 입력하여, 고정 할인 금액을 설정할 수 있다.
65-
66- - `비율 할인 방식`
67-
68- ```
69- 할인 방식을 선택하세요.
70- 1. 고정 할인
71- 2. 비율 할인
72- 입력 : 2
73-
74- 비율 할인 퍼센트를 입력하세요.
75- 1이상 100이하의 자연수만 입력하세요. 단위는 %입니다.
76- 입력 : 40
77-
78- 할인권 생성이 완료되었습니다.
79- 550e8400-e29b-41d4-a716-446655440000 | 비율 할인 | 40%
80- ```
81-
82- - 사용자는 1 이상 100 이하의 자연수를 입력하여, 비율 할인 퍼센트를 설정할 수 있다.
83-
84-
85-
86- ### 3. 할인권 조회
87-
88- ```
89- 현재까지 생성된 할인권 목록입니다.
90- 550e8400-e29b-41d4-a716-446655440000 | 비율 할인 | 40%
91- sf5e8400-53m2-nn53-me09-456292156231 | 고정 할인 | 1,000원
92- ```
93-
94- 저장된 할인권들의 `UUID, 할인 방식, 금액/비율` 목록을 조회한다.
95-
96-
97-
98- ### 4. 프로그램 종료
99-
100- ```
101- [ 할인권 프로그램 v1.0]
102- 1 . 새 할인권 생성
103- 2 . 할인권 조회
104- 3 . 프로그램 종료
105-
106- 입력 : 3
107-
108- 프로그램을 종료합니다.
109- ```
110-
111- 실행 중인 프로그램을 종료한다.
112-
113-
114-
115- ------
116-
117- # 2. 설계
118-
119- ## 주요 객체 목록
120-
121- 1. **클라이언트**
122- - 입력(InputView.java) : 각종 메뉴, 할인 금액/비율에 대해 사용자 입력을 받는다.
123- - 출력(OutputView.java) : 각종 결과 및 예외메시지를 출력한다.
124- 2. **컨트롤러(VoucherController.java)**
125- - 사용자의 메뉴 입력에 따라 각 메뉴를 실행한다.
126- 3. **서비스(VoucherService.java)**
127- - 할인권과 관련된 기능을 수행한다.
128- - 새로운 할인권(고정, 비율)을 생성한다.
129- - 저장된 모든 할인권 목록을 조회한다.
130- 4. **할인권(Voucher.java)**
131- - 실제 발행되는 할인권 객체
132- - 할인권의 UUID, 할인 금액/비율 수치 정보를 갖는다.
133- - 고정 할인 방식(FixDiscountVoucher)과 비율 할인 방식(PercentDiscountVoucher)이 존재한다.
134- 5. **저장소(VoucherRepository.java)**
135- - 할인권 정보를 저장한다.
136- - 저장된 할인권 목록을 조회하여 전달한다.
137- 6. **메뉴(Menu.java)**
138- - 사용자가 실행할 수 있는 메뉴 정보를 가진다.
139- 7. **할인권 종류(VoucherType.java)**
140- - 발행할 수 있는 할인권의 종류 정보를 가진다.
141- - 각 종류에 맞는 실제 할인권을 발행한다.
142-
143-
144-
145- ## 예외처리
146-
147- 1. 메뉴 입력 예외
148- - 없는 메뉴 번호인 경우
149- 2. 할인권 생성 예외
150- - 할인 방식을 선택할 때, 없는 방식 번호를 선택한 경우
151- - 고정 할인권 생성할 때, 금액의 범위를 벗어난 경우
152- - 고정 할인권 생성할 때, 자연수 이외의 숫자나 문자를 입력한 경우
153- - 비율 할인권 생성할 때, 퍼센트 범위를 벗어난 경우
154- - 비율 할인권 생성할 때, 자연수 이외의 숫자나 문자를 입력한 경우
155-
156-
1+ # SpringBoot Basic Weekly Mission 2
2+ > 바우처 관리 애플리케이션 만들기 2 - 김영주
1573
4+ # 1. 설계
1585## 프로그램 구조도
1596
160- 
7+ ![ image ] ( https://github.com/prgrms-be-devcourse/springboot-basic /assets/49775540/1b4f4d03-b56b-4c2a-9cf6-410db2bdffb7 )
1618
1629
16310
@@ -170,20 +17,29 @@ src/main/java/com.devcourse.voucherapp/
17017 - VoucherController.java
17118
17219- entity/
20+ - dto/
21+ - VoucherCreateRequestDto.java
22+ - VoucherUpdateRequestDto.java
23+ - VoucherResponseDto.java
24+ - VouchersResponseDto.java
17325 - voucher/
17426 - Voucher.java
17527 - FixDiscountVoucher.java
17628 - PercentDiscountVoucher.java
17729 - Menu.java
17830 - VoucherType.java
31+ - TriFunction.java
17932
18033- exception/
18134 - MenuInputException.java
182- - VoucherInputException.java
35+ - NotFoundVoucherException.java
36+ - DiscountAmountException.java
37+ - VoucherTypeInputException.java
18338
18439- repository/
18540 - VoucherRepository.java
18641 - MemoryVoucherRepository.java
42+ - JdbcVoucherRepository.java
18743
18844- service/
18945 - VoucherService.java
@@ -193,17 +49,19 @@ src/main/java/com.devcourse.voucherapp/
19349 - OutputView.java
19450 - ConsoleInputView.java
19551 - ConsoleOutputView.java
52+ - ViewManager.java
19653
54+ - CommandLineApplication.java
19755- VoucherappApplication.java
19856```
19957
20058
20159
20260------
20361
204- ## 3 . 컨벤션
62+ # 2 . 컨벤션
20563
206- ### Git commit convention
64+ ## Git commit convention
20765
20866> [ Angular JS commit convention] ( https://velog.io/@outstandingboy/Git-커밋-메시지-규약-정리-the-AngularJS-commit-conventions ) 를 참고
20967
@@ -234,79 +92,71 @@ src/main/java/com.devcourse.voucherapp/
23492
23593------
23694
237- # 4 . 기능 구현 및 실행 화면
95+ # 3 . 기능 구현 및 실행 화면
23896
239- ## 기능 구현
97+ ## 구현 사항
24098
241- - [x] 메뉴 선택 화면
242- - [x] 메뉴 입력 및 예외처리
243- - [x] 프로그램 종료
244- - [x] 고정 할인권 생성
245- - [x] 비율 할인권 생성
246- - [x] 할인권 조회
247- - [x] logback 이용한 로그 파일 생성
248- - [x] 실행 가능한 jar 파일 생성
99+ - [x] H2 데이터베이스를 적용한다.
100+ - [x] 프로필을 이용해 개발과 로컬 환경을 구분한다.
101+ - [x] 할인권 수정 기능을 추가한다.
102+ - [x] 할인권 삭제 기능을 추가한다.
249103
250104
251105
252106## 실행 화면
253107
108+ > 할인권 수정, 삭제 기능 추가
109+
254110```
255111[할인권 프로그램 v1.0]
2561121. 새 할인권 생성
2571132. 할인권 조회
258- 3. 프로그램 종료
114+ 3. 할인권 수정
115+ 4. 할인권 삭제
116+ 5. 프로그램 종료
117+ 입력 : 3
118+
119+ 현재까지 생성된 할인권 목록입니다.
120+ 62f590c0-61c0-461d-90ce-ebafd031a4d8 | 고정 할인 | 1,000원
121+ 38de7fec-e170-49ee-b5bd-30d768a11fd5 | 비율 할인 | 20%
259122
260- 입력 : 1
123+ 수정할 할인권의 ID를 입력하세요.
124+ 입력 : 62f590c0-61c0-461d-90ce-ebafd031a4d8
261125
262- 할인 방식을 선택하세요.
263- 1. 고정 할인
264- 2. 비율 할인
265- 입력 : 1
126+ 선택하신 할인권의 정보를 수정합니다.
127+ 62f590c0-61c0-461d-90ce-ebafd031a4d8 | 고정 할인 | 1,000원
266128
267- 고정 할인 금액을 입력하세요.
268- 1이상의 자연수만 입력하세요. 단위는 원입니다.
269- 입력 : 1000
129+ 고정 할인 금액을 입력하세요. (1이상의 자연수, 단위: 원)
130+ 입력 : 3000
270131
271- 할인권 생성이 완료되었습니다.
272- 0437e68e-7fc1-4136-9090-e8a4c3f50ed1 | 고정 할인 | 1 ,000원
132+ 할인권 수정이 완료되었습니다.
133+ 62f590c0-61c0-461d-90ce-ebafd031a4d8 | 고정 할인 | 3 ,000원
273134
274135[할인권 프로그램 v1.0]
2751361. 새 할인권 생성
2761372. 할인권 조회
277- 3. 프로그램 종료
138+ 3. 할인권 수정
139+ 4. 할인권 삭제
140+ 5. 프로그램 종료
141+ 입력 : 4
278142
279- 입력 : 1
280-
281- 할인 방식을 선택하세요.
282- 1. 고정 할인
283- 2. 비율 할인
284- 입력 : 2
143+ 현재까지 생성된 할인권 목록입니다.
144+ 62f590c0-61c0-461d-90ce-ebafd031a4d8 | 고정 할인 | 3,000원
145+ 38de7fec-e170-49ee-b5bd-30d768a11fd5 | 비율 할인 | 20%
285146
286- 비율 할인 퍼센트를 입력하세요.
287- 1이상 100이하의 자연수만 입력하세요. 단위는 %입니다.
288- 입력 : 40
147+ 삭제할 할인권의 ID를 입력하세요.
148+ 입력 : 62f590c0-61c0-461d-90ce-ebafd031a4d8
289149
290- 할인권 생성이 완료되었습니다.
291- 71a70469-3e03-49a6-ad53-e8ec37531dce | 비율 할인 | 40%
150+ 할인권이 정상적으로 삭제되었습니다.
292151
293152[할인권 프로그램 v1.0]
2941531. 새 할인권 생성
2951542. 할인권 조회
296- 3. 프로그램 종료
297-
155+ 3. 할인권 수정
156+ 4. 할인권 삭제
157+ 5. 프로그램 종료
298158입력 : 2
299159
300160현재까지 생성된 할인권 목록입니다.
301- 71a70469-3e03-49a6-ad53-e8ec37531dce | 비율 할인 | 40%
302- 0437e68e-7fc1-4136-9090-e8a4c3f50ed1 | 고정 할인 | 1,000원
303-
304- [할인권 프로그램 v1.0]
305- 1. 새 할인권 생성
306- 2. 할인권 조회
307- 3. 프로그램 종료
308-
309- 입력 : 3
310-
311- 프로그램을 종료합니다.
161+ 38de7fec-e170-49ee-b5bd-30d768a11fd5 | 비율 할인 | 20%
312162```
0 commit comments