-
Notifications
You must be signed in to change notification settings - Fork 4
Recruit 인수인계서
Jihye Wee edited this page Nov 24, 2023
·
3 revisions
모집글 모듈은 RestAPI로 통신하여 모집글의 생성, 수정, 조회, 삭제의 기본 기능을 수행하며 키워드 및 조건 검색, 지원하기, 관심프로젝트 등록 등의 기능을 제공한다. 모집글 모듈의 데이터는 mysql과 nhn object storage에 저장된다.
- 모집글 생성
- 모집글 수정
- 모집글 삭제
- 모집글 전체 조회
- 모집글 조건 조회
- 모집글 단건 조회
- 모집글 생성시 임시저장(정책 미정)
-
Recruit
: 모집글 정보가 담기는 테이블, team과 OneToOne 관계로 teamId를 고유키로 사용 -
RecruitApplicant
: 지원자 정보가 담기는 테이블, user, recruit, role을 복합키로 사용 -
RecruitFavorite
: 관심프로젝트와 유저 정보가 담기는 테이블, user, recruit를 복합키로 사용 -
RecruitFile
: 게시글의 첨부파일이 담기는 테이블(1스텝에서는 사용되지 않고 2스텝 정책에 따라 수정이 필요함) -
RecruitInterview
: 모집글에 함께 등록되는 지원자 대상 설문 정보가 담기는 테이블 -
RecruitRole
: 모집글에 함께 등록되는 팀의 역할분담 정보가 담기는 테이블
아래는 entity에 @elementcollection으로 생성된 하위 테이블(기본적으로 OneToMnay의 관계를 가지고 있으며 cascasde.ALL과 orphan 속성을 기본으로 갖는다.)
-
Recruit_applicant_answer_list
: recruit_applicant가 가지고 있는 answerList의 정보가 담겨있는 테이블 - 'Recruit_interview_option`: interview의 객관식, 체크박스, 선형배율의 옵션 정보를 저장하는 테이블
-
Recruit_tags
: 모집글에 등록된 태그 이름을 저장하는 테이블
- Controller
-
RecruitController
: RestAPI로 모집글 관련하여 통신
-
- Service
-
RecruitService
: 모집글 관련한 비즈니스 로직 구현
-
- Repository
-
RecruitRepository
: 모집글 데이터 입출력 -
RecruitApplicantRepository
: 모집글 지원자 데이터 입출력 - 'RecruitFavoriteRepository`: 관심프로젝트 데이터 입출력
-
- Annotation
-
AuthorCheck
: 모집글의 작성자인지 체크한다. 팀게시판에서도 사용된다.
-
- Aspect
-
AuthorCheckAspect
: AuthorCheck 어노테이션의 method를 가지고 있다. Authentication을 검사하여 해당 게시글의 작성자가 아니면 exception을 던진다.
-
- preDefinedClass
-
Tag
: 2스텝의 admin페이지가 생기기 전에 데이터 저장을 위해 생성된 클래스. admin페이지의 태그 등록 기능이 구현되면 해당 내용을 이관하고 삭제가 필요하다. -
TagListManager
:Tag
정보를 미리 담아두는 기능을 하는 클래스
-
- recruitService
createRecruit
- 동일한 팀 이름이 있는지 검사
- 팀 생성
- 모집게시글 생성
- 생성된 모집글 id 반환
-
getRecruit
- id로 모집글 불러오기
- dto 매핑하여 반환
-
applyRecruit
- userId(요청 userId), recruitId(parameter), role(request)을 조합하여 이전에 신청 내역 검사
- 이전 신청 내역이 없을시 applyRecruit 생성
-
deleteRecruit
- author 확인
- 대표이미지 삭제
- 해당 recruit 삭제
-
updateRecruit
- recruit 정보에 Interview 수정 내역을 boolean으로 request 받음
- 해당 정보로 recruit 업데이트 후 interview가 수정된 경우 interview clear하고 수정 interview가 수정되지 않은 경우 그대로 종료
-
getRecruit
- hit 수를 1회 증가
- recruitResponse Dto에 해당 정보 매핑하여 반환
-
getRecruitSearchList
- status, tag, type, place, region, due, keyword로 검색 가능
- JPA predicate와 criteria builder를 이용하여 위 값들이 null이 아닌 경우 조건에 맞게 동적으로 쿼리 생성
- sort값을 이용하여 latest, hit 두가지 기준으로 order 적용
- 쿼리 실행하여 전체 리스트 조회
- 전체 리스트를 Dto에 맞게 매핑 + 토큰이 있는 경우 리스트 각 항목에 대하여 recruitFavorite이 있는지 검사하여 있는 경우 isFavorite을 true로 매핑(토큰이 없는 경우 isFavorite을 전체 false로 매핑)
- pageable 적용하여 subList만들어서 page 정보와 함께 반환 pagenation시에 pageNumber가 0부터 시작함을 유의
-
changeRecruitFavorite
- 요청 User_id와 recruit_id로 recruitFavorite 인스턴스가 존재하는지 검사
- 존재하는 경우 삭제
- 존재하지 않는 경우 생성