-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
135 changed files
with
5,093 additions
and
60 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,69 @@ | ||
# NBB1_2_3_Team10 | ||
# NBB1_2_3_Team10 | ||
# 빛다 🎬 | ||
> 영화를 빚어내다. | ||
|
||
--- | ||
|
||
## 목차 📖 | ||
- [프로젝트 소개](#프로젝트-소개) | ||
- [기능 소개](#기능-소개) | ||
- [팀원 소개](#팀원-소개) | ||
- [기술 스택](#기술-스택) | ||
|
||
|
||
|
||
--- | ||
|
||
## 프로젝트 소개 📌 | ||
|
||
> “작가와 배우를 이어주다” | ||
> | ||
>사용자는 자신의 작업물을 업로드하고, | ||
니즈에 맞는 대상을 선택하여 협업을 진행합니다. | ||
무명 배우와 작가들이 상호 동의 아래 | ||
커리어를 쌓아갈 수 있는 기회를 제공합니다. | ||
|
||
|
||
--- | ||
|
||
## 기능 소개 ✨ | ||
- **회원 관리**: | ||
- 회원가입 | ||
- 로그인 | ||
- 회원 정보 수정 | ||
- 회원 탈퇴 | ||
- **프로필**: | ||
- 프로필 사진 | ||
- 프로필 소개 | ||
- **피드**: | ||
- 본인이 출연, 제작한 작품을 피드로 게시해 포트폴리오로 사용이 가능합니다. | ||
- **Job Post**: | ||
- 구인 글 혹은 오디션을 게시할 수 있습니다. | ||
- **스카우트**: | ||
- 구인자의 니즈에 맞는 구직자를 찾은 경우 스카우트 제의를 할 수 있습니다. | ||
- **1대1 채팅**: | ||
- 컨택하고싶은 사용자와 채팅을 할 수 있습니다. | ||
|
||
--- | ||
|
||
## 팀원 소개 🧑🤝🧑 | ||
| 이수호 | 이정우 | 박주원 | 최재형 | 유정현 | 신은화 | | ||
|:---:|:---:|:---:|:---:|:---:|:---:| | ||
| <img src="https://avatars.githubusercontent.com/u/117787238?s=400&u=3fed12d99b807a97ef754d7453f804bd3f150298&v=4" width="150"> | <img src="https://avatars.githubusercontent.com/u/74736179?v=4" width="150"> | <img src="https://avatars.githubusercontent.com/u/153498069?v=4" width="150"> | <img src="https://avatars.githubusercontent.com/u/161911738?v=4" width="150"> | <img src="https://avatars.githubusercontent.com/u/130978507?v=4" width="150"> | <img src="https://avatars.githubusercontent.com/u/180101230?v=4" width="150"> | | ||
| PL, BE | BE, FE | BE, AWS | BE | BE | BE, GIT | | ||
| [ghtndl](https://github.com/ghtndl) | [jungyeoal](https://github.com/jungyoeal) | [juwon-code](https://github.com/juwon-code) | [Preta3418](https://github.com/Preta3418) | [YooJHyun](https://github.com/YooJHyun) | [deveunhwa](https://github.com/deveunhwa) | | ||
|
||
## 기술 스택 🦾 | ||
#### Lang & Frameworks | ||
![Spring Boot](https://img.shields.io/badge/Spring%20Boot-6DB33F?style=flat-square&logo=spring-boot&logoColor=white) | ||
![Kotlin](https://img.shields.io/badge/Kotlin-0095D5?style=flat-square&logo=kotlin&logoColor=white) | ||
![Hibernate](https://img.shields.io/badge/Hibernate-59666C?style=flat-square&logo=hibernate&logoColor=white) | ||
![MySQL](https://img.shields.io/badge/MySQL-4479A1?style=flat-square&logo=mysql&logoColor=white) | ||
#### Infra & Tools | ||
![IntelliJ IDEA](https://img.shields.io/badge/IntelliJ%20IDEA-000000?style=flat-square&logo=intellij-idea&logoColor=white) | ||
![Slack](https://img.shields.io/badge/Slack-4A154B?style=flat-square&logo=slack&logoColor=white) | ||
![Postman](https://img.shields.io/badge/Postman-FF6C37?style=flat-square&logo=postman&logoColor=white) | ||
![Notion](https://img.shields.io/badge/Notion-000000?style=flat-square&logo=notion&logoColor=white) | ||
![JWT](https://img.shields.io/badge/JWT-000000?style=flat-square&logo=json-web-tokens&logoColor=white) | ||
![Gradle](https://img.shields.io/badge/Gradle-02303A?style=flat-square&logo=gradle&logoColor=white) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
version: '3' | ||
services: | ||
backend-blue: | ||
build: | ||
context: . | ||
dockerfile: ./Dockerfile | ||
ports: | ||
- "8081:8080" | ||
environment: | ||
- SPRING_PROFILES_ACTIVE=production | ||
|
||
backend-green: | ||
build: | ||
context: . | ||
dockerfile: ./Dockerfile | ||
ports: | ||
- "8082:8080" | ||
environment: | ||
- SPRING_PROFILES_ACTIVE=production |
235 changes: 235 additions & 0 deletions
235
src/main/kotlin/org/tenten/bittakotlin/apply/controller/ApplyController.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,235 @@ | ||
package org.tenten.bittakotlin.apply.controller | ||
|
||
import io.swagger.v3.oas.annotations.Operation | ||
import io.swagger.v3.oas.annotations.Parameter | ||
import io.swagger.v3.oas.annotations.media.Content | ||
import io.swagger.v3.oas.annotations.media.Schema | ||
import io.swagger.v3.oas.annotations.responses.ApiResponse | ||
import io.swagger.v3.oas.annotations.tags.Tag | ||
import jakarta.validation.Valid | ||
import lombok.RequiredArgsConstructor | ||
import org.springframework.http.ResponseEntity | ||
import org.springframework.web.bind.annotation.* | ||
import org.tenten.bittakotlin.apply.dto.ApplyDTO | ||
import org.tenten.bittakotlin.apply.dto.ApplyStatusUpdateDTO | ||
import org.tenten.bittakotlin.apply.service.ApplyService | ||
import org.tenten.bittakotlin.profile.entity.Profile | ||
|
||
@Tag(name = "지원서 API 컨트롤러", description = "지원서와 관련된 REST API를 제공하는 컨트롤러입니다.") | ||
@RestController | ||
@RequestMapping("api/v1/apply") | ||
@RequiredArgsConstructor | ||
class ApplyController( | ||
private val applyService: ApplyService | ||
) { | ||
|
||
// @Operation( | ||
// summary = "전체 지원서 조회", | ||
// description = "회원의 전체 지원서를 조회합니다.", | ||
// responses = [ | ||
// ApiResponse( | ||
// responseCode = "200", | ||
// description = "지원서를 성공적으로 조회했습니다.", | ||
// content = [Content( | ||
// mediaType = "application/json", | ||
// schema = Schema(example = APPLY_SUCCESS_READ_ALL) | ||
// )] | ||
// ) | ||
// ] | ||
// ) | ||
@GetMapping | ||
fun findAll(profile: Profile): ResponseEntity<List<ApplyDTO>> { | ||
return ResponseEntity.ok(applyService.readAll(profile)) | ||
} | ||
|
||
// @Operation( | ||
// summary = "지원서 등록", | ||
// description = "지원서를 등록합니다.", | ||
// responses = [ | ||
// ApiResponse( | ||
// responseCode = "200", | ||
// description = "지원서를 성공적으로 등록했습니다.", | ||
// content = [Content( | ||
// mediaType = "application/json", | ||
// schema = Schema(example = APPLY_SUCCESS_REGISTER) | ||
// )] | ||
// ), | ||
// ApiResponse( | ||
// responseCode = "400", | ||
// description = "지원서 등록에 실패했습니다.", | ||
// content = [Content( | ||
// mediaType = "application/json", | ||
// schema = Schema(example = APPLY_FAILURE_NOT_REGISTERED) | ||
// )] | ||
// ) | ||
// ] | ||
// ) | ||
@PostMapping | ||
fun registerApply(@Valid @RequestBody applyDTO: ApplyDTO): ResponseEntity<Map<String, Any>> { | ||
return ResponseEntity.ok(applyService.register(applyDTO)) | ||
} | ||
|
||
// @Operation( | ||
// summary = "단일 지원서 조회", | ||
// description = "단일 지원서를 조회합니다.", | ||
// responses = [ | ||
// ApiResponse( | ||
// responseCode = "200", | ||
// description = "지원서를 조회했습니다.", | ||
// content = [Content( | ||
// mediaType = "application/json", | ||
// schema = Schema(example = APPLY_SUCCESS_READ) | ||
// )] | ||
// ), | ||
// ApiResponse( | ||
// responseCode = "400", | ||
// description = "지원서가 존재하지 않습니다.", | ||
// content = [Content( | ||
// mediaType = "application/json", | ||
// schema = Schema(example = APPLY_FAILURE_NOT_FOUND) | ||
// )] | ||
// ) | ||
// ] | ||
// ) | ||
// @Parameter( | ||
// name = "id", | ||
// description = "조회할 지원서의 ID", | ||
// required = true, | ||
// example = "1", | ||
// schema = Schema(type = "integer") | ||
// ) | ||
@GetMapping("/{id}") | ||
fun readApply(@PathVariable("id") id: Long): ResponseEntity<ApplyDTO> { | ||
val applyDTO = applyService.findById(id) | ||
return ResponseEntity.ok(applyDTO) | ||
} | ||
|
||
// @Operation( | ||
// summary = "지원서 삭제", | ||
// description = "지원서를 삭제합니다.", | ||
// responses = [ | ||
// ApiResponse( | ||
// responseCode = "200", | ||
// description = "지원서가 삭제되었습니다.", | ||
// content = [Content( | ||
// mediaType = "application/json", | ||
// schema = Schema(example = APPLY_SUCCESS_DELETE) | ||
// )] | ||
// ), | ||
// ApiResponse( | ||
// responseCode = "400", | ||
// description = "지원서 삭제에 실패했습니다.", | ||
// content = [Content( | ||
// mediaType = "application/json", | ||
// schema = Schema(example = APPLY_FAILURE_NOT_REMOVED) | ||
// )] | ||
// ), | ||
// ApiResponse( | ||
// responseCode = "404", | ||
// description = "삭제할 지원서가 존재하지 않습니다.", | ||
// content = [Content( | ||
// mediaType = "application/json", | ||
// schema = Schema(example = APPLY_FAILURE_NOT_FOUND) | ||
// )] | ||
// ) | ||
// ] | ||
// ) | ||
// @Parameter( | ||
// name = "id", | ||
// description = "삭제할 지원서의 ID", | ||
// required = true, | ||
// example = "1", | ||
// schema = Schema(type = "integer") | ||
// ) | ||
@DeleteMapping("/{id}") | ||
fun deleteApply(@Valid @PathVariable("id") id: Long): ResponseEntity<Map<String, String>> { | ||
applyService.delete(id) | ||
return ResponseEntity.ok(mapOf("message" to "삭제가 완료되었습니다")) | ||
} | ||
|
||
// @Operation( | ||
// summary = "게시물의 지원서 조회", | ||
// description = "게시물에 해당하는 지원서를 조회합니다.", | ||
// responses = [ | ||
// ApiResponse( | ||
// responseCode = "200", | ||
// description = "지원서를 성공적으로 조회했습니다.", | ||
// content = [Content( | ||
// mediaType = "application/json", | ||
// schema = Schema(example = APPLY_SUCCESS_READ_ALL) | ||
// )] | ||
// ), | ||
// ApiResponse( | ||
// responseCode = "404", | ||
// description = "지원서가 존재하지 않습니다.", | ||
// content = [Content( | ||
// mediaType = "application/json", | ||
// schema = Schema(example = APPLY_FAILURE_NOT_FOUND) | ||
// )] | ||
// ) | ||
// ] | ||
// ) | ||
// @Parameter( | ||
// name = "jobPostId, memberId", | ||
// description = "지원서의 해당 일거리 ID, 작성자의 회원 ID", | ||
// required = true, | ||
// example = "1, 1", | ||
// schema = Schema(type = "integer") | ||
// ) | ||
@GetMapping("/job-post/{jobPostId}/member/{profileId}") | ||
fun getApplyIntoJobPost( | ||
@PathVariable jobPostId: Long, | ||
@PathVariable profileId: Long | ||
): ResponseEntity<List<ApplyDTO>> { | ||
val applies = applyService.getApplyIntoJobPost(jobPostId, profileId) | ||
return ResponseEntity.ok(applies) | ||
} | ||
|
||
// @Operation( | ||
// summary = "지원 검토 상태 수정", | ||
// description = "게시물에 해당하는 지원의 검토 상태를 수정합니다.", | ||
// responses = [ | ||
// ApiResponse( | ||
// responseCode = "200", | ||
// description = "검토 상태를 성공적으로 수정했습니다.", | ||
// content = [Content( | ||
// mediaType = "application/json", | ||
// schema = Schema(example = APPLY_SUCCESS_MODIFY) | ||
// )] | ||
// ), | ||
// ApiResponse( | ||
// responseCode = "400", | ||
// description = "검토 상태 수정에 실패했습니다.", | ||
// content = [Content( | ||
// mediaType = "application/json", | ||
// schema = Schema(example = APPLY_FAILURE_NOT_MODIFY) | ||
// )] | ||
// ), | ||
// ApiResponse( | ||
// responseCode = "404", | ||
// description = "일거리가 존재하지 않습니다.", | ||
// content = [Content( | ||
// mediaType = "application/json", | ||
// schema = Schema(example = APPLY_FAILURE_NOT_FOUND) | ||
// )] | ||
// ) | ||
// ] | ||
// ) | ||
// @Parameter( | ||
// name = "applyId, profileId", | ||
// description = "해당 게시물의 지원 ID, 게시자의 프로필 ID", | ||
// required = true, | ||
// example = "1, 1", | ||
// schema = Schema(type = "integer") | ||
// ) | ||
@PutMapping("/{applyId}/status/{profileId}") | ||
fun applyStatusUpdate( | ||
@PathVariable applyId: Long, | ||
@PathVariable profileId: Long, | ||
@RequestBody applyStatusUpdateDTO: ApplyStatusUpdateDTO | ||
): ResponseEntity<String> { | ||
applyService.applyStatusUpdate(applyId, applyStatusUpdateDTO.applyStatus!!, profileId) | ||
return ResponseEntity.ok("상태가 변경되었습니다") | ||
} | ||
} | ||
|
Oops, something went wrong.