An open API service indexing awesome lists of open source software.

https://github.com/knu-k/event-driven-programming-practica

This repository demonstrates event-driven programming using Java and Spring Boot
https://github.com/knu-k/event-driven-programming-practica

Last synced: 10 months ago
JSON representation

This repository demonstrates event-driven programming using Java and Spring Boot

Awesome Lists containing this project

README

          

# Event Driven Programming Practica

This project does not use a database; it relies solely on mock data. The goal is to achieve loose coupling between components

## Domain Scenario
- Product
- Coupon
- Customer
- Order
- Delivery
- Payment
- Kitchen

### ๐Ÿ“–Condition
1. A **Product** is an item with defined attributes such as price, stock, and options.
2. A **Coupon** can only be applied to specific **Products** and specifies the usage period and conditions.
3. A **Customer** has an account that contains personal and payment information.
4. A **Kitchen** holds specific **Products** and is responsible for the preparation and delivery of those **Products**.
5. A **Customer** can purchase a **Product**.
- 5-1. When ordering via **Mobile**, the customer enters information such as the delivery address and payment method.
- 5-2. When ordering via **Kiosk**, the customer enters payment information.
6. Create an order form that matches the appropriate format.
7. Proceed with payment.
- Payment can be made through mobile payment, card payment, cash payment, etc.
8. Order details transmission:
- 8-a. When ordering via **Mobile**, the order details are transmitted to both the **Kitchen** and **Delivery** domains.
- 8-b. When ordering via **Kiosk**, the order details are transmitted only to the **Kitchen** domain.

1. **Product**๋Š” ๊ฐ€๊ฒฉ, ์žฌ๊ณ , ์˜ต์…˜ ๋“ฑ์ด ์ •์˜๋œ ์ƒํ’ˆ์ด๋‹ค.
2. **Coupon**์€ ํŠน์ • **Product**์—๋งŒ ์ ์šฉ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ธฐ๊ฐ„๊ณผ ์กฐ๊ฑด์ด ๋ช…์‹œ๋œ๋‹ค.
3. **Customer**๋Š” ๊ฐœ์ธ ์ •๋ณด, ๊ฒฐ์ œ ์ •๋ณด ๋“ฑ์„ ํฌํ•จํ•œ ๊ณ„์ •์„ ๊ฐ€์ง„๋‹ค.
4. **Kitchen**์€ ํŠน์ • **Product**๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ํ•ด๋‹น **Product**์˜ ์ค€๋น„ ๋ฐ ๋ฐฐ์†ก์„ ๋‹ด๋‹นํ•œ๋‹ค.
5. **Customer**๋Š” **Product**๋ฅผ ๊ตฌ๋งคํ•  ์ˆ˜ ์žˆ๋‹ค.
- 5-1. **Mobile**์„ ํ†ตํ•ด ์ฃผ๋ฌธ ์‹œ, ์‚ฌ์šฉ์ž๋Š” ๋ฐฐ์†ก ์ฃผ์†Œ, ๊ฒฐ์ œ ๋ฐฉ๋ฒ• ๋“ฑ์˜ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.
- 5-2. **Kiosk**๋ฅผ ํ†ตํ•ด ์ฃผ๋ฌธ ์‹œ, ์‚ฌ์šฉ์ž๋Š” ๊ฒฐ์ œ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.
6. **๊ฐ ํ˜•์‹์— ๋งž๋Š” ์ฃผ๋ฌธ์„œ๋ฅผ ์ œ์ž‘ํ•œ๋‹ค.**
7. **๊ฒฐ์ œ๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.**
- ๊ฒฐ์ œ๋Š” ๋ชจ๋ฐ”์ผ ๊ฒฐ์ œ, ์นด๋“œ ๊ฒฐ์ œ, ํ˜„๊ธˆ ๊ฒฐ์ œ ๋“ฑ์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ์ง„ํ–‰๋œ๋‹ค.
8. **์ฃผ๋ฌธ ๋ช…์„ธ ์ •๋ณด ์ „์†ก:**
- 8-a. **Mobile**๋กœ ์ฃผ๋ฌธ ์‹œ, **Kitchen**๊ณผ **Delivery** ๋„๋ฉ”์ธ์œผ๋กœ ์ฃผ๋ฌธ ๋ช…์„ธ ์ •๋ณด๋ฅผ ์ „์†กํ•œ๋‹ค.
- 8-b. **Kiosk**๋กœ ์ฃผ๋ฌธ ์‹œ, **Kitchen** ๋„๋ฉ”์ธ์œผ๋กœ๋งŒ ์ฃผ๋ฌธ ๋ช…์„ธ ์ •๋ณด๋ฅผ ์ „์†กํ•œ๋‹ค.