Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 카우치코딩
- 박스모델
- border
- 프로토콜
- 6주포트폴리오
- HTTP
- HTML
- 응답 헤더
- IP
- couchcoding
- 바깥쪽 여백
- 클라이언트와 서버 구조
- 무상태
- padding
- 팀프로젝트
- HTTP 메시지 바디
- 서버
- 안쪽 여백
- CSS
- 경계선
- 선택자
- 요청 헤더
- URL
- 콘텐츠 영역
- Content
- 협업프로젝트
- connectionless
- margin
- HTTP 메시지
- 클라이언트
Archives
- Today
- Total
정리하고 기록하며 성장하는
[카우치코딩] 팀프로젝트 6주차 회고 본문
- [o] 스터디 참여신청 기능 개발
- [o] 스터디 참여자 정보조회 기능 개발
- [o] 스터디 공유로그 CR 기능 개발
- [o] 마이스터디 Read 기능 개발
- [o] 스터디 관심 등록 기능 개발
스터디 참여자 정보조회 기능 개발
// 스터디 참여자 정보조회
@Transactional
public List<StudyMember> studyMembers(Long studyId) {
List<StudyMember> studyMembers = studyMemberRepository.findAllByStudyId(studyId);
return studyMembers;
}
List<StudyMember> findAllByStudyId(Long studyId);
@Override
public List<StudyMember> findAllByStudyId(Long studyId) {
List<StudyMember> studyMembers = queryFactory.selectFrom(studyMember)
.where(eqStudyId(studyId)).fetch();
return studyMembers;
}
스터디 참여신청 기능 개발
// 스터디 참여 신청 (멤버)
@Transactional
public StudyMemberResponseDto studyMemberEnroll(Member member, Long studyId) {
Study study = studyRepository.findById(studyId).orElseThrow(() -> {
throw new StudyNotFoundException();
});
StudyMember studyMember = StudyMember.builder()
.study(study)
.role("member")
.member(member)
.build();
log.info("member techStack: {}" + member.getTechStack().toString());
StudyMember entityResult = studyMemberRepository.saveAndFlush(studyMember);
log.info("entityResult: {}" + entityResult);
int updateParticipants = study.getCurrentParticipants() + 1;
Study entity = study.updateCurrentParticipants( updateParticipants);
StudyMemberResponseDto studyMemberResponseDto = new StudyMemberResponseDto();
studyMemberResponseDto.setMember(entityResult.getMember());
studyMemberResponseDto.setStudy(entity);
return studyMemberResponseDto;
}
- 현재 스터디 참여인원수를 update 하기 위해 현재 인원수 + 1해주는 방식
- 이는 한번에 사람이 몰리면 락이 걸려 느려지는 문제가 발생할 수 있다
- 이를 위해 study_id = ?일때를 디비에서 카운팅 하는 방식으로 코드를 리펙토링 할 예정이다
스터디 공유로그 Create , Read 기능 개발
스터디 공유로그 Create
public StudyBlogResponseDto blogs(StudyBlogRequestDto studyBlogRequestDto, Member member , Long studyId) {
Study study = studyService.getStudy(studyId);
Member result = getMember(study, member);
StudyBlog studyBlog = new StudyBlog(studyBlogRequestDto, result, study);
StudyBlog entity = studyBlogRepository.save(studyBlog);
StudyBlogResponseDto studyBlogResponseDto = new StudyBlogResponseDto(entity);
return studyBlogResponseDto;
}
스터디 조회시 공유로그 Read
public StudyBlogListResponseDto getBlogs(Long studyId) {
Study study = studyService.getStudy(studyId);
List<StudyMember> studyMembers = study.getStudyMembers();
List<StudyBlogMemberResponseDto> studyBlogMemberResponseDtos = new ArrayList<>();
for (StudyMember studyMember : studyMembers) {
String uid = studyMember.getUid();
String blogUrl = studyMember.getMember().getBlogUrl();
String githubUrl = studyMember.getMember().getGithubUrl();
List<String> techStack = studyMember.getMember().getTechStack();
String role = studyMember.getRole();
StudyBlogMemberResponseDto studyBlogMemberResponseDto = new StudyBlogMemberResponseDto(uid, blogUrl, githubUrl, techStack, role);
studyBlogMemberResponseDtos.add(studyBlogMemberResponseDto);
}
StudyBlogListResponseDto studyBlogListResponseDto = new StudyBlogListResponseDto(studyBlogMemberResponseDtos, study.getStudyBlogs());
return studyBlogListResponseDto;
}
마이스터디 조회 기능 개발
- 내가 참여한 스터디 조회
// 마이스터디 - 내가 참여한 스터디 조회
public List<StudyProgressDto> myJoinStudies(Member member) {
String uid = member.getUid();
String role = "member";
String status = "진행";
List<StudyMember> studyMembers = studyMemberRepository.findAllByUidAndRoleAndStatus(uid, role, status);
role = "leader";
List<StudyMember> studyMembers2 = studyMemberRepository.findAllByUidAndRoleAndStatus(uid, role, status);
for (StudyMember studyMember : studyMembers2) {
studyMembers.add(studyMember);
}
List<StudyProgressDto> studyProgressDtosList = getInfo(studyMembers);
return studyProgressDtosList;
}
- 내가 완료한 스터디 조회
// 마이스터디 - 내가 완료한 스터디
public List<StudyCompletionDto> myStudiesCompletion(Member member) {
List<StudyCompletionDto> studyCompletionDtos = new ArrayList<>();
String role = "leader";
String uid = member.getUid();
String status = "완료";
List<StudyMember> studyMembers = studyMemberRepository.findAllByUidAndRoleAndStatus(uid, role, status);
role = "member";
List<StudyMember> studyMemberList = studyMemberRepository.findAllByUidAndRoleAndStatus(uid, role, status);
for (StudyMember studyMember : studyMemberList) {
studyMembers.add(studyMember);
}
List<StudyProgressDto> studyProgressDtos = getInfo(studyMembers);
for (StudyProgressDto studyProgressDto : studyProgressDtos) {
Long studyId = studyProgressDto.getStudyId();
Study study = studyRepository.findById(studyId).orElseThrow(() -> {
throw new StudyNotFoundException();
});
Boolean likeStatus = studyProgressDto.getLikeStatus();
StudyCompletionDto studyCompletionDto = new StudyCompletionDto(study, likeStatus);
studyCompletionDtos.add(studyCompletionDto);
}
return studyCompletionDtos;
}
- 마이스터디 - 내가 개설한 스터디 조회
// 마이스터디 - 내가 개설한 스터디 조회
public List<StudyCreationDto> mystudies(Member member) {
List<StudyCreationDto> studyCreationDtoList = new ArrayList<>();
String role = "leader";
// role과 member의 uid , status 사용하여 검색
String uid = member.getUid();
List<StudyMember> studyMembers = studyMemberRepository.findAllByUidAndRoleAndStatus(uid, role, "진행");
List<StudyMember> studyMembers2 = studyMemberRepository.findAllByUidAndRoleAndStatus(uid, role, "완료");
for (StudyMember studyMember : studyMembers2) {
studyMembers.add(studyMember);
}
List<StudyProgressDto> studyProgressDtos = getInfo(studyMembers);
for (StudyProgressDto studyProgressDto : studyProgressDtos) {
Long studyId = studyProgressDto.getStudyId();
Study study = studyRepository.findById(studyId).orElseThrow(() -> {
throw new StudyNotFoundException();
});
Boolean likeStatus = studyProgressDto.getLikeStatus();
StudyCreationDto studyCreationDto = new StudyCreationDto(study, likeStatus);
studyCreationDtoList.add(studyCreationDto);
}
return studyCreationDtoList;
}
- 내가 관심등록한 스터디 조회
// 관심스터디 목록 조회
public List<StudyLikeStatus> getMyStudysLikes(Member member) {
// likeStatus가 true이고 // memberUid가 uid를 사용하여 조회
Boolean likeStatus = true;
List<StudyLike> studyLikes = studyLikeRepository.findAllByLikeStatusAndUid(likeStatus, member.getUid());
List<StudyLikeStatus> studyLikeStatus = new ArrayList<>();
for (StudyLike studyLike : studyLikes) {
String uid = studyLike.getMember().getUid();
Study study = studyLike.getStudy();
Boolean status = studyLike.getLikeStatus();
StudyLikeStatus result = new StudyLikeStatus(study, status, uid);
studyLikeStatus.add(result);
}
return studyLikeStatus;
}
스터디 관심 등록 기능 개발
// 스터디 관심 등록
public StudyLikeResponseDto LikeMyStudy(Member member, Long studyId , StudyLikeRequestDto studyLikeRequestDto) {
Study study = studyService.getStudy(studyId);
StudyLike studyLike = new StudyLike(member, study, studyLikeRequestDto.isLikeStatus());
for (int i = 0; i < study.getStudyLikes().size(); i++) {
if (study.getStudyId() == study.getStudyLikes().get(i).getStudy().getStudyId() && member.getUid().equals(study.getStudyLikes().get(i).getMember().getUid())) {
throw new StudyLikeException();
}
}
StudyLike entity = studyLikeRepository.save(studyLike);
StudyLikeResponseDto studyLikeResponseDto = new StudyLikeResponseDto(entity.getId(),member.getUid(), study.getStudyId(), entity.getLikeStatus());
return studyLikeResponseDto;
}
'팀프로젝트' 카테고리의 다른 글
[카우치코딩] 팀프로젝트 5주차 회고 (0) | 2022.07.05 |
---|---|
[카우치코딩] 팀프로젝트 4주차 회고 (0) | 2022.07.05 |
[카우치코딩] 팀프로젝트 3주차 회고 (0) | 2022.07.05 |
[카우치코딩] 팀프로젝트 2주차 회고 (0) | 2022.07.05 |
[카우치코딩] 팀프로젝트 1주차 회고 (0) | 2022.07.05 |