- Mut Books ๋ eBook ๋ง์ผ๊ณผ eBook๋ฆฌ๋๋ก ์ด๋ฃจ์ด์ง ์๋น์ค์ ๋๋ค.
Stack | |
---|---|
BackEnd | |
Build Tool | |
Database | |
Infra | |
FrontEnd | |
Etc |
- ํ์๊ฐ์
- ๊ฐ์
์๋ฃ์ ์ถํ๋ฉ์ผ ๋ฐ์ก
- Gmail SMTP ๋ฉ์ผ ๋ฐ์ก
- ๊ฐ์ ์๋ฃ์ ์๋ ๋ก๊ทธ์ธ ์ฒ๋ฆฌ (์ฐธ๊ณ )
- ๊ฐ์
์๋ฃ์ ์ถํ๋ฉ์ผ ๋ฐ์ก
- ๋ก๊ทธ์ธ/๋ก๊ทธ์์
- Spring Security ์ฌ์ฉ
- ๋ก๊ทธ์ธ:
/member/login
- ๋ก๊ทธ์์:
/member/logout
- ๋ด ํ๋กํ ์กฐํ
- ํ์ ๊ธฐ๋ณธ์ ๋ณด ์กฐํ(์์ด๋, ์ด๋ฉ์ผ, ์๊ฐ๋ช )
- ํ์ ๊ธฐ๋ณธ์ ๋ณด ์์
- ์ด๋ฉ์ผ, ์๊ฐ๋ช ์์ ๊ฐ๋ฅ
- ์์ ์๋ฃ ํ, ์ธ์ ๊ฐ(MemberContext) ๊ฐ์ ์์
- ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ
- ํ์ฌ ๋น๋ฐ๋ฒํธ, ์ ๋น๋ฐ๋ฒํธ, ์ ๋น๋ฐ๋ฒํธ ํ์ธ ์ ๋ ฅํผ ์ ํจ์ฑ ๊ฒ์ฆ
- ์์ด๋ ์ฐพ๊ธฐ
์ด๋ฉ์ผ
๋ก ์์ด๋ ์ฐพ๊ธฐ- ๊ฒฐ๊ณผ ํ์ด์ง์์ ์์ด๋ ํ์ธ ๊ฐ๋ฅ
- ๋น๋ฐ๋ฒํธ ์ฐพ๊ธฐ
์์ด๋ + ์ด๋ฉ์ผ
๋ก ๋น๋ฐ๋ฒํธ ์ฐพ๊ธฐ- ํด๋น ๊ณ์ ์ ์ด๋ฉ์ผ๋ก ์์ ๋น๋ฐ๋ฒํธ ๋ฐ๊ธ -> ๋ฐ๊ธ๋ ์์ ๋น๋ฐ๋ฒํธ๋ก ๊ณ์ ๋น๋ฐ๋ฒํธ ์์ ์ฒ๋ฆฌ(DB ๋ฐ์)
- ์์ ๋น๋ฐ๋ฒํธ: UUID 10์๋ฆฌ ๋๋ค
- ๊ธ ์์ฑ
- Toast UI Editor ์ ์ฉํ์ฌ ๋ด์ฉ ์ ๋ ฅ
- ๋งํฌ๋ค์ด ์๋ฌธ, ๋ ๋๋ง ๊ฒฐ๊ณผ(HTML) ๋ชจ๋ DB์ ์ ์ฅ(์ฐธ๊ณ )
- ๊ธ ๋ฆฌ์คํธ ์กฐํ
- ๋ฒํธ, ์ ๋ชฉ, ํด์ํ๊ทธ, ์์ฑ์, ์์ฑ๋ ์ง, ์์ ๋ ์ง ํ์
- QueryDSL ์ด์ฉ
- ๋ด ๊ธ ๋ชจ๋ ์กฐํ
- ๋ฉ๋ด๋ฐ "๋ด ๊ธ" ํด๋ฆญ -> 1๋ฒ ํ์ด์ง๋ก ์ด๋
- ํด์ํ๊ทธ(ํค์๋)์ ๊ด๋ จ๋ ๋ด ๊ธ ๋ชจ๋ ์กฐํ
- 1๋ฒ ํ์ด์ง์ ๊ฒ์๊ธ "ํด์ํ๊ทธ" ํด๋ฆญ -> 2๋ฒ ํ์ด์ง๋ก ์ด๋
- ๋ด ๊ธ ๋ชจ๋ ์กฐํ
- ๊ธ ์์ธ์กฐํ
- ์ ๋ชฉ, ๋ด์ฉ, ํด์ํ๊ทธ ํ์
- Toast UI Viewer ์ ์ฉํ์ฌ ๋ด์ฉ ์ถ๋ ฅ
- ๊ธ ์์
- ์ ๋ชฉ, ๋ด์ฉ, ํด์ํ๊ทธ ์์ ๊ฐ๋ฅ
- Toast UI Editor ์ ์ฉํ์ฌ ๋ด์ฉ ์ ๋ ฅ
- ์์ ์๋ฃ์ ํ์ฌ์๊ฐ์ผ๋ก ์์ ๋ ์ง ๋ณ๊ฒฝ
- ๊ธ ์ญ์
- ๊ธ ์ญ์ ์ ๊ด๋ จ ํด์ํ๊ทธ๋ ์๋ ์ญ์ ์ฒ๋ฆฌ
- ๋์ ๋ฑ๋ก/์์ /์ญ์ ๊ธฐ๋ฅ์ ์๊ฐ ํ์๋ง ์ด์ฉO(์์ /์ญ์ ๋ ๋ณธ์ธ๋ง ๊ฐ๋ฅ)
- ๋์ ๋ฆฌ์คํธ/์์ธ์กฐํ ๊ธฐ๋ฅ์ ๋ชจ๋ ์ด์ฉO
- ๋์ ๋ฑ๋ก
- ๊ธ ํด์ํ๊ทธ๋ฅผ ์ ํํ๋ฉด ๋ด ๊ธ ์ค ํด๋น ํด์ํ๊ทธ๊ฐ ๋ถ์ ๋ชจ๋ ๊ธ์ ์๋์ผ๋ก 1๊ฐ์ ์ํ์ผ๋ก ๋ฑ๋ก
- [ํผ] ์ํ๋ช
, ์ค๋ช
, ๊ถ์ฅ ํ๋งค๊ฐ, ๊ธ ํด์ํ๊ทธ ํค์๋(id), ๋์ ํด์ํ๊ทธ ํค์๋
- ์ค๋ช ๋ถ๋ถ์ ToastUI Editor ์ ์ฉX
- ๊ธ ํด์ํ๊ทธ ํค์๋๋ 1๊ฐ๋ง ์ ํ ๊ฐ๋ฅ
- ์ฌ๋ฌ ๊ฐ์ ๋์ ํด์ํ๊ทธ ํค์๋ ๋ฑ๋ก ๊ฐ๋ฅ
- ํด์ํ๊ทธ ํค์๋ & ๊ด๋ จ ๊ฒ์๊ธ ๊ฐ์ ํ์
- QueryDSL ์ด์ฉ
- ๋ค๋ฅธ ์ํฐํฐ์ ์ฌ๋ฌ ์ปฌ๋ผ ๊ฐ์ select ํ๊ธฐ ๋๋ฌธ์, List๋ก ๋ฐํ ๋ถ๊ฐ โ PostKeywordDto๋ฅผ ์ ์ํด List ๋ฐํ(์ฐธ๊ณ )
- ๋ฑ๋ก ์๋ฃ์ ๋์ ์์ธ ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธ
- ๋์ ์์
- ๊ธ ํค์๋ ์์ X
- ์ํ๋ช , ๊ฐ๊ฒฉ, ์ค๋ช , ๋์ ํด์ํ๊ทธ ์์ O
- ์์ ์๋ฃ์ ๋์ ์์ธํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธ
- ๋์ ์์ธ์กฐํ
- [UI] ์ํ ๋๋ค ์ด๋ฏธ์ง, ์ํ๋ช
, ์๊ฐ๋ช
, ๋ฑ๋ก์ผ์, ํ๋งค๊ฐ, ์ค๋ช
, ๋์ ํด์ํ๊ทธ ํค์๋ ํ์
- ๋๋ค ์ด๋ฏธ์ง ํ์ Unsplash ์ฌ์ฉ(์ฐธ๊ณ )
- ์ค๋ช ๋ถ๋ถ์ ToastUI Editor Viwer ์ ์ฉX
- [UI] ์๊ฐ ๋ณธ์ธ์๊ฒ๋ง ์์ , ์ญ์ ๋ฒํผ ํ์
- ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๊ตฌํX
- [UI] ์ํ ๋๋ค ์ด๋ฏธ์ง, ์ํ๋ช
, ์๊ฐ๋ช
, ๋ฑ๋ก์ผ์, ํ๋งค๊ฐ, ์ค๋ช
, ๋์ ํด์ํ๊ทธ ํค์๋ ํ์
- ๋์ ๋ฆฌ์คํธ
- [UI] ๋ชจ๋ ์ํ ์ ๋ณด(์ํ ๋๋ค ์ด๋ฏธ์ง, ์ํ๋ช
, ๋ฑ๋ก ์ผ์, ์๊ฐ๋ช
, ํ๋งค๊ฐ, ํด์ํ๊ทธ) ์ต์ ์ ๋ฆฌ์คํ
- ๋๋ค ์ด๋ฏธ์ง ํ์ Unsplash ์ฌ์ฉ
- ์ํ๋ช ํด๋ฆญ์ ํด๋น ์ํ ์์ธ์กฐํ ํ์ด์ง๋ก ์ด๋
- ์ฅ๋ฐ๊ตฌ๋ ๋ฒํผ ํ์
- [UI] ๋ชจ๋ ์ํ ์ ๋ณด(์ํ ๋๋ค ์ด๋ฏธ์ง, ์ํ๋ช
, ๋ฑ๋ก ์ผ์, ์๊ฐ๋ช
, ํ๋งค๊ฐ, ํด์ํ๊ทธ) ์ต์ ์ ๋ฆฌ์คํ
- ๋์ ์ญ์
- ์ญ์ ๋ฒํผ ํด๋ฆญ์ confirm ์ฐฝ์ผ๋ก ์ญ์ ์ฌ๋ถ๋ฅผ ํ ๋ฒ ๋ ์ฒดํฌ
- ์ญ์ ์๋ฃ์ ์ํ ๋ฆฌ์คํธ๋ก ๋ฆฌ๋ค์ด๋ ํธ
- ์ฅ๋ฐ๊ตฌ๋ ๊ธฐ๋ฅ์ ๋ก๊ทธ์ธํ ํ์๋ง ์ด์ฉO
- ํ๋ชฉ ๋ฆฌ์คํธ
- ๋ฉ๋ด๋ฐ์ ์ฅ๋ฐ๊ตฌ๋ ๋ฉ๋ด๋ฅผ ํด๋ฆญํด ์ฅ๋ฐ๊ตฌ๋ ํ์ด์ง๋ก ์ด๋
- [UI] ์ํ ์ ๋ณด(์ํ ๋๋ค ์ด๋ฏธ์ง, ์ํ๋ช
, ์๊ฐ๋ช
, ๋ฑ๋ก์ผ์, ๊ฐ๊ฒฉ) ํ์
- ๋๋ค ์ด๋ฏธ์ง ํ์ Unsplash ์ฌ์ฉ
- ์ฅ๋ฐ๊ตฌ๋์ ๋ด๊ธด ์ํ์ด ์์ ๋๋ ์ํ ์์ ์๋ด ๋ฌธ๊ตฌ ํ์
- [UI] ์ ์ฒด ์ ํ ์ฒดํฌ๋ฐ์ค, ํ๋ชฉ ๊ฐ๋ณ ์ฒดํฌ๋ฐ์ค, ํ๋ชฉ ์ญ์ ๊ฐ๋ณ ๋ฒํผ, ์ฃผ๋ฌธํ๊ธฐ ๋ฒํผ ํ์
- Javascript ๋ก ์ ์ฒด ์ ํ ์ฒดํฌ๋ฐ์ค์ ๊ฐ๋ณ ์ฒดํฌ๋ฐ์ค ์ฐ๋
- ์ด๋ฏธ์ง ํด๋ฆญ์ ํด๋น ์ํ ์์ธ์กฐํ ํ์ด์ง๋ก ์ด๋
- ํ๋ชฉ ์ถ๊ฐ
- ๋์ ๋ชฉ๋ก ํ์ด์ง์ ๊ฐ ์ํ์ ์ฅ๋ฐ๊ตฌ๋ ๋ฒํผ์ ํด๋ฆญํด ์ฅ๋ฐ๊ตฌ๋์ ํ๋ชฉ ์ถ๊ฐ
- ํ์์ ๊ฐ์ ์ํ 1๊ฐ๋ง ์ฅ๋ฐ๊ตฌ๋์ ์ถ๊ฐ ๊ฐ๋ฅ(๊ณ์ ๋ด์๋ ์ต๋ ์๋ = 1๊ฐ)
- ํ๋ชฉ ์ถ๊ฐ ์๋ฃ์ ํ๋ชฉ ๋ฆฌ์คํธ ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธ
- ํ๋ชฉ ์ญ์
- ํ๋ชฉ ์ญ์ ๋ฒํผ ํด๋ฆญ์ confirm ์ผ๋ก ํ์ธ ํ ์ญ์
- ํ๋ชฉ ์ญ์ ์๋ฃ์ ํ๋ชฉ ๋ฆฌ์คํธ ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธ
- ์ฃผ๋ฌธ/๊ฒฐ์ ๊ธฐ๋ฅ์ ๋ก๊ทธ์ธํ ํ์๋ง ์ด์ฉO
- ์ฃผ๋ฌธ ๋ฆฌ์คํธ/์์ธ์กฐํ/์ทจ์/๊ฒฐ์ /ํ๋ถ ์ฒ๋ฆฌ๋ ์ฃผ๋ฌธ์ ๋ณธ์ธ ๊ฒ๋ง ๊ฐ๋ฅ
- ์ฃผ๋ฌธ ์์ฑ
- ์ฅ๋ฐ๊ตฌ๋ ํ์ด์ง์์ ์ฃผ๋ฌธํ ํ๋ชฉ์ ์ ํ โ ์ฃผ๋ฌธํ๊ธฐ ๋ฒํผ์ ํด๋ฆญ โ ์ฃผ๋ฌธ ์์ฑ(๋จ์ผ ์ฃผ๋ฌธ ๋ฏธ์ง์)
- ์ ํํ cartItemId ๋ค์ String ์ผ๋ก ๋ง๋ค์ด ์ฃผ๋ฌธ ์์ฑ ํผ ๋ฐ์ก
- โ,โ ๊ธฐ์ค์ผ๋ก ๋ถ๋ฆฌํ CartItemIds String[] โ List ์ผ๋ก ๋ณํ(์ฐธ๊ณ )
- ์ฅ๋ฐ๊ตฌ๋ ํ์ด์ง์์ ์ฃผ๋ฌธํ ํ๋ชฉ์ ์ ํ โ ์ฃผ๋ฌธํ๊ธฐ ๋ฒํผ์ ํด๋ฆญ โ ์ฃผ๋ฌธ ์์ฑ(๋จ์ผ ์ฃผ๋ฌธ ๋ฏธ์ง์)
- ์ฃผ๋ฌธ ๋ฆฌ์คํธ
- ํ์ ๋ณธ์ธ์ ์ฃผ๋ฌธ ๋ด์ญ ์ต์ ์ ๋ฆฌ์คํ
- [UI] ์ฃผ๋ฌธ์ผ์, ์ฃผ๋ฌธ ์ํ, ์ฃผ๋ฌธ ํ๋ชฉ๋ค ์ ๋ณด(์ํ ๋๋ค ์ด๋ฏธ์ง, ์ํ๋ช , ๊ฐ๊ฒฉ) ํ์
- ์ฃผ๋ฌธ ์์ธ
- [UI] ์ฃผ๋ฌธ ์ํ ์ ๋ณด(์ํ ๋๋ค ์ด๋ฏธ์ง, ์ํ๋ช , ๊ฐ๊ฒฉ), ์ฃผ๋ฌธ ์ ๋ณด(ํ์ id, ์ด ์ํ์, ์ด ์ํ๊ธ์ก), ๊ฒฐ์ ์ ๋ณด(์ด ์ํ๊ธ์ก, ์บ์ ์ฌ์ฉ๊ธ์ก, pg ๊ฒฐ์ ๊ธ์ก), ํ๋ถ ๊ท์ ํ์
- ์ ๊ทผ ๋ฐฉ์ 2๊ฐ์ง
- ์ฅ๋ฐ๊ตฌ๋ ํ์ด์ง์์ ์ฃผ๋ฌธํ๊ธฐ ๋ฒํผ ํด๋ฆญ
- ์ฃผ๋ฌธ๋ด์ญ ํ์ด์ง์์ ์์ธ๋ณด๊ธฐ ๋ฒํผ ํด๋ฆญ
- ์ฃผ๋ฌธ ์๋ฃ ์ํ
- [UI] ๋ณด์ ์์น๊ธ, ์ฌ์ฉํ ์์น๊ธ ์ ๋ ฅํผ ํ์
- [UI] ์ฃผ๋ฌธ ์ทจ์ ๋ฒํผ, ๊ฒฐ์ ํ๊ธฐ ๋ฒํผ ํ์
- ๊ฒฐ์ ์๋ฃ ์ํ
- [UI] ํ๋ถ์์ฒญ ๋ฒํผ ํ์
- [UI] ํ์
- ์ทจ์ ์๋ฃ/ํ๋ถ ์๋ฃ ์ํ
- ์ ๋ณด ์ธ์ ์๋ฌด๊ฒ๋ ํ์X
- ์ฃผ๋ฌธ ์ทจ์
- ์ฃผ๋ฌธ ์๋ฃ ์ํ์ผ ๋๋ง ์ฃผ๋ฌธ ์ทจ์ ์์ฒญ ๊ฐ๋ฅ
- ํด๋น ์ฃผ๋ฌธ ๊ฑด์ ํฌํจ๋ ์ฃผ๋ฌธ ํ๋ชฉ ์ ์ฒด ์ทจ์ ๋ฐฉ์ ์ง์
- ์ทจ์ ์๋ฃ์ ์ฃผ๋ฌธ ๋ด์ญ ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธ
- ๊ฒฐ์ ์ฒ๋ฆฌ
- ์ฃผ๋ฌธ ์์ธํ์ด์ง์์ ๊ฒฐ์ ๋ฒํผ ํด๋ฆญ์ ๊ฒฐ์ ์์ฒญ(์ฃผ๋ฌธ ์์ฑํ ๋ฏธ๊ฒฐ์ ์ํ์ผ ๋๋ง ์์ฒญ ๊ฐ๋ฅ, ์ทจ์/ํ๋ถ ์ ์์ฒญ ๋ถ๊ฐ)
- Toss Payments ์ฐ๋(์ฐธ๊ณ )
- 3๊ฐ์ง ๊ฒฐ์ ๋ฐฉ์ ์ง์(1๊ณผ 2, 3 ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ)
- ์์น๊ธ ์ ์ก ๊ฒฐ์ (PG ๊ฒฐ์ skip)
- Toss Payments ์นด๋ ์ ์ก ๊ฒฐ์ (์์น๊ธ ์ถฉ์ ๊ธฐ๋ก ๋ณด์กด)
- ์์น๊ธ + Toss Payments ์นด๋ ๊ฒฐ์ (ํผํฉ ๋ฐฉ์)
- ํ๋ถ ์ฒ๋ฆฌ
- ์ฃผ๋ฌธ ์ ์ฒด ํ๋ถ ๋ฐฉ์ ์ง์(๋ถ๋ถ ํ๋ถ ๋ฏธ์ง์)
- ํ๋ถ ๊ท์ : ๊ฒฐ์ ์๋ฃ ํ 10๋ถ ์ด๋ด & ๋์ ์ด๋ ํ์ง ์์์ ๊ฒฝ์ฐ(1๊ฐ๋ผ๋ ํ๋ถ ๊ท์ ์ ์ด๊ธ๋๋ฉด ํ๋ถ ๋ถ๊ฐ)
- 3๊ฐ์ง ํ๋ถ ๋ฐฉ์ ์ง์(1๊ณผ 2,3 ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ)
- ์์น๊ธ ์ ์ก ํ๋ถ
- Toss Payments ์นด๋ ์ ์ก ํ๋ถ(์์น๊ธ ํ๋ถ ๊ธฐ๋ก ๋ณด์กด)
- ์์น๊ธ ํ๋ถ + Toss Payments ์นด๋ ํ๋ถ(ํผํฉ ๋ฐฉ์)
- ํ๋ถ ์๋ฃ์ MyBook ์์ ๊ตฌ๋งค ์ํ ์ญ์
- username ์ด admin ์ธ ํ์ 1๋ช ์ ๊ด๋ฆฌ์(authLevel 7)๋ก ์ง์
- ๊ด๋ฆฌ์ ํ
- ๊ด๋ฆฌ์ ๊ถํ์ ๊ฐ์ง ํ์๋ง ๊ด๋ฆฌ์ ํ์ด์ง ์ ์ ๊ฐ๋ฅ
-
์ ์ฐ ๋ฐ์ดํฐ ์์ฑํผ
- select box ๋ , ์ ์ ํ ํ ํผ ์ ์ก(์ฐธ๊ณ )
- ์ ์ฐ๋ฐ์ดํฐ ์์ฑ, ์กฐํ 2๊ฐ์ง ํผ ์ ์ก ์ฒ๋ฆฌ
-
์ ์ฐ ๋ฐ์ดํฐ ์์ฑ
- ๊ด๋ฆฌ์๊ฐ ์ ๋จ์๋ก ์ ์ฐ ๋ฐ์ดํฐ ์์ฑ
- ์ ์ฐ ๋ฐ์ดํฐ ์์ฑ ์๋ฃ ํ, ์ ์ฐ ๋ฐ์ดํฐ ๋ฆฌ์คํธ ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธ
-
select box๋ก ๋ /์์ ์ ํ ํ ์ ์ฐ ๋ฐ์ดํฐ ์๋ ์์ฑ
- ํ์ฌ ๋ ์ง๊ฐ ์ ํํ ๋
/์์ ์ ์ฐ ๋ฐ์ดํฐ๋ฅผ ์์ฑ๊ฐ๋ฅํ ๋ ์ง์ธ์ง ๊ฒ์ฆ
- 2022๋ 9์ ์ ์ฐ ๋ฐ์ดํฐ๋ 2022๋ 10์ 15์ผ ์๋ฒฝ 4์ ์ดํ ์์ฑ ๊ฐ๋ฅ
- LocalDateTime โ String ์ผ๋ก ์ถ๋ ฅ(์ฐธ๊ณ )
- ์ ์ฐ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ ๋ ์ง ๋ฒ์ ๊ตฌํ๊ธฐ
- ํด๋น ๋ ์ง ๋ฒ์์ ์ฃผ๋ฌธ ํ๋ชฉ(OrderItem) ๋ฐ์ดํฐ ์กฐํ
- ์ฃผ๋ฌธ ํ๋ชฉ ๋ฐ์ดํฐ(OrderItem) -> ์ ์ฐ ๋ฐ์ดํฐ(RebateOrderItem) ๋ณํ
- ์ ์ฐ ๋ฐ์ดํฐ ์์ฑ ๋ฐ DB์ ์ ์ฅ
- ํ์ฌ ๋ ์ง๊ฐ ์ ํํ ๋
/์์ ์ ์ฐ ๋ฐ์ดํฐ๋ฅผ ์์ฑ๊ฐ๋ฅํ ๋ ์ง์ธ์ง ๊ฒ์ฆ
-
Spring Batch + Scheduler ๋ฅผ ์ด์ฉํ ์ ์ฐ ๋ฐ์ดํฐ ์๋ ์์ฑ
- ๋งค๋ฌ 15์ผ ์ค์ 4์ 0๋ถ 0์ด์ ์ ๋ฒ ๋ฌ(1์ผ~๋ง์ผ)์ ์ ์ฐ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๋ ๋ฐฐ์น ์คํ
- Spring Batch
- spring-batch ์์กด์ฑ ์ถ๊ฐ(build.gradle), batch ์ค์ ์ถ๊ฐ(application.yml)
- ์ฑ์
@EnableBatchProcessing
์ถ๊ฐ - ์ ๋ฒ ๋ฌ(1์ผ~๋ง์ผ)์ ์ ์ฐ ๋ฐ์ดํฐ๋ฅผ ์์ฑ Job, Step ์ถ๊ฐ
- Chunk size 100 ์ผ๋ก ์ง์ (์ฐธ๊ณ )
- Scheduler
- Spring-boot Framework Scheduler(๋ด์ฅ ์ค์ผ์ฅด๋ฌ)์
@EnableScheduling
,@Scheduled
๋ฅผ ์ด์ฉ- ์ฅ์ ๊ฐ ๋ฐ์ํ์ฌ ๋ฐฐ์น๊ฐ 15์ผ ์ค์ 4์์ ์คํ๋์ง ๋ชปํ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ คํ์ฌ ๋งค์ผ ์ค์ 4์์ ๋ฐฐ์น๊ฐ ์คํ๋๋๋ก ํจ(์ฅ์ ๊ฐ ๋ฐ์ํ๋ฉด ํด๋น JobParameter ๋ก ๋ฐฐ์น ๋ค์ ์คํ)
@Scheduled(cron = "0 0 4 15 * *")
: ๋งค๋ฌ 15์ผ ์ค์ 4์ 0๋ถ 0์ด ์คํ@Scheduled(cron = "0 0 4 * * *")
: ๋งค์ผ ์ค์ 4์ 0๋ถ 0์ด ์คํ
- JobParameters ์ year, month ๊ฐ์ ๋ด์ JobLauncher๋ก Job ์คํ
- JobParameter ์์๋ ๋ ์ง โ String ์ผ๋ก ๋ณํํ์ฌ ์ฌ์ฉ(์ฐธ๊ณ )
- ์ฅ์ ๊ฐ ๋ฐ์ํ์ฌ ๋ฐฐ์น๊ฐ 15์ผ ์ค์ 4์์ ์คํ๋์ง ๋ชปํ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ คํ์ฌ ๋งค์ผ ์ค์ 4์์ ๋ฐฐ์น๊ฐ ์คํ๋๋๋ก ํจ(์ฅ์ ๊ฐ ๋ฐ์ํ๋ฉด ํด๋น JobParameter ๋ก ๋ฐฐ์น ๋ค์ ์คํ)
- Spring-boot Framework Scheduler(๋ด์ฅ ์ค์ผ์ฅด๋ฌ)์
- Spring Batch
- ๋งค๋ฌ 15์ผ ์ค์ 4์ 0๋ถ 0์ด์ ์ ๋ฒ ๋ฌ(1์ผ~๋ง์ผ)์ ์ ์ฐ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๋ ๋ฐฐ์น ์คํ
-
์ ์ฐ ๋ฐ์ดํฐ ๋ฆฌ์คํธ
- [UI] ์ ์ฐ๋ฒํธ, ํ๋ชฉ๋ฒํธ, ์ํ๋ช , ๊ฒฐ์ ์ผ์, ๊ฒฐ์ ๊ธ์ก, PG ์์๋ฃ, ๋๋งค๊ฐ, ํ๋ถ์ผ์, ํ๋ถ๊ธ์ก, ํ๋งค์, ์์์ ์ฐ๊ธ์ก, ์ ์ฐ ์์น๊ธ ๋ด์ญ๋ฒํธ, ๋น๊ณ ํ์
- ์ ์ฐ ์ํ์ ๋ฐ๋ฅธ ์ ์ฐ ์๋ฃ/ํ๋ถ ์๋ฃ ํ์, ๊ฑด๋ณ ์ ์ฐ ์ ์ฒญ ๋ฒํผ ํ์
- 2๊ฐ์ง ๋ฐฉ์
- ์ ์ฒด ์ ์ฐ ๋ฐ์ดํฐ ๋ฆฌ์คํธ ์กฐํ
- year, month ์ ํด๋นํ๋ ์๋ณ ์ ์ฐ ๋ฐ์ดํฐ ๋ฆฌ์คํธ ์กฐํ
-
์ ์ฐ ์ฒ๋ฆฌ
- ์ ์ก ํ๋ถ๊ฑด, ์ ์ฐ ์๋ฃ๊ฑด์ ์ ์ฐ ๋ถ๊ฐ
- ์์ ์ ์ฐ ๊ธ์ก = ๋๋งค๊ฐ - PG ์์๋ฃ
- PG ์์๋ฃ๋ 0์์ผ๋ก ๊ฐ์
- ํ๋งค์ : MUT Books = 5 : 5 ๋ก ์ ์ฐ โ ๋๋งค๊ฐ = ํ๋งค๊ฐ * 0.5
- ๊ด๋ฆฌ์๋ ๊ฐ ์์ 15์ผ์ ์ง๋๋ฌ ์ ์ฐ์ก์ ์๊ฐ(ํ์)๋ค์๊ฒ ์ก๊ธํ์ฌ ์ ์ฐ ์ฒ๋ฆฌ
- ํ๋งค์์๊ฒ ์์น๊ธ์ผ๋ก ์ ์ฐ๊ธ์ก ์ง๊ธ
- ์ ์ฐ ์๋ฃ ํ, ์ ์ฒด ์ ์ฐ ๋ฐ์ดํฐ ๋ฆฌ์คํธ ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธ
- ์ ์ฒด ์ ์ฐ(์ ํ ๋ฐฉ์)
- ์ฌ๋ฌ ๊ฐ์ ์ ์ฐ ๊ฑด์ ์ ํํ์ฌ ํ๋ฒ์ ์ ์ฐ ์ฒ๋ฆฌ
- ๊ฑด๋ณ ์ ์ฐ(๋จ๊ฑด ๋ฐฉ์)
- ๋ก๊ทธ์ธํ ํ์๋ง ์ถ๊ธ ๊ธฐ๋ฅ ์ฌ์ฉ ๊ฐ๋ฅ
- ์ ์ฒญ ์๋ฃ/์ถ๊ธ ์๋ฃ/์ทจ์ ์๋ฃ 3๊ฐ์ง ์ํ
-
MemberExtra ์ํฐํฐ ์ถ๊ฐ
- ์ํ๋ช , ๊ณ์ข๋ฒํธ ์ปฌ๋ผ
- ๋์ ํ
์ด๋ธ(member_extra)์ ์ธ๋ ํค๊ฐ ์๋ ๊ฒฝ์ฐ ์ผ๋์ผ ์๋ฐฉํฅ(์ฐธ๊ณ )
- memberExtra ์ํฐํฐ์ @OneToOne ์ค์
- member ์ํฐํฐ์ @OneToOne(mappedBy=โmemberโ) ์ค์
-
์ถ๊ธ ๊ณ์ข ๊ด๋ฆฌ
- [UI] ์ถ๊ธ ๊ณ์ข ์ ๋ณด(์ํ๋ช , ๊ณ์ข ๋ฒํธ), ์ถ๊ธ ๊ณ์ข ๋ฑ๋ก ๋ฒํผ ํ์
- ๋ด ํ๋กํ > ์ถ๊ธ๊ณ์ข ๊ด๋ฆฌ ์ ์
-
์ถ๊ธ ๊ณ์ข ๋ฑ๋ก
- ์ถ๊ธ ๊ณ์ข ์ ๋ณด(์ํ๋ช , ๊ณ์ข ๋ฒํธ) ์ ๋ ฅ ํ, ๋ฑ๋ก
- ๋ฑ๋ก ์๋ฃ์ ์ถ๊ธ ๊ณ์ข ๊ด๋ฆฌ ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธ
-
์ถ๊ธ ์ ์ฒญํผ
- [UI] ์ถ๊ธ ๊ณ์ข ์ ๋ณด(์ํ๋ช , ๊ณ์ข๋ฒํธ), ์บ์ ์์ก ํ์
- Form : price
- ์ ์ก checkbox ์ ํ ์ ์๋ ๊ฐ ์ ๋ ฅ, ์ต์/์ต๋ ์ ๋ ฅ๊ฐ ์ ํ
- ๋ด ํ๋กํ > ์ถ๊ธ์ ์ฒญ or ๋ด ํ๋กํ > ์ถ๊ธ๊ณ์ข ๊ด๋ฆฌ > ์ถ๊ธ ์ ์ฒญ ์ ์
- ์ถ๊ธ ๊ณ์ข ์ ๋ณด๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉด, ์ถ๊ธ๊ณ์ข ๊ด๋ฆฌ ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธ
-
์ถ๊ธ ์ ์ฒญ(์ฌ์ฉ์ ๊ธฐ๋ฅ)
- ์๊ฐ ํ์์ด ์ ์ฐ๋ฐ์ ๊ธ์ก or ๋ณธ์ธ์ด ์ถฉ์ ํ ๊ธ์ก
- ์ต์ ์ถ๊ธ ์ ์ฒญ ๊ธ์ก = 1,000์
- ์ต๋ ์ถ๊ธ ๊ธ์ก = ๋ณธ์ธ์ด ๋ณด์ ํ ์์น๊ธ
-
์ถ๊ธ ์ ์ฒญ ๋ด์ญ ๋ฆฌ์คํธ
- [UI] ์ํ๋ช , ๊ณ์ข๋ฒํธ, ๊ธ์ก, ์ ์ฒญ ์ผ์, ์ถ๊ธ ์ผ์, ์ทจ์ ์ผ์, ์ฒ๋ฆฌ ์ํ
- ์ฌ์ฉ์ ๊ธฐ๋ฅ
- ๋ณธ์ธ์ ์ถ๊ธ ์ ์ฒญ ๋ด์ญ์ ์ต์ ์์ผ๋ก ์กฐํ
- ๊ด๋ฆฌ์ ๊ธฐ๋ฅ
- ๋ชจ๋ ํ์์ ์ถ๊ธ ์ ์ฒญ ๋ด์ญ์ ์ต์ ์์ผ๋ก ์กฐํ
- *์ ์ฒญ ์๋ฃ ์ํ ๊ฑด์ ๋งจ ์๋ก ๋ฆฌ์คํ
-
์ถ๊ธ ์ฒ๋ฆฌ(๊ด๋ฆฌ์ ๊ธฐ๋ฅ)
- ๊ด๋ฆฌ์ ์ถ๊ธ ์ ์ฒญ ๋ด์ญ ํ์ด์ง์์ ๊ฑด๋ณ๋ก ์ถ๊ธ ์ฒ๋ฆฌ ์์ฒญ
- ์ถ๊ธ ์์๋ฃ ์๋ค๊ณ ๊ฐ์
-
์ถ๊ธ ์ ์ฒญ ์ทจ์
- ์ถ๊ธ ์ทจ์ ์ฌ์ : ์ฌ์ฉ์ ์์ฒญ/๊ด๋ฆฌ์ ์์ฒญ(2๊ฐ์ง)
- enum, converter ๊ด๋ฆฌ
- ์ฌ์ฉ์ ๊ธฐ๋ฅ
- ๋ณธ์ธ์ ์ถ๊ธ ์ ์ฒญ ๊ฑด๋ง ์ทจ์ ๊ฐ๋ฅ
- ๊ด๋ฆฌ์ ๊ธฐ๋ฅ
- ๋ชจ๋ ํ์์ ์ถ๊ธ ์ ์ฒญ ๊ฑด์ ๋ํด ์ทจ์ ๊ฐ๋ฅ
- ์ถ๊ธ ์ทจ์ ์ฌ์ : ์ฌ์ฉ์ ์์ฒญ/๊ด๋ฆฌ์ ์์ฒญ(2๊ฐ์ง)