Skip to content

Commit

Permalink
πŸ”€ Merge : Main Merge 4μ°¨ (#51)
Browse files Browse the repository at this point in the history
* Feature : μ—”ν‹°ν‹° 파일 μ„ΈνŒ… (#4)

* πŸ—ƒοΈ add entity files

* πŸ“ add todo comments

* πŸ—ƒοΈ add entity files

* πŸ“ add todo comments

* 🚚 rename Solution to Feedback

* ✨ update new columns

* ✨ update new columns

* 🚚 rename Point to point

* πŸ—ƒοΈ update column BigDecimal to Double

* πŸ—ƒοΈ add Model entity

* Fix : μ—”ν‹°ν‹° 파일 섀계 였λ₯˜ μˆ˜μ • (#11)

* πŸ› fix db setting bug

* πŸ”₯ remove description field

* πŸ“ Docs: Entity μΆ”κ°€ μˆ˜μ •

Related: #9

* ✨ Feat: controller μž‘μ„± 및 swagger 적용

Related: #9

* ✨ Feat: Member κ΄€λ ¨ repository, response-dto, service κ΅¬ν˜„

Related: #9

* ✨ Feat: Experience service, response-dto κ΅¬ν˜„ 및 swagger 적용

Related: #9

* ✨ Feat: μ‚¬μš©μž, κ²½ν—˜λΆ„ν•΄ μ˜ˆμ™Έ μΆ”κ°€

Related: #9

* πŸ”₯ remove JobKeyword Entity

* ✨ add EnumValidator

* ✨ Feat: κ²½ν—˜ λΆ„ν•΄ μž‘μ„± Controller, post Request κ΅¬ν˜„

Related: #16

* ✨ Feat: κ²½ν—˜ λΆ„ν•΄ μž‘μ„± commandservice 및 Response DTO κ΅¬ν˜„

Related: #16

* ✨ Fix: ExperienceRequest μˆ˜μ •

post, patchκ°€ λ°›λŠ” 값이 κ°™μ•„ ν•˜λ‚˜λ‘œ 톡일

Related: #16

* ✨ Feat: κ²½ν—˜ λΆ„ν•΄ μˆ˜μ • Controller κ΅¬ν˜„

Related: #16

* ✨ Feat: CommandService 및 Experience update ν•¨μˆ˜
κ΅¬ν˜„

Related: #16

* ✨ Feat: κ²½ν—˜ λΆ„ν•΄ μ‚­μ œ API κ΅¬ν˜„ 및 swagger 적용

Related: #16

* ✨ Feat: κ²½ν—˜ μΉ΄λ“œ νŽ˜μ΄μ§• controller κ΅¬ν˜„

Related: #17

* ✨ Feat: κ²½ν—˜ λΆ„ν•΄ λͺ©λ‘ Paging Service κ΅¬ν˜„

Related: #17

* ✨ Feat: κ²½ν—˜ μΉ΄λ“œ λͺ©λ‘ νŽ˜μ΄μ§• 적용 κ΅¬ν˜„

Related: #17

* Update application-dev.yml and application-prod.yml

* ✨ Feat: λžœλ”© νŽ˜μ΄μ§€ μΆ”μ²œ κ²½ν—˜ μΉ΄λ“œ controller κ΅¬ν˜„

Related: #17

* 🎨 Fix: 둜그인 여뢀에 λ”°λ₯Έ MemberInfo 응닡 μˆ˜μ •

Related: #17

* ✨ Feat: 둜그인 여뢀에 λ”°λ₯Έ Experience Query κ΅¬ν˜„

Related: #17

* Feat: νšŒμ›κ°€μž… 및 이메일 인증 API κ΅¬ν˜„ (#21)

* βž• Chore: ꡬ글 이메일 μ˜μ‘΄μ„± μΆ”κ°€

* πŸ”§ Feat: EmailConfig 생성

* πŸ—ƒοΈ Feat: Member에 password ν•„λ“œ μΆ”κ°€ 및 Password 클래슀 생성

* ✨ Feat: 인증 μ½”λ“œ 전솑 및 μž¬ν•™μƒ 인증 API κ΅¬ν˜„

* ✨ Feat: νšŒμ›κ°€μž… API κ΅¬ν˜„

* πŸ—ƒοΈ Rename: Authentication ν…Œμ΄λΈ” λͺ… EmailAuth둜 μˆ˜μ •

* πŸ‘” Feat: 이메일 쀑볡 체크 둜직 μΆ”κ°€

* ♻️ Refactor: μ½”λ“œ 정리

* πŸ› Fix: 이메일 인증 μ½”λ“œ 전솑 μš”μ²­ 버그 ν”½μŠ€

* πŸ”₯ Refactor: λΆˆν•„μš”ν•œ annotation μ‚­μ œ

* ♻️ Refactor: μ½”λ“œ 정리

* πŸ”€ Merge : 둜그인 API κ΅¬ν˜„ (#24)

* βž• Chore: ꡬ글 이메일 μ˜μ‘΄μ„± μΆ”κ°€

* πŸ”§ Feat: EmailConfig 생성

* πŸ—ƒοΈ Feat: Member에 password ν•„λ“œ μΆ”κ°€ 및 Password 클래슀 생성

* ✨ Feat: 인증 μ½”λ“œ 전솑 및 μž¬ν•™μƒ 인증 API κ΅¬ν˜„

* ✨ Feat: νšŒμ›κ°€μž… API κ΅¬ν˜„

* πŸ—ƒοΈ Rename: Authentication ν…Œμ΄λΈ” λͺ… EmailAuth둜 μˆ˜μ •

* πŸ‘” Feat: 이메일 쀑볡 체크 둜직 μΆ”κ°€

* ✨ Feat: JWT token generator 및 filter κ΅¬ν˜„

* πŸ”§ Feat: CorsConfig, WebMvcConfig μΆ”κ°€

* ✨ Feat: 인증된 μ‚¬μš©μž custom annotation κ΅¬ν˜„

* ✨ Feat: 둜그인 API κ΅¬ν˜„

* πŸ“ Feat: νšŒμ›κ°€μž… API Swagger μ„€μ • μΆ”κ°€

* πŸ”€ Merge: μžκΈ°μ†Œκ°œμ„œ μ„ΈλΆ€ 정보 쑰회 API κ΅¬ν˜„ (#25)

* ✨ Fix: Analysis, CoverLetter, Feedback μ—”ν‹°ν‹° μˆ˜μ •

Related: #18

* ✨ Feat: CoverLetterInfo DTO 생성 및 Service ν•¨μˆ˜ κ΅¬ν˜„

Related: #18

* ✨ Feat: CoverLetter와 μ—°κ΄€λœ Feedback 정보 μΆ”μΆœν•˜κΈ°

Related: #18

* ✨ Feat: CoverLetter와 μ—°κ΄€λœ Analysis 정보 μΆ”μΆœν•˜κΈ°

Related: #18

* ✨ Feat: μžκΈ°μ†Œκ°œμ„œ μ„ΈλΆ€ 정보 쑰회 API Swagger 적용

Related: #18

* πŸ”€ Feat: μžκΈ°μ†Œκ°œμ„œ μž‘μ„±, μˆ˜μ •, μ‚­μ œ API κ΅¬ν˜„ (#27)

* ✨ Feat: μžκΈ°μ†Œκ°œμ„œ μž‘μ„± κ΄€λ ¨ DTO 생성 및
@EnumValid, Enum.convert() 적용

Related: #26

* ✨ Feat: μžκΈ°μ†Œκ°œμ„œ μž‘μ„± Service κ΅¬ν˜„

Related: #26

* ✨ Feat: μžκΈ°μ†Œκ°œμ„œ μˆ˜μ • Service κ΅¬ν˜„

Related: #26

* ✨ Feat: μžκΈ°μ†Œκ°œμ„œ DTO에 Swagger μΆ”κ°€

Related: #26

* ✨ Feat: μžκΈ°μ†Œκ°œμ„œ μ‚­μ œ Service μΆ”κ°€

Related: #26

* πŸ“ Fix: λžœλ”© νŽ˜μ΄μ§€ λΉ„λ‘œκ·ΈμΈ μ—¬λΆ€λ₯Ό μœ„ν•΄ Security μˆ˜μ •

Related: #27

* πŸ“ Fix: @AuthenticationMember을 톡해 둜그인 μ‚¬μš©μž 정보 반영

Related: #27

* πŸ“ Fix: ExperienceRequest @EnumValid 적용

Related: #27

* ✨ Feat: Analysis Soft-Delete κ΅¬ν˜„

Related: #27

* ✨ Feat: Feedback Soft-Delete κ΅¬ν˜„

Related: #27

* ✨ Feat: CoverLetter Soft-Delete κ΅¬ν˜„

Related: #27

* πŸ”€ Feat : κ΄€λ¦¬μž νšŒμ› 관리 API κ΅¬ν˜„ (#28)

* 🚚 둜그인 API AuthController둜 이동

* πŸ‘” κ΄€λ¦¬μž κΈ°λŠ₯ 인가 둜직 μˆ˜μ •

* 🚚 Feat: κ΄€λ¦¬μž νšŒμ› λͺ©λ‘ 쑰회 DTO 생성

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› 관리 κΈ°λŠ₯ Service κ΅¬ν˜„

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› λΉ„ν™œμ„±ν™” update λ©”μ†Œλ“œ μΆ”κ°€

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› 관리 κΈ°λŠ₯ API κ΅¬ν˜„

* πŸ‘” 둜그인 μ‚¬μš©μž 정보 쑰회 둜직 μˆ˜μ •

* πŸ“ swagger 정보 μˆ˜μ •

* ♻️ λ©”μ†Œλ“œ 이름 μˆ˜μ •

* ♻️ νšŒμ› λͺ©λ‘ 쑰회 응닡 dto λ³€κ²½

* πŸ”€ Feat: μžκΈ°μ†Œκ°œμ„œ μž‘μ„±, μˆ˜μ •, μ‚­μ œ API κ΅¬ν˜„ (#27)

* ✨ Feat: μžκΈ°μ†Œκ°œμ„œ μž‘μ„± κ΄€λ ¨ DTO 생성 및
@EnumValid, Enum.convert() 적용

Related: #26

* ✨ Feat: μžκΈ°μ†Œκ°œμ„œ μž‘μ„± Service κ΅¬ν˜„

Related: #26

* ✨ Feat: μžκΈ°μ†Œκ°œμ„œ μˆ˜μ • Service κ΅¬ν˜„

Related: #26

* ✨ Feat: μžκΈ°μ†Œκ°œμ„œ DTO에 Swagger μΆ”κ°€

Related: #26

* ✨ Feat: μžκΈ°μ†Œκ°œμ„œ μ‚­μ œ Service μΆ”κ°€

Related: #26

* πŸ“ Fix: λžœλ”© νŽ˜μ΄μ§€ λΉ„λ‘œκ·ΈμΈ μ—¬λΆ€λ₯Ό μœ„ν•΄ Security μˆ˜μ •

Related: #27

* πŸ“ Fix: @AuthenticationMember을 톡해 둜그인 μ‚¬μš©μž 정보 반영

Related: #27

* πŸ“ Fix: ExperienceRequest @EnumValid 적용

Related: #27

* ✨ Feat: Analysis Soft-Delete κ΅¬ν˜„

Related: #27

* ✨ Feat: Feedback Soft-Delete κ΅¬ν˜„

Related: #27

* ✨ Feat: CoverLetter Soft-Delete κ΅¬ν˜„

Related: #27

* 🚚 둜그인 API AuthController둜 이동

* πŸ‘” κ΄€λ¦¬μž κΈ°λŠ₯ 인가 둜직 μˆ˜μ •

* 🚚 Feat: κ΄€λ¦¬μž νšŒμ› λͺ©λ‘ 쑰회 DTO 생성

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› 관리 κΈ°λŠ₯ Service κ΅¬ν˜„

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› λΉ„ν™œμ„±ν™” update λ©”μ†Œλ“œ μΆ”κ°€

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› 관리 κΈ°λŠ₯ API κ΅¬ν˜„

* πŸ‘” 둜그인 μ‚¬μš©μž 정보 쑰회 둜직 μˆ˜μ •

* πŸ“ swagger 정보 μˆ˜μ •

* ♻️ λ©”μ†Œλ“œ 이름 μˆ˜μ •

* ♻️ νšŒμ› λͺ©λ‘ 쑰회 응닡 dto λ³€κ²½

* πŸ”₯ μžκΈ°μ†Œκ°œμ„œ delete λ©”μ†Œλ“œ μ‚­μ œ

* πŸ”₯ μ‚¬μš©λ˜μ§€ μ•ŠλŠ” import μ‚­μ œ

* πŸ‘” νšŒμ› λΉ„ν™œμ„±ν™” 둜직 μˆ˜μ •

* πŸ‘” νšŒμ› λΉ„ν™œμ„±ν™” 둜직 μˆ˜μ •

---------

Co-authored-by: kylo <[email protected]>

* πŸ”€ Feat: κ΄€λ¦¬μž 포인트 μ‚¬μš© 톡계, 결제 λ‚΄μ—­ 쑰회 API κ΅¬ν˜„ (#30)

* 🚚 둜그인 API AuthController둜 이동

* πŸ‘” κ΄€λ¦¬μž κΈ°λŠ₯ 인가 둜직 μˆ˜μ •

* 🚚 Feat: κ΄€λ¦¬μž νšŒμ› λͺ©λ‘ 쑰회 DTO 생성

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› 관리 κΈ°λŠ₯ Service κ΅¬ν˜„

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› λΉ„ν™œμ„±ν™” update λ©”μ†Œλ“œ μΆ”κ°€

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› 관리 κΈ°λŠ₯ API κ΅¬ν˜„

* πŸ‘” 둜그인 μ‚¬μš©μž 정보 쑰회 둜직 μˆ˜μ •

* πŸ“ swagger 정보 μˆ˜μ •

* ♻️ λ©”μ†Œλ“œ 이름 μˆ˜μ •

* ♻️ νšŒμ› λͺ©λ‘ 쑰회 응닡 dto λ³€κ²½

* 🚚 둜그인 API AuthController둜 이동

* πŸ‘” κ΄€λ¦¬μž κΈ°λŠ₯ 인가 둜직 μˆ˜μ •

* 🚚 Feat: κ΄€λ¦¬μž νšŒμ› λͺ©λ‘ 쑰회 DTO 생성

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› 관리 κΈ°λŠ₯ Service κ΅¬ν˜„

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› λΉ„ν™œμ„±ν™” update λ©”μ†Œλ“œ μΆ”κ°€

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› 관리 κΈ°λŠ₯ API κ΅¬ν˜„

* πŸ‘” 둜그인 μ‚¬μš©μž 정보 쑰회 둜직 μˆ˜μ •

* πŸ“ swagger 정보 μˆ˜μ •

* ♻️ λ©”μ†Œλ“œ 이름 μˆ˜μ •

* ♻️ νšŒμ› λͺ©λ‘ 쑰회 응닡 dto λ³€κ²½

* :sparkles Feat: κ΄€λ¦¬μž 포인트 μ‚¬μš©λŸ‰ 톡계 DTO 생성

* ✨ Feat: κ΄€λ¦¬μž 포인트 μ‚¬μš©λŸ‰ 톡계 κΈ°λŠ₯ Service κ΅¬ν˜„

* ✨ Feat: κ΄€λ¦¬μž 결제 λ‚΄μ—­ 쑰회 DTO 생성

* ✨ Feat: κ΄€λ¦¬μž 결제 λ‚΄μ—­ 쑰회 Service κ΅¬ν˜„

* ✨ Feat: κ΄€λ¦¬μž 맀좜 관리 API κ΅¬ν˜„

* ♻️ dto λͺ… λ³€κ²½

* πŸ”₯ 좩돌 μ½”λ“œ μ‚­μ œ

* Feat: μ‚¬μš©μž 포인트 μ‚¬μš©/결제 API κ΅¬ν˜„ (#34)

* 🚚 둜그인 API AuthController둜 이동

* πŸ‘” κ΄€λ¦¬μž κΈ°λŠ₯ 인가 둜직 μˆ˜μ •

* 🚚 Feat: κ΄€λ¦¬μž νšŒμ› λͺ©λ‘ 쑰회 DTO 생성

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› 관리 κΈ°λŠ₯ Service κ΅¬ν˜„

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› λΉ„ν™œμ„±ν™” update λ©”μ†Œλ“œ μΆ”κ°€

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› 관리 κΈ°λŠ₯ API κ΅¬ν˜„

* πŸ‘” 둜그인 μ‚¬μš©μž 정보 쑰회 둜직 μˆ˜μ •

* πŸ“ swagger 정보 μˆ˜μ •

* ♻️ λ©”μ†Œλ“œ 이름 μˆ˜μ •

* ♻️ νšŒμ› λͺ©λ‘ 쑰회 응닡 dto λ³€κ²½

* 🚚 둜그인 API AuthController둜 이동

* πŸ‘” κ΄€λ¦¬μž κΈ°λŠ₯ 인가 둜직 μˆ˜μ •

* 🚚 Feat: κ΄€λ¦¬μž νšŒμ› λͺ©λ‘ 쑰회 DTO 생성

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› 관리 κΈ°λŠ₯ Service κ΅¬ν˜„

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› λΉ„ν™œμ„±ν™” update λ©”μ†Œλ“œ μΆ”κ°€

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› 관리 κΈ°λŠ₯ API κ΅¬ν˜„

* πŸ‘” 둜그인 μ‚¬μš©μž 정보 쑰회 둜직 μˆ˜μ •

* πŸ“ swagger 정보 μˆ˜μ •

* ♻️ λ©”μ†Œλ“œ 이름 μˆ˜μ •

* ♻️ νšŒμ› λͺ©λ‘ 쑰회 응닡 dto λ³€κ²½

* :sparkles Feat: κ΄€λ¦¬μž 포인트 μ‚¬μš©λŸ‰ 톡계 DTO 생성

* ✨ Feat: κ΄€λ¦¬μž 포인트 μ‚¬μš©λŸ‰ 톡계 κΈ°λŠ₯ Service κ΅¬ν˜„

* ✨ Feat: κ΄€λ¦¬μž 결제 λ‚΄μ—­ 쑰회 DTO 생성

* ✨ Feat: κ΄€λ¦¬μž 결제 λ‚΄μ—­ 쑰회 Service κ΅¬ν˜„

* ✨ Feat: κ΄€λ¦¬μž 맀좜 관리 API κ΅¬ν˜„

* ♻️ dto λͺ… λ³€κ²½

* πŸ”₯ 좩돌 μ½”λ“œ μ‚­μ œ

* ✨ Feat: μ‚¬μš©μž 포인트 μ‚¬μš©/쑰회 DTO 생성

* ✨ Feat: μ‚¬μš©μž 포인트 μ‚¬μš©/쑰회 Service κ΅¬ν˜„

* ✨ Feat: μ‚¬μš©μž 포인트 μ‚¬μš©/쑰회 API κ΅¬ν˜„

* 🚚 admin νŒ¨ν‚€μ§€λ‘œ κ΄€λ¦¬μž κΈ°λŠ₯ 이동

* ✨ Feat: μ‚¬μš©μž 포인트 μΆ©μ „ λ‚΄μ—­ 쑰회 dto 생성

* ✨ Feat: μ‚¬μš©μž 포인트 μΆ©μ „ λ‚΄μ—­ Service κ΅¬ν˜„

* ✨ Feat: μ‚¬μš©μž 포인트 μΆ©μ „ λ‚΄μ—­ 쑰회 API κ΅¬ν˜„

* πŸ‘” μ‚¬μš©μž 포인트 μ„€μ • λ©”μ†Œλ“œ μΆ”κ°€

* πŸ“ swagger ENUM μ˜ˆμ‹œ μΆ”κ°€

* πŸ”€ Feat: Point, Payment μ°Έμ‘° 관계 λ³€κ²½ (#37)

* 🚚 둜그인 API AuthController둜 이동

* πŸ‘” κ΄€λ¦¬μž κΈ°λŠ₯ 인가 둜직 μˆ˜μ •

* 🚚 Feat: κ΄€λ¦¬μž νšŒμ› λͺ©λ‘ 쑰회 DTO 생성

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› 관리 κΈ°λŠ₯ Service κ΅¬ν˜„

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› λΉ„ν™œμ„±ν™” update λ©”μ†Œλ“œ μΆ”κ°€

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› 관리 κΈ°λŠ₯ API κ΅¬ν˜„

* πŸ‘” 둜그인 μ‚¬μš©μž 정보 쑰회 둜직 μˆ˜μ •

* πŸ“ swagger 정보 μˆ˜μ •

* ♻️ λ©”μ†Œλ“œ 이름 μˆ˜μ •

* ♻️ νšŒμ› λͺ©λ‘ 쑰회 응닡 dto λ³€κ²½

* 🚚 둜그인 API AuthController둜 이동

* πŸ‘” κ΄€λ¦¬μž κΈ°λŠ₯ 인가 둜직 μˆ˜μ •

* 🚚 Feat: κ΄€λ¦¬μž νšŒμ› λͺ©λ‘ 쑰회 DTO 생성

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› 관리 κΈ°λŠ₯ Service κ΅¬ν˜„

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› λΉ„ν™œμ„±ν™” update λ©”μ†Œλ“œ μΆ”κ°€

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› 관리 κΈ°λŠ₯ API κ΅¬ν˜„

* πŸ‘” 둜그인 μ‚¬μš©μž 정보 쑰회 둜직 μˆ˜μ •

* πŸ“ swagger 정보 μˆ˜μ •

* ♻️ λ©”μ†Œλ“œ 이름 μˆ˜μ •

* ♻️ νšŒμ› λͺ©λ‘ 쑰회 응닡 dto λ³€κ²½

* :sparkles Feat: κ΄€λ¦¬μž 포인트 μ‚¬μš©λŸ‰ 톡계 DTO 생성

* ✨ Feat: κ΄€λ¦¬μž 포인트 μ‚¬μš©λŸ‰ 톡계 κΈ°λŠ₯ Service κ΅¬ν˜„

* ✨ Feat: κ΄€λ¦¬μž 결제 λ‚΄μ—­ 쑰회 DTO 생성

* ✨ Feat: κ΄€λ¦¬μž 결제 λ‚΄μ—­ 쑰회 Service κ΅¬ν˜„

* ✨ Feat: κ΄€λ¦¬μž 맀좜 관리 API κ΅¬ν˜„

* ♻️ dto λͺ… λ³€κ²½

* πŸ”₯ 좩돌 μ½”λ“œ μ‚­μ œ

* ✨ Feat: μ‚¬μš©μž 포인트 μ‚¬μš©/쑰회 DTO 생성

* ✨ Feat: μ‚¬μš©μž 포인트 μ‚¬μš©/쑰회 Service κ΅¬ν˜„

* ✨ Feat: μ‚¬μš©μž 포인트 μ‚¬μš©/쑰회 API κ΅¬ν˜„

* 🚚 admin νŒ¨ν‚€μ§€λ‘œ κ΄€λ¦¬μž κΈ°λŠ₯ 이동

* ✨ Feat: μ‚¬μš©μž 포인트 μΆ©μ „ λ‚΄μ—­ 쑰회 dto 생성

* ✨ Feat: μ‚¬μš©μž 포인트 μΆ©μ „ λ‚΄μ—­ Service κ΅¬ν˜„

* ✨ Feat: μ‚¬μš©μž 포인트 μΆ©μ „ λ‚΄μ—­ 쑰회 API κ΅¬ν˜„

* πŸ‘” μ‚¬μš©μž 포인트 μ„€μ • λ©”μ†Œλ“œ μΆ”κ°€

* πŸ“ swagger ENUM μ˜ˆμ‹œ μΆ”κ°€

* πŸ—ƒοΈ point, payment μ°Έμ‘° 관계 λ³€κ²½

* ♻️ λ¦¬νŒ©ν† λ§

* πŸ—ƒοΈ payment column μˆ˜μ •

* πŸ”€ Feat: 카카였 페이 결제 API κ΅¬ν˜„ (#38)

* 🚚 둜그인 API AuthController둜 이동

* πŸ‘” κ΄€λ¦¬μž κΈ°λŠ₯ 인가 둜직 μˆ˜μ •

* 🚚 Feat: κ΄€λ¦¬μž νšŒμ› λͺ©λ‘ 쑰회 DTO 생성

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› 관리 κΈ°λŠ₯ Service κ΅¬ν˜„

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› λΉ„ν™œμ„±ν™” update λ©”μ†Œλ“œ μΆ”κ°€

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› 관리 κΈ°λŠ₯ API κ΅¬ν˜„

* πŸ‘” 둜그인 μ‚¬μš©μž 정보 쑰회 둜직 μˆ˜μ •

* πŸ“ swagger 정보 μˆ˜μ •

* ♻️ λ©”μ†Œλ“œ 이름 μˆ˜μ •

* ♻️ νšŒμ› λͺ©λ‘ 쑰회 응닡 dto λ³€κ²½

* 🚚 둜그인 API AuthController둜 이동

* πŸ‘” κ΄€λ¦¬μž κΈ°λŠ₯ 인가 둜직 μˆ˜μ •

* 🚚 Feat: κ΄€λ¦¬μž νšŒμ› λͺ©λ‘ 쑰회 DTO 생성

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› 관리 κΈ°λŠ₯ Service κ΅¬ν˜„

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› λΉ„ν™œμ„±ν™” update λ©”μ†Œλ“œ μΆ”κ°€

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› 관리 κΈ°λŠ₯ API κ΅¬ν˜„

* πŸ‘” 둜그인 μ‚¬μš©μž 정보 쑰회 둜직 μˆ˜μ •

* πŸ“ swagger 정보 μˆ˜μ •

* ♻️ λ©”μ†Œλ“œ 이름 μˆ˜μ •

* ♻️ νšŒμ› λͺ©λ‘ 쑰회 응닡 dto λ³€κ²½

* :sparkles Feat: κ΄€λ¦¬μž 포인트 μ‚¬μš©λŸ‰ 톡계 DTO 생성

* ✨ Feat: κ΄€λ¦¬μž 포인트 μ‚¬μš©λŸ‰ 톡계 κΈ°λŠ₯ Service κ΅¬ν˜„

* ✨ Feat: κ΄€λ¦¬μž 결제 λ‚΄μ—­ 쑰회 DTO 생성

* ✨ Feat: κ΄€λ¦¬μž 결제 λ‚΄μ—­ 쑰회 Service κ΅¬ν˜„

* ✨ Feat: κ΄€λ¦¬μž 맀좜 관리 API κ΅¬ν˜„

* ♻️ dto λͺ… λ³€κ²½

* πŸ”₯ 좩돌 μ½”λ“œ μ‚­μ œ

* ✨ Feat: μ‚¬μš©μž 포인트 μ‚¬μš©/쑰회 DTO 생성

* ✨ Feat: μ‚¬μš©μž 포인트 μ‚¬μš©/쑰회 Service κ΅¬ν˜„

* ✨ Feat: μ‚¬μš©μž 포인트 μ‚¬μš©/쑰회 API κ΅¬ν˜„

* 🚚 admin νŒ¨ν‚€μ§€λ‘œ κ΄€λ¦¬μž κΈ°λŠ₯ 이동

* ✨ Feat: μ‚¬μš©μž 포인트 μΆ©μ „ λ‚΄μ—­ 쑰회 dto 생성

* ✨ Feat: μ‚¬μš©μž 포인트 μΆ©μ „ λ‚΄μ—­ Service κ΅¬ν˜„

* ✨ Feat: μ‚¬μš©μž 포인트 μΆ©μ „ λ‚΄μ—­ 쑰회 API κ΅¬ν˜„

* πŸ‘” μ‚¬μš©μž 포인트 μ„€μ • λ©”μ†Œλ“œ μΆ”κ°€

* πŸ“ swagger ENUM μ˜ˆμ‹œ μΆ”κ°€

* πŸ—ƒοΈ point, payment μ°Έμ‘° 관계 λ³€κ²½

* ♻️ λ¦¬νŒ©ν† λ§

* πŸ—ƒοΈ payment column μˆ˜μ •

* Add kakao pay key property

* ✨ Feat: 카카였 페이 결제 DTO 생성

* ✨ Feat: 카카였 페이 μΆ©μ „ Service κ΅¬ν˜„

* ✨ Feat: 포인트 μΆ©μ „ μš”μ²­ 및 μ™„λ£Œ API κ΅¬ν˜„

* ♻️ λ¦¬νŒ©ν† λ§

* πŸ”₯ μ‚¬μš© μ•ˆ λ˜λŠ” importλ¬Έ μ‚­μ œ

* πŸ”₯ COMPLETE μ‚­μ œ

* ♻️ λ¦¬νŒ©ν† λ§

* πŸ”€ Feat: κ΄€λ¦¬μž λŒ€μ‹œλ³΄λ“œ API κ΅¬ν˜„ (#40)

* 🚚 둜그인 API AuthController둜 이동

* πŸ‘” κ΄€λ¦¬μž κΈ°λŠ₯ 인가 둜직 μˆ˜μ •

* 🚚 Feat: κ΄€λ¦¬μž νšŒμ› λͺ©λ‘ 쑰회 DTO 생성

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› 관리 κΈ°λŠ₯ Service κ΅¬ν˜„

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› λΉ„ν™œμ„±ν™” update λ©”μ†Œλ“œ μΆ”κ°€

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› 관리 κΈ°λŠ₯ API κ΅¬ν˜„

* πŸ‘” 둜그인 μ‚¬μš©μž 정보 쑰회 둜직 μˆ˜μ •

* πŸ“ swagger 정보 μˆ˜μ •

* ♻️ λ©”μ†Œλ“œ 이름 μˆ˜μ •

* ♻️ νšŒμ› λͺ©λ‘ 쑰회 응닡 dto λ³€κ²½

* 🚚 둜그인 API AuthController둜 이동

* πŸ‘” κ΄€λ¦¬μž κΈ°λŠ₯ 인가 둜직 μˆ˜μ •

* 🚚 Feat: κ΄€λ¦¬μž νšŒμ› λͺ©λ‘ 쑰회 DTO 생성

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› 관리 κΈ°λŠ₯ Service κ΅¬ν˜„

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› λΉ„ν™œμ„±ν™” update λ©”μ†Œλ“œ μΆ”κ°€

* ✨ Feat: κ΄€λ¦¬μž νšŒμ› 관리 κΈ°λŠ₯ API κ΅¬ν˜„

* πŸ‘” 둜그인 μ‚¬μš©μž 정보 쑰회 둜직 μˆ˜μ •

* πŸ“ swagger 정보 μˆ˜μ •

* ♻️ λ©”μ†Œλ“œ 이름 μˆ˜μ •

* ♻️ νšŒμ› λͺ©λ‘ 쑰회 응닡 dto λ³€κ²½

* :sparkles Feat: κ΄€λ¦¬μž 포인트 μ‚¬μš©λŸ‰ 톡계 DTO 생성

* ✨ Feat: κ΄€λ¦¬μž 포인트 μ‚¬μš©λŸ‰ 톡계 κΈ°λŠ₯ Service κ΅¬ν˜„

* ✨ Feat: κ΄€λ¦¬μž 결제 λ‚΄μ—­ 쑰회 DTO 생성

* ✨ Feat: κ΄€λ¦¬μž 결제 λ‚΄μ—­ 쑰회 Service κ΅¬ν˜„

* ✨ Feat: κ΄€λ¦¬μž 맀좜 관리 API κ΅¬ν˜„

* ♻️ dto λͺ… λ³€κ²½

* πŸ”₯ 좩돌 μ½”λ“œ μ‚­μ œ

* ✨ Feat: μ‚¬μš©μž 포인트 μ‚¬μš©/쑰회 DTO 생성

* ✨ Feat: μ‚¬μš©μž 포인트 μ‚¬μš©/쑰회 Service κ΅¬ν˜„

* ✨ Feat: μ‚¬μš©μž 포인트 μ‚¬μš©/쑰회 API κ΅¬ν˜„

* 🚚 admin νŒ¨ν‚€μ§€λ‘œ κ΄€λ¦¬μž κΈ°λŠ₯ 이동

* ✨ Feat: μ‚¬μš©μž 포인트 μΆ©μ „ λ‚΄μ—­ 쑰회 dto 생성

* ✨ Feat: μ‚¬μš©μž 포인트 μΆ©μ „ λ‚΄μ—­ Service κ΅¬ν˜„

* ✨ Feat: μ‚¬μš©μž 포인트 μΆ©μ „ λ‚΄μ—­ 쑰회 API κ΅¬ν˜„

* πŸ‘” μ‚¬μš©μž 포인트 μ„€μ • λ©”μ†Œλ“œ μΆ”κ°€

* πŸ“ swagger ENUM μ˜ˆμ‹œ μΆ”κ°€

* πŸ—ƒοΈ point, payment μ°Έμ‘° 관계 λ³€κ²½

* ♻️ λ¦¬νŒ©ν† λ§

* πŸ—ƒοΈ payment column μˆ˜μ •

* Add kakao pay key property

* ♻️ μ½”λ“œ λ¦¬νŒ©ν† λ§

* ✨ Feat: κ΄€λ¦¬μž λŒ€μ‹œλ³΄λ“œ 쑰회 DTO 생성

* ✨ Feat: κ΄€λ¦¬μž λŒ€μ‹œλ³΄λ“œ 쑰회 Service κ΅¬ν˜„

* ✨ Feat: κ΄€λ¦¬μž λŒ€μ‹œλ³΄λ“œ 쑰회 API κ΅¬ν˜„

* πŸ”€ Merge: λ§ˆμ΄νŽ˜μ΄μ§€ κ΄€λ ¨ API κ΅¬ν˜„ (#42)

* ✨ Feat: λ§ˆμ΄νŽ˜μ΄μ§€ μ‚¬μš©μž 정보 쑰회 API κ΅¬ν˜„

Related: #35

* ✨ Feat: Member update λ©”μ„œλ“œ 및 DTO κ΅¬ν˜„

Related: #35

* ✨ Feat: μ‚¬μš©μž κ°œμΈμ •λ³΄ μˆ˜μ • API κ΅¬ν˜„

Related: #35

* βž• Feat: GroupBoard recruitment 속성 μΆ”κ°€

Related: #35

* ✨ Feat: λ‚΄κ°€ μž‘μ„±ν•œ κ²Œμ‹œκΈ€ DTO, κ²Œμ‹œκΈ€ νŽ˜μ΄μ§• DTO μž‘μ„±

Related: #35

* ✨ Feat: λ‚΄κ°€ μž‘μ„±ν•œ κ²Œμ‹œκΈ€ 쑰회 API κ΅¬ν˜„

μ·¨μ—… κ²Œμ‹œκΈ€, 그룹원 λͺ¨μ§‘ κ²Œμ‹œκΈ€ λΆ„λ₯˜ κ΅¬ν˜„

Related: #35

* πŸ› Fix: λ§ˆμ΄νŽ˜μ΄μ§€ κ΄€λ ¨ API MemberController μœ„μΉ˜λ‘œ μˆ˜μ •

Related: #35

* ✨ Feat: κ²Œμ‹œκΈ€ λͺ©λ‘ DTO에 μ’‹μ•„μš” μ—¬λΆ€ μΆ”κ°€

Related: #35

* ✨ Feat: λ‚΄κ°€ μ’‹μ•„μš” ν•œ κ²Œμ‹œκΈ€ λͺ©λ‘ 쑰회 API κ΅¬ν˜„

Related: #35

* πŸ› Fix: BoardService μ˜€νƒ€ μˆ˜μ • 및 Comment Parent_id μˆ˜μ •

λΆ€λͺ¨ λŒ“κΈ€μΈ 경우 Parent_id null ν—ˆμš©μœΌλ‘œ μˆ˜μ •

Related: #35

* ⚑ Feat: Fetch Join & In Queryλ₯Ό ν†΅ν•œ μ’‹μ•„μš”ν•œ κ²Œμ‹œκΈ€ 쑰회 API μ΅œμ ν™”

Related: #35

* ✨ Feat: μž‘μ„±ν•œ λŒ“κΈ€μ˜ κ²Œμ‹œκΈ€ λͺ©λ‘ 쑰회 API κ΅¬ν˜„

Related: #35

* πŸ”€ Feat: κ΄€λ¦¬μž AI μ„œλΉ„μŠ€ 톡계 쑰회, ν•™μŠ΅ 데이터 쑰회/μ €μž₯ API κ΅¬ν˜„ (#44)

* ✨ Feat: κ΄€λ¦¬μž AI μ„œλΉ„μŠ€ 톡계 쑰회 DTO 생성

* ✨ Feat: κ΄€λ¦¬μž ν•™μŠ΅ 데이터 μ €μž₯/쑰회 DTO 생성

* ✨ Feat: κ΄€λ¦¬μž AI 관리 Service κ΅¬ν˜„

* ✨ Feat: κ΄€λ¦¬μž AI μ„œλΉ„μŠ€ μ‚¬μš©λŸ‰ 톡계, ν•™μŠ΅ 데이터 μ €μž₯/쑰회 API κ΅¬ν˜„

* πŸ“ μŠ€μ›¨κ±° μ„€λͺ… μΆ”κ°€ 및 μˆ˜μ •

* ✨ Feat: κ΄€λ¦¬μž AI μ„œλΉ„μŠ€ μ‚¬μš©λŸ‰ 톡계, ν•™μŠ΅ 데이터 μ €μž₯/쑰회 API κ΅¬ν˜„

* 🚚 κ΄€λ¦¬μž service λ©”μ†Œλ“œ Admin νŒ¨ν‚€μ§€λ‘œ 이동

* πŸ“ μŠ€μ›¨κ±° μ„€λͺ… μˆ˜μ •

* ♻️ μ½”λ“œ 정리

* πŸ”€ πŸ“ μŠ€μ›¨κ±° μ„€λͺ… μΆ”κ°€ (#47)

* ✨ λ ˆλ””μŠ€ 속성 μΆ”κ°€

* ♻️ λ³€μˆ˜λͺ… μˆ˜μ •

* πŸ”€ Refactor: κ²Œμ‹œλ¬Ό λͺ©λ‘ Page νƒ€μž…μ—μ„œ Sliceνƒ€μž…μœΌλ‘œ λ³€ν™˜ (#48)

* 🎨 κ²Œμ‹œλ¬Ό λͺ©λ‘μ„ Page νƒ€μž…μ—μ„œ Slice νƒ€μž…μœΌλ‘œ λ³€ν™˜

* ✨ Feat: μ·¨μ—… 정보 κ²Œμ‹œνŒ 쑰회 Service κ΅¬ν˜„

* ✨ Feat: μ·¨μ—… 정보 κ²Œμ‹œνŒ 쑰회 API κ΅¬ν˜„

* πŸ“ API URI μˆ˜μ •

* πŸ“ λ©”μ†Œλ“œλͺ… μˆ˜μ •

* ✨ Feat: 그룹원 λͺ¨μ§‘ κ²Œμ‹œνŒ 쑰회 Service κ΅¬ν˜„

* ✨ Feat: 그룹원 λͺ¨μ§‘ κ²Œμ‹œνŒ 쑰회 API κ΅¬ν˜„

* ♻️ API resonse dto λ³€κ²½

* πŸ”€ Merge : 둜그인 둜직 μˆ˜μ • 및 λ‘œκ·Έμ•„μ›ƒ API κ΅¬ν˜„ (#50)

* Update application-dev.yml

* βž• redis μ˜μ‘΄μ„± μΆ”κ°€

* ✨ Feat: RedisConfig, RedisUtil 생성

* ✨ Feat: 둜그인 / λ‘œκ·Έμ•„μ›ƒ Service κ΅¬ν˜„

* πŸ‘” Feat: 인증 인가 단계에 refresh 토큰 검증 둜직 μΆ”κ°€

* ✨ Feat: 둜그인 / λ‘œκ·Έμ•„μ›ƒ API κ΅¬ν˜„

* ✨ Feat: 둜그인 / λ‘œκ·Έμ•„μ›ƒ API κ΅¬ν˜„

* ✨ Feat: 토큰 μž¬λ°œκΈ‰ API κ΅¬ν˜„

* πŸ”₯ 토큰 μž¬λ°œκΈ‰ API μ‚­μ œ

* πŸ”₯ 토큰 μž¬λ°œκΈ‰ API μ‚­μ œ

* πŸ”₯ μ‚¬μš©λ˜μ§€ μ•ŠλŠ” importλ¬Έ μ‚­μ œ

* πŸ‘” MemberInfo response authority μΆ”κ°€

* πŸ“ μŠ€μ›¨κ±° μ„€λͺ… μΆ”κ°€

* ♻️ response header에 토큰 λ‹΄λŠ” λ©”μ†Œλ“œ μˆ˜μ •

* πŸ› Bearer ν”„λ¦¬ν”½μŠ€ μΆ”κ°€

* πŸ”€ Merge: λŒ“κΈ€ λͺ©λ‘ 쑰회, μž‘μ„±, μˆ˜μ •, μ‚­μ œ, μ’‹μ•„μš” 처리 API κ΅¬ν˜„ (#49)

* ✨ Feat: κ²Œμ‹œκΈ€ μ’‹μ•„μš” 처리 DTO, Service κ΅¬ν˜„

Related: #46

* ✨ Feat: Like μƒνƒœ λ³€κ²½ 및 Board LikeCount 둜직 κ΅¬ν˜„

Related: #46

* ✨ Feat: μ’‹μ•„μš” 처리 API κ΅¬ν˜„

Related: #46

* ✨ Feat: λŒ“κΈ€ μž‘μ„± DTO μž‘μ„±

Related: #46

* ✨ Feat: λŒ“κΈ€, λŒ€λŒ“κΈ€ μž‘μ„± API 및 λŒ“κΈ€ μΉ΄μš΄λ“œ κ΅¬ν˜„

Related: #46

* ✨ Feat: λŒ“κΈ€ DTO Swagger 적용

Related: #46

* ✨ Feat: λŒ“κΈ€ μˆ˜μ • API κ΅¬ν˜„

Related: #46

* ✨ Feat: Comment Cascade μ„€μ • μΆ”κ°€

Related: #46

* ✨ Feat: λŒ“κΈ€ μ‚­μ œ API κ΅¬ν˜„

Related: #46

* ✨ Feat: TimeUtil μΆ”κ°€

Related: #46

* ✨ Feat: λŒ“κΈ€ λͺ©λ‘ 쑰회 Query 및 Service κ΅¬ν˜„

Related: #46

* ✨ Feat: Comment Entity에 BaseTimeEntity μΆ”κ°€ 및 Response 이름 μˆ˜μ •

Related: #46

* ✨ Feat: λŒ“κΈ€ λͺ©λ‘(Slice) 쑰회 API κ΅¬ν˜„

Related: #46

* πŸ”€ Merge Conflict μ„œλΈŒλͺ¨λ“ˆ 였λ₯˜ ν•΄κ²°

Related: #49

* πŸ› resolve conflict

---------

Co-authored-by: JOO WON SEO <[email protected]>
Co-authored-by: SEO JOO WON <[email protected]>
3 people authored Apr 19, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
1 parent 1f096aa commit 347f9d7
Showing 62 changed files with 1,753 additions and 480 deletions.
2 changes: 1 addition & 1 deletion application-config
3 changes: 3 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -42,6 +42,9 @@ dependencies {

// google email
implementation 'org.springframework.boot:spring-boot-starter-mail'

// Redis
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
}

tasks.named('test') {
Original file line number Diff line number Diff line change
@@ -1,16 +1,12 @@
package com.codez4.meetfolio.domain.admin.controller;

import com.codez4.meetfolio.domain.admin.service.AdminService;
import com.codez4.meetfolio.domain.admin.dto.DashboardResponse;
import com.codez4.meetfolio.domain.admin.dto.PaymentAdminResponse;
import com.codez4.meetfolio.domain.admin.dto.PointAdminResponse;
import com.codez4.meetfolio.domain.admin.dto.*;
import com.codez4.meetfolio.domain.admin.service.AdminCommandService;
import com.codez4.meetfolio.domain.admin.service.AdminQueryService;
import com.codez4.meetfolio.domain.enums.JobKeyword;
import com.codez4.meetfolio.domain.member.Member;
import com.codez4.meetfolio.domain.member.dto.MemberResponse;
import com.codez4.meetfolio.domain.member.service.MemberCommandService;
import com.codez4.meetfolio.domain.member.service.MemberQueryService;
import com.codez4.meetfolio.domain.payment.service.PaymentQueryService;
import com.codez4.meetfolio.domain.point.service.PointQueryService;
import com.codez4.meetfolio.global.annotation.AuthenticationMember;
import com.codez4.meetfolio.global.exception.ApiException;
import com.codez4.meetfolio.global.response.ApiResponse;
@@ -19,6 +15,7 @@
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

@@ -31,20 +28,17 @@
@RequiredArgsConstructor
public class AdminController {

private final AdminService adminService;
private final AdminQueryService adminQueryService;
private final AdminCommandService adminCommandService;
private final MemberQueryService memberQueryService;
private final MemberCommandService memberCommandService;
private final PointQueryService pointQueryService;
private final PaymentQueryService paymentQueryService;


@Operation(summary = "λŒ€μ‹œ λ³΄λ“œ 쑰회", description = "κ΄€λ¦¬μž λ©”μΈνŽ˜μ΄μ§€μ˜ λŒ€μ‹œλ³΄λ“œλ₯Ό μ‘°νšŒν•©λ‹ˆλ‹€.")
@GetMapping("/dashboard")
public ApiResponse<DashboardResponse.DashboardResult> getDashboard(@AuthenticationMember Member admin) {
return ApiResponse.onSuccess(adminService.getDashboard());
return ApiResponse.onSuccess(adminQueryService.getDashboard());
}

@Operation(summary = "νšŒμ› λͺ©λ‘ 쑰회", description = "νšŒμ› 관리 λ©”λ‰΄μ˜ νšŒμ› λͺ©λ‘μ„ μ‘°νšŒν•©λ‹ˆλ‹€.")
@Operation(summary = "νšŒμ› 관리 - νšŒμ› λͺ©λ‘ 쑰회", description = "νšŒμ› 관리 λ©”λ‰΄μ˜ νšŒμ› λͺ©λ‘μ„ μ‘°νšŒν•©λ‹ˆλ‹€.")
@Parameter(name = "jobKeyword", description = "직무 ν‚€μ›Œλ“œ, Query Stringμž…λ‹ˆλ‹€. BACKEND/WEB/APP/DESIGN/AI", required = false, example = "BACKEND", in = ParameterIn.QUERY)
@GetMapping("/members-management")
public ApiResponse<MemberResponse.MemberListResult> getMemberList(@AuthenticationMember Member admin,
@@ -55,45 +49,66 @@ public ApiResponse<MemberResponse.MemberListResult> getMemberList(@Authenticatio
jobKeywordEnum = JobKeyword.convert(jobKeyword);
if (jobKeywordEnum == null) throw new ApiException(ErrorStatus._BAD_REQUEST);
} else jobKeywordEnum = null;
return ApiResponse.onSuccess(memberQueryService.getMemberList(page, jobKeywordEnum));
return ApiResponse.onSuccess(adminQueryService.getMemberList(page, jobKeywordEnum));
}

@Operation(summary = "νšŒμ› λΉ„ν™œμ„±ν™”", description = "νšŒμ›κ΄€λ¦¬ λ©”λ‰΄μ—μ„œ νšŒμ›μ„ λΉ„ν™œμ„±ν™”ν•©λ‹ˆλ‹€.")
@Operation(summary = "νšŒμ› 관리 -νšŒμ› λΉ„ν™œμ„±ν™”", description = "νšŒμ›κ΄€λ¦¬ λ©”λ‰΄μ—μ„œ νšŒμ›μ„ λΉ„ν™œμ„±ν™”ν•©λ‹ˆλ‹€.")
@Parameter(name = "memberId", description = "νšŒμ› Id, Path Variableμž…λ‹ˆλ‹€.", required = true, example = "1", in = ParameterIn.PATH)
@DeleteMapping("/members-management")
public ApiResponse<String> deleteMember(@AuthenticationMember Member admin,
@DeleteMapping("/members-management/{memberId}")
public ApiResponse<String> inactivateMember(@AuthenticationMember Member admin,
@PathVariable(value = "memberId") Long memberId) {
Member member = memberQueryService.findById(memberId);
memberCommandService.inactivateMember(member);
adminCommandService.inactivateMember(member);
return ApiResponse.onSuccess("νšŒμ› λΉ„ν™œμ„±ν™” μ„±κ³΅μž…λ‹ˆλ‹€.");
}

@Operation(summary = "포인트 μ‚¬μš© 톡계", description = "맀좜 관리 λ©”λ‰΄μ—μ„œ 포인트 μ‚¬μš© 톡계λ₯Ό μ‘°νšŒν•©λ‹ˆλ‹€. year, month λͺ¨λ‘ μž…λ ₯ μ•ˆ ν•  μ‹œ ν˜„μž¬ λ‹¬μ˜ 톡계λ₯Ό μ „μ†‘ν•©λ‹ˆλ‹€. year, month 쀑 ν•˜λ‚˜λ§Œ μž…λ ₯ μ‹œ μ—λŸ¬λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.")
@Operation(summary = "맀좜 관리 - 포인트 μ‚¬μš© 톡계", description = "맀좜 관리 λ©”λ‰΄μ—μ„œ 포인트 μ‚¬μš© 톡계λ₯Ό μ‘°νšŒν•©λ‹ˆλ‹€. year, month λͺ¨λ‘ μž…λ ₯ μ•ˆ ν•  μ‹œ ν˜„μž¬ λ‹¬μ˜ 톡계λ₯Ό μ „μ†‘ν•©λ‹ˆλ‹€. year, month 쀑 ν•˜λ‚˜λ§Œ μž…λ ₯ μ‹œ μ—λŸ¬λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.")
@Parameter(name = "year", description = "년도", required = false, example = "2024", in = ParameterIn.QUERY)
@Parameter(name = "month", description = "μ›”", required = false, example = "4", in = ParameterIn.QUERY)
@GetMapping("/point-management")
public ApiResponse<PointAdminResponse.PointStatics> getPointStatics(@AuthenticationMember Member admin,
@RequestParam(required = false) Integer year,
@RequestParam(required = false) Integer month) {
public ApiResponse<PointResponse.PointStatics> getPointStatics(@AuthenticationMember Member admin,
@RequestParam(required = false) Integer year,
@RequestParam(required = false) Integer month) {
if (year == null && month == null) {
return ApiResponse.onSuccess(pointQueryService.getPointStatics(LocalDate.now(ZoneId.of("Asia/Seoul")).getYear(), LocalDate.now(ZoneId.of("Asia/Seoul")).getMonthValue()));
return ApiResponse.onSuccess(adminQueryService.getPointStatics(LocalDate.now(ZoneId.of("Asia/Seoul")).getYear(), LocalDate.now(ZoneId.of("Asia/Seoul")).getMonthValue()));
} else if (year != null && month != null)
return ApiResponse.onSuccess(pointQueryService.getPointStatics(year, month));
return ApiResponse.onSuccess(adminQueryService.getPointStatics(year, month));
else throw new ApiException(ErrorStatus._BAD_REQUEST);
}

@Operation(summary = "결제 λ‚΄μ—­ 쑰회", description = "맀좜 관리 λ©”λ‰΄μ—μ„œ 결제 내역을 μ‘°νšŒν•©λ‹ˆλ‹€. year, month λͺ¨λ‘ μž…λ ₯ μ•ˆ ν•  μ‹œ ν˜„μž¬ λ‹¬μ˜ 톡계λ₯Ό μ „μ†‘ν•©λ‹ˆλ‹€. year, month 쀑 ν•˜λ‚˜λ§Œ μž…λ ₯ μ‹œ μ—λŸ¬λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.")
@Operation(summary = "맀좜 관리 - 결제 λ‚΄μ—­ 쑰회", description = "맀좜 관리 λ©”λ‰΄μ—μ„œ 결제 내역을 μ‘°νšŒν•©λ‹ˆλ‹€. year, month λͺ¨λ‘ μž…λ ₯ μ•ˆ ν•  μ‹œ ν˜„μž¬ λ‹¬μ˜ 톡계λ₯Ό μ „μ†‘ν•©λ‹ˆλ‹€. year, month 쀑 ν•˜λ‚˜λ§Œ μž…λ ₯ μ‹œ μ—λŸ¬λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.")
@Parameter(name = "year", description = "년도", required = false, example = "2024", in = ParameterIn.QUERY)
@Parameter(name = "month", description = "μ›”", required = false, example = "4", in = ParameterIn.QUERY)
@GetMapping("/payment-management")
public ApiResponse<PaymentAdminResponse.PaymentResult> getPaymentList(@AuthenticationMember Member admin,
@RequestParam(value = "page", defaultValue = "0") int page,
@RequestParam(required = false) Integer year,
@RequestParam(required = false) Integer month) {
public ApiResponse<PaymentResponse.PaymentResult> getPaymentList(@AuthenticationMember Member admin,
@RequestParam(value = "page", defaultValue = "0") int page,
@RequestParam(required = false) Integer year,
@RequestParam(required = false) Integer month) {
if (year == null && month == null) {
return ApiResponse.onSuccess(paymentQueryService.getPaymentList(page, LocalDate.now(ZoneId.of("Asia/Seoul")).getYear(), LocalDate.now(ZoneId.of("Asia/Seoul")).getMonthValue()));
return ApiResponse.onSuccess(adminQueryService.getPaymentList(page, LocalDate.now(ZoneId.of("Asia/Seoul")).getYear(), LocalDate.now(ZoneId.of("Asia/Seoul")).getMonthValue()));
} else if (year != null && month != null) {
return ApiResponse.onSuccess(paymentQueryService.getPaymentList(page, year, month));
return ApiResponse.onSuccess(adminQueryService.getPaymentList(page, year, month));
} else throw new ApiException(ErrorStatus._BAD_REQUEST);
}

@Operation(summary = "AI 관리 - AI μ„œλΉ„μŠ€ 톡계", description = "AI 관리 λ©”λ‰΄μ—μ„œ AI μ„œλΉ„μŠ€ 톡계λ₯Ό μ‘°νšŒν•©λ‹ˆλ‹€.")
@GetMapping("/model-management")
public ApiResponse<AIServiceResponse.AIServiceResult> getAIServiceStatics(@AuthenticationMember Member admin) {
return ApiResponse.onSuccess(adminQueryService.getAIServiceStatics());
}

@Operation(summary = "AI 관리 - ν•™μŠ΅ 데이터 리슀트 쑰회", description = "AI 관리 λ©”λ‰΄μ—μ„œ AI ν•™μŠ΅ 데이터 리슀트λ₯Ό μ‘°νšŒν•©λ‹ˆλ‹€.")
@GetMapping("/data-management")
public ApiResponse<DatasetResponse.DatasetInfo> getAIServiceStatics(@AuthenticationMember Member admin,
@RequestParam(value = "page", defaultValue = "0") int page) {
return ApiResponse.onSuccess(adminQueryService.getDatasetList(page));
}

@Operation(summary = "AI 관리 - ν•™μŠ΅ 데이터 μΆ”κ°€", description = "AI 관리 λ©”λ‰΄μ—μ„œ AI ν•™μŠ΅ 데이터λ₯Ό μ €μž₯ν•©λ‹ˆλ‹€.")
@PostMapping("/data-management")
public ApiResponse<DatasetResponse.DatasetProc> getAIServiceStatics(@AuthenticationMember Member admin,
@Valid @RequestBody DatasetRequest request) {
return ApiResponse.onSuccess(adminCommandService.saveDataset(request));
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
package com.codez4.meetfolio.domain.admin.dto;

import com.codez4.meetfolio.domain.model.Model;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.util.List;

public class AIServiceResponse {
@Schema(description = "κ΄€λ¦¬μž - AI μ„œλΉ„μŠ€ 톡계 쑰회 응닡 DTO")
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Getter
public static class AIServiceResult {
@Schema(description = "AI μ„œλΉ„μŠ€ μ‚¬μš©λŸ‰ 톡계")
private AIServiceInfo AIServiceInfo;
@Schema(description = "AI λͺ¨λΈ μ„±λŠ₯ μ§€ν‘œ")
private List<AIModelInfo> modelEvaluation;
}

@Schema(description = "κ΄€λ¦¬μž - AI μ„œλΉ„μŠ€ μ‚¬μš©λŸ‰ 응닡 DTO")
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Getter
public static class AIServiceInfo {
@Schema(description = "AI ν”Όλ“œλ°± μ„œλΉ„μŠ€ μ‚¬μš©λŸ‰")
private int feedbackCount;
@Schema(description = "AI 직무 μ—­λŸ‰ 뢄석 μ„œλΉ„μŠ€ μ‚¬μš©λŸ‰")
private int analysisCount;
@Schema(description = "총 AI μ„œλΉ„μŠ€ μ‚¬μš©λŸ‰")
private int totalCount;
@Schema(description = "AI μ„œλΉ„μŠ€ λ§Œμ‘±λ„")
private double satisfaction;
}

@Schema(description = "κ΄€λ¦¬μž - AI μ„œλΉ„μŠ€ 톡계 λͺ¨λΈ 정보 DTO")
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Getter
public static class AIModelInfo {
@Schema(description = "λͺ¨λΈλͺ…")
private String modelName;
@Schema(description = "정확도")
private double accuracy;
@Schema(description = "손싀값")
private double loss;
}


public static AIServiceResult toAIServiceResult(AIServiceInfo AIServiceInfo, List<AIModelInfo> models) {
return AIServiceResult.builder()
.AIServiceInfo(AIServiceInfo)
.modelEvaluation(models)
.build();
}

public static AIServiceResponse.AIServiceInfo toAIServiceInfo(int feedbackCount, int analysisCount, double satisfaction) {
return AIServiceResponse.AIServiceInfo.builder()
.feedbackCount(feedbackCount)
.analysisCount(analysisCount)
.totalCount(feedbackCount + analysisCount)
.satisfaction(satisfaction)
.build();
}

public static AIModelInfo toAIModelInfo(Model model) {
return AIModelInfo.builder()
.modelName(model.getName())
.accuracy(model.getAccuracy())
.loss(model.getLoss())
.build();
}
}
Original file line number Diff line number Diff line change
@@ -17,24 +17,12 @@ public class DashboardResponse {
@NoArgsConstructor
@Getter
public static class DashboardResult {
private AISolutionInfo aiSolutionInfo;
private AIServiceResponse.AIServiceInfo aiServiceInfo;
private MemberInfo memberInfo;
private PointInfo pointInfo;
private int paymentInfo;
}

@Schema(description = "μ‚¬μš©μž - μΆ©μ „ λ‚΄μ—­ λͺ©λ‘ DTO")
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Getter
public static class AISolutionInfo {
private int feedbackCount;
private int analysisCount;
private int totalCount;
private double satisfaction;
}

@Schema(description = "λŒ€μ‹œλ³΄λ“œ - 직무별 νšŒμ› 수 톡계 응닡 DTO")
@Builder
@AllArgsConstructor
@@ -60,23 +48,15 @@ public static class PointInfo {
private int analysisPoint;
}

public static DashboardResult toDashboardResult(AISolutionInfo aiSolutionInfo, MemberInfo memberInfo, PointInfo pointInfo, int paymentInfo) {
public static DashboardResult toDashboardResult(AIServiceResponse.AIServiceInfo aiSolutionInfo, MemberInfo memberInfo, PointInfo pointInfo, int paymentInfo) {
return DashboardResult.builder()
.aiSolutionInfo(aiSolutionInfo)
.aiServiceInfo(aiSolutionInfo)
.memberInfo(memberInfo)
.pointInfo(pointInfo)
.paymentInfo(paymentInfo)
.build();
}

public static AISolutionInfo toAISolutionInfo(int feedbackCount, int analysisCount, double satisfaction) {
return AISolutionInfo.builder()
.feedbackCount(feedbackCount)
.analysisCount(analysisCount)
.totalCount(feedbackCount + analysisCount)
.satisfaction(satisfaction)
.build();
}

public static MemberInfo toMemberInfo(int totalCount, Map<JobKeyword, Integer> jobCount) {
return MemberInfo.builder()
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.codez4.meetfolio.domain.admin.dto;

import com.codez4.meetfolio.domain.dataset.Dataset;
import com.codez4.meetfolio.domain.enums.JobKeyword;
import com.codez4.meetfolio.global.annotation.EnumValid;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;

@Schema(description = "데이터셋 μ €μž₯ Request dto")
@Getter
public class DatasetRequest {

@Schema(description = "데이터 μˆ˜μ§‘ μ‚¬μ΄νŠΈ")
private String domain;

@Schema(description = "데이터 μˆ˜μ§‘ url")
private String url;

@Schema(description = "μžκΈ°μ†Œκ°œμ„œ 데이터")
private String data;

@Schema(description = "μžκΈ°μ†Œκ°œμ„œ 지원 직무, BACKEND/WEB/APP/DESIGN/AI", example = "BACKEND")
@EnumValid(enumClass = JobKeyword.class)
private String job;

public static Dataset toEntity(DatasetRequest request){
return Dataset.builder()
.domain(request.domain)
.url(request.url)
.data(request.data)
.jobKeyword(JobKeyword.convert(request.job))
.build();
}
}
Loading

0 comments on commit 347f9d7

Please sign in to comment.