Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DOCS] 스터디 내부 기능 Service 코드 주석 추가 #241

Merged
merged 3 commits into from
Oct 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,13 @@ public class MemberStudyCommandServiceImpl implements MemberStudyCommandService

/* ----------------------------- 진행중인 스터디 관련 API ------------------------------------- */

// [진행중인 스터디] 스터디 탈퇴하기
/**
* 진행중인 스터디에서 탈퇴하기 위한 메서드입니다.
* 스터디장은 스터디를 탈퇴할 수 없으며 스터디를 종료하고자 하는 경우 스터디 terminateStudy API를 호출해야 합니다.
* @param memberId 스터디를 탈퇴할 타겟 회원의 아이디(로그인 아이디 X)를 입력 받습니다.
* @param studyId 타겟 회원이 탈퇴하고자 하는 스터디의 아이디를 입력 받습니다.
* @return 탈퇴한 스터디의 아이디와 이름, 탈퇴한 회원의 아이디와 이름이 반환됩니다.
*/
public StudyWithdrawalResponseDTO.WithdrawalDTO withdrawFromStudy(Long memberId, Long studyId) {

Member member = memberRepository.findById(memberId)
Expand All @@ -91,12 +97,18 @@ public StudyWithdrawalResponseDTO.WithdrawalDTO withdrawFromStudy(Long memberId,
return StudyWithdrawalResponseDTO.WithdrawalDTO.toDTO(member, study);
}

// [진행중인 스터디] 스터디 끝내기
/**
* 운영중인 스터디를 종료하는 메서드입니다. 스터디장만 호출 가능합니다.
* @param studyId 종료할 스터디의 아이디를 입력 받습니다.
* @return 종료된 스터디의 아이디, 이름, 상태를 반환합니다.
*/
public StudyTerminationResponseDTO.TerminationDTO terminateStudy(Long studyId) {

Study study = studyRepository.findById(studyId)
.orElseThrow(() -> new StudyHandler(ErrorStatus._STUDY_NOT_FOUND));

// 스터디장 확인 로직 빠짐

study.setStatus(Status.OFF);
studyRepository.save(study);

Expand Down Expand Up @@ -224,6 +236,12 @@ public StudyApplyResponseDTO acceptAndRejectStudyApplyForTest(Long memberId, Lon

/* ----------------------------- 스터디 일정 관련 API ------------------------------------- */

/**
* 스터디 일정을 추가하는 메서드입니다.
* @param studyId 타겟 스터디의 아이디를 입력 받습니다.
* @param scheduleRequestDTO 생성할 일정의 제목, 위치, 시작 일시, 종료 일시, 종일 진행 여부, 반복 여부를 입력 받습니다.
* @return 스터디 아이디와 생성된 일정의 아이디, 제목을 반환합니다.
*/
@Override
public ScheduleResponseDTO.ScheduleDTO addSchedule(Long studyId, ScheduleRequestDTO.ScheduleDTO scheduleRequestDTO) {

Expand Down Expand Up @@ -281,6 +299,13 @@ public ScheduleResponseDTO.ScheduleDTO addSchedule(Long studyId, ScheduleRequest
return ScheduleResponseDTO.ScheduleDTO.toDTO(schedule);
}

/**
* 스터디 일정을 변경하는 메서드입니다.
* @param studyId 타겟 스터디의 아이디를 입력 받습니다.
* @param scheduleId 변경할 일정의 아이디를 입력 받습니다.
* @param scheduleModDTO 변경된 일정의 제목, 위치, 시작 일시, 종료 일시, 종일 진행 여부, 반복 여부를 입력 받습니다.
* @return 스터디 아이디와 변경된 일정의 아이디, 제목을 반환합니다.
*/
@Override
public ScheduleResponseDTO.ScheduleDTO modSchedule(Long studyId, Long scheduleId, ScheduleRequestDTO.ScheduleDTO scheduleModDTO) {

Expand Down Expand Up @@ -318,7 +343,13 @@ public ScheduleResponseDTO.ScheduleDTO modSchedule(Long studyId, Long scheduleId
}

/* ----------------------------- 스터디 출석 관련 API ------------------------------------- */
// [스터디 출석체크] 출석 퀴즈 생성하기

/**
* 출석 퀴즈를 생성하는 메서드입니다.
* @param studyId 타겟 스터디의 아이디를 입력 받습니다.
* @param quizRequestDTO 출석 퀴즈에 담길 질문과 정답을 입력 받습니다.
* @return 생성된 퀴즈의 아이디와 질문이 반환됩니다.
*/
@Override
public StudyQuizResponseDTO.QuizDTO createAttendanceQuiz(Long studyId, StudyQuizRequestDTO.QuizDTO quizRequestDTO) {

Expand Down Expand Up @@ -358,7 +389,14 @@ public StudyQuizResponseDTO.QuizDTO createAttendanceQuiz(Long studyId, StudyQuiz
return StudyQuizResponseDTO.QuizDTO.toDTO(quiz);
}

// [스터디 출석체크] 출석 체크하기
/**
* 출석 체크에 사용되는 메서드입니다.
* 메서드 내에서 퀴즈의 제한 시간과 시도 횟수를 확인하며, 조건을 충족하는 경우 회원 출석 정보를 저장합니다.
* @param studyId 타겟 스터디의 아이디를 입력 받습니다.
* @param quizId 타겟 퀴즈의 아이디를 입력 받습니다.
* @param attendanceRequestDTO 퀴즈에 대한 회원의 답변을 입력 받습니다.
* @return 회원 아이디, 퀴즈 아이디, 출석 아이디, 정답 여부, 시도 횟수, 출석 정보 생성 시각을 반환합니다.
*/
@Override
public StudyQuizResponseDTO.AttendanceDTO attendantStudy(Long studyId, Long quizId, StudyQuizRequestDTO.AttendanceDTO attendanceRequestDTO) {

Expand Down Expand Up @@ -415,7 +453,12 @@ public StudyQuizResponseDTO.AttendanceDTO attendantStudy(Long studyId, Long quiz
return StudyQuizResponseDTO.AttendanceDTO.toDTO(memberAttendance, try_num+1);
}

// [스터디 출석체크] 출석 퀴즈 삭제하기
/**
* 출석 퀴즈를 삭제하는 메서드입니다.
* @param studyId 타겟 스터디의 아이디를 입력 받습니다.
* @param quizId 삭제할 퀴즈의 아이디를 입력 받습니다.
* @return 삭제된 퀴즈의 아이디와 질문을 반환합니다.
*/
@Override
public StudyQuizResponseDTO.QuizDTO deleteAttendanceQuiz(Long studyId, Long quizId) {

Expand Down Expand Up @@ -456,6 +499,12 @@ public StudyQuizResponseDTO.QuizDTO deleteAttendanceQuiz(Long studyId, Long quiz

/* ----------------------------- 스터디 투표 관련 API ------------------------------------- */

/**
* 스터디 투표를 생성하는 메서드입니다.
* @param studyId 타겟 스터디의 아이디를 입력 받습니다.
* @param voteDTO 생성할 투표의 제목, 항목 목록, 중복 선택 가능 여부, 종료 일시를 입력 받습니다.
* @return 생성된 투표의 아이디와 제목을 반환합니다.
*/
@Override
public StudyVoteResponseDTO.VotePreviewDTO createVote(Long studyId, StudyVoteRequestDTO.VoteDTO voteDTO) {

Expand Down Expand Up @@ -492,6 +541,13 @@ public StudyVoteResponseDTO.VotePreviewDTO createVote(Long studyId, StudyVoteReq
return StudyVoteResponseDTO.VotePreviewDTO.toDTO(vote);
}

/**
* 스터디 투표의 항목을 생성하는 메서드입니다.
* createVote 메서드 내부에서 사용되는 메서드입니다.
* @param vote 항목을 생성할 타겟 투표를 입력 받습니다.
* @param voteDTO 생성할 투표의 제목, 항목 목록, 중복 선택 가능 여부, 종료 일시를 입력 받습니다.
* @return 투표 객체를 반환합니다.
*/
private Vote createOption(Vote vote, StudyVoteRequestDTO.VoteDTO voteDTO) {
voteDTO.getOptions()
.forEach(stringOption -> {
Expand All @@ -505,6 +561,13 @@ private Vote createOption(Vote vote, StudyVoteRequestDTO.VoteDTO voteDTO) {
return voteRepository.save(vote);
}

/**
* 특정 항목에 투표하기 위한 메서드입니다.
* @param studyId 타겟 스터디의 아이디를 입력 받습니다.
* @param voteId 타겟 투표의 아이디를 입력 받습니다.
* @param votedOptionDTO 회원이 투표한 항목의 아이디 목록을 입력 받습니다.
* @return 투표 아이디, 회원 아이디, 투표한 항목 목록을 반환합니다.
*/
@Override
public StudyVoteResponseDTO.VotedOptionDTO vote(Long studyId, Long voteId, StudyVoteRequestDTO.VotedOptionDTO votedOptionDTO) {

Expand Down Expand Up @@ -562,6 +625,13 @@ public StudyVoteResponseDTO.VotedOptionDTO vote(Long studyId, Long voteId, Study
return StudyVoteResponseDTO.VotedOptionDTO.toDTO(vote, loginMember, memberVotes);
}

/**
* 투표를 편집하는 메서드입니다.
* @param studyId 타겟 스터디의 아이디를 입력 받습니다.
* @param voteId 편집할 투표의 아이디를 입력 받습니다.
* @param voteDTO 편집된 투표의 제목, 항목 목록, 복수 선택 가능 여부, 종료 일시를 입력 받습니다.
* @return 편집된 투표의 아이디와 제목을 반환합니다.
*/
@Override
public StudyVoteResponseDTO.VotePreviewDTO updateVote(Long studyId, Long voteId, StudyVoteRequestDTO.VoteUpdateDTO voteDTO) {

Expand Down Expand Up @@ -610,6 +680,12 @@ public StudyVoteResponseDTO.VotePreviewDTO updateVote(Long studyId, Long voteId,
return StudyVoteResponseDTO.VotePreviewDTO.toDTO(vote);
}

/**
* 투표를 삭제하는 메서드입니다.
* @param studyId 타겟 스터디의 아이디를 입력 받습니다.
* @param voteId 삭제할 투표의 아이디를 입력 받습니다.
* @return 삭제된 투표의 아이디와 제목을 반환합니다.
*/
@Override
public StudyVoteResponseDTO.VotePreviewDTO deleteVote(Long studyId, Long voteId) {

Expand Down Expand Up @@ -644,6 +720,11 @@ public StudyVoteResponseDTO.VotePreviewDTO deleteVote(Long studyId, Long voteId)
return StudyVoteResponseDTO.VotePreviewDTO.toDTO(vote);
}

/**
* 모든 투표 항목을 삭제하는 메서드입니다.
* deleteVote 메서드 내부에서 호출되는 메서드입니다.
* @param voteId 항목을 삭제할 타겟 투표의 아이디를 입력 받습니다.
*/
private void deleteOptions(Long voteId) {
List<Option> options = optionRepository.findAllByVoteId(voteId);
options.forEach(option -> {
Expand Down Expand Up @@ -673,6 +754,13 @@ private boolean isMember(Long memberId, Long studyId) {
return memberStudyRepository.findByMemberIdAndStudyIdAndStatus(memberId, studyId, ApplicationStatus.APPROVED).isPresent();
}

/**
* 스터디원을 신고하고 신고 내역을 저장하는 메서드입니다.
* @param studyId 타겟 스터디의 아이디를 입력 받습니다.
* @param memberId 신고할 회원의 아이디를 입력 받습니다.
* @param studyMemberReportDTO 신고 사유를 입력 받습니다.
* @return 신고를 당한 회원의 아이디와 이름을 반환합니다.
*/
@Override
public MemberResponseDTO.ReportedMemberDTO reportStudyMember(Long studyId, Long memberId, StudyMemberReportDTO studyMemberReportDTO) {

Expand Down Expand Up @@ -713,6 +801,12 @@ public MemberResponseDTO.ReportedMemberDTO reportStudyMember(Long studyId, Long
return MemberResponseDTO.ReportedMemberDTO.toDTO(member);
}

/**
* 스터디 게시글을 신고하고 신고 내역을 저장하는 메서드입니다.
* @param studyId 타겟 스터디의 아이디를 입력합니다.
* @param postId 신고할 게시글의 아이디를 입력합니다.
* @return 신고를 당한 스터디 게시글의 아이디와 제목을 반환합니다.
*/
@Override
public StudyPostResDTO.PostPreviewDTO reportStudyPost(Long studyId, Long postId) {

Expand Down Expand Up @@ -746,7 +840,7 @@ public StudyPostResDTO.PostPreviewDTO reportStudyPost(Long studyId, Long postId)
return StudyPostResDTO.PostPreviewDTO.toDTO(studyPost);
}

// * ----------------------------- 스터디 To-Do List 관련 API ------------------------------------- */
/* ----------------------------- 스터디 To-Do List 관련 API ------------------------------------- */

/**
* To-Do List를 생성합니다.
Expand Down
Loading
Loading