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

Feat/20 ๐Ÿ”จ ๋‚ด ํ”„๋กœ์ ํŠธ ์กฐํšŒ API - ๋‚ด๊ฐ€ ์ƒ์„ฑ, ์ฐธ์—ฌํ•œ ํ”„๋กœ์ ํŠธ ์กฐํšŒ๋˜๋„๋ก ์ˆ˜์ •, ์•Œ๋ฆผ ์ฝ์Œ์—ฌ๋ถ€ ์ถ”๊ฐ€ #96

Merged
merged 2 commits into from
Feb 4, 2024
1 change: 1 addition & 0 deletions src/main/java/cmc/peerna/converter/NoticeConverter.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ public static NoticeResponseDto.NoticeSimpleInfoDto toNoticeSimpleProfile(Notice
.noticeType(notice.getNoticeType())
.contents(notice.getContents())
.createdTime(notice.getCreatedAt())
.readFlag(notice.getReadFlag())
.build();
}

Expand Down
8 changes: 8 additions & 0 deletions src/main/java/cmc/peerna/domain/Notice.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import cmc.peerna.domain.enums.NoticeType;
import jakarta.persistence.*;
import lombok.*;
import org.hibernate.annotations.ColumnDefault;

@Entity
@Getter
Expand Down Expand Up @@ -33,4 +34,11 @@ public class Notice extends BaseEntity {

private String contents;

@ColumnDefault("'false'")
private String readFlag;

public void noticeRead(){
this.readFlag="true";
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public interface ProjectMemberRepository extends JpaRepository<ProjectMember, Lo
@Query("select p.project from ProjectMember p where p.member= :member order by p.createdAt desc ")
List<Project> qFindProjectByMemberOrderByCreatedAtDesc(@Param("member") Member member);

@Query("select p.project from ProjectMember p where p.member= :member ")
@Query("select p.project from ProjectMember p where p.member= :member order by p.project.startDate desc")
Page<Project> qFindProjectPageByMemberOrderByCreatedAtDesc(@Param("member") Member member, PageRequest pageRequest);

}
3 changes: 2 additions & 1 deletion src/main/java/cmc/peerna/service/ProjectService.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ public interface ProjectService {
ProjectResponseDto.ProjectDetailDto getProjectDetailInfo(Long projectId);

ProjectResponseDto.ProjectPageDto getAllProject(Integer page);
ProjectResponseDto.ProjectPageDto getMyProject(Member member, Integer page);
ProjectResponseDto.ProjectPageDto getProjectICreated(Member member, Integer page);
ProjectResponseDto.ProjectPageDto getProjectIJoined(Member member, Integer page);

String findProjectCreator(Long projectId);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.stream.Collectors;

@Service
@Slf4j
@RequiredArgsConstructor
Expand All @@ -43,12 +46,14 @@ public void createNotice(Member sender, Long receiverId, NoticeGroup noticeGroup
.noticeType(noticeType)
.noticeGroup(noticeGroup)
.targetId(targetId)
.contents(contents)
.contents(contents)
.readFlag("false")
.build()
);
}

@Override
@Transactional
public NoticeResponseDto.NoticePageDto getNoticePageByNoticeGroup(Member receiver, NoticeGroup noticeGroup, Integer page) {

PageRequest pageRequest = PageRequest.of(page, pageSize, Sort.by(Sort.Order.desc("createdAt")));
Expand All @@ -59,16 +64,25 @@ public NoticeResponseDto.NoticePageDto getNoticePageByNoticeGroup(Member receive
if (noticeByNoticeGroup.getTotalPages() <= page)
throw new MemberException(ResponseStatus.OVER_PAGE_INDEX_ERROR);

List<Notice> noticeList = noticeByNoticeGroup.getContent();
noticeList.stream()
.map(notice -> {
notice.noticeRead();
return null;
}).collect(Collectors.toList());

NoticeResponseDto.NoticePageDto noticePageDto = NoticeConverter.toNoticePageDto(noticeByNoticeGroup);
return noticePageDto;
}

@Override
@Transactional
public NoticeResponseDto.NoticePageDto getProjectNoticePage(Member receiver, Integer page) {
return getNoticePageByNoticeGroup(receiver, NoticeGroup.PROJECT, page);
}

@Override
@Transactional
public NoticeResponseDto.NoticePageDto getPeerTestNoticePage(Member receiver, Integer page) {
return getNoticePageByNoticeGroup(receiver, NoticeGroup.PEER_TEST, page);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,11 @@ public void newProject(Member member, ProjectRequestDto.ProjectCreateDto request
.githubLink(request.getGithubLink())
.build();
projectRepository.save(project);

projectMemberRepository.save(ProjectMember.builder()
.project(project)
.member(member)
.build());
}

@Override
Expand Down Expand Up @@ -79,7 +84,7 @@ public ProjectResponseDto.ProjectPageDto getAllProject(Integer page) {
}

@Override
public ProjectResponseDto.ProjectPageDto getMyProject(Member member, Integer page) {
public ProjectResponseDto.ProjectPageDto getProjectICreated(Member member, Integer page) {
PageRequest pageRequest = PageRequest.of(page, pageSize, Sort.by(Sort.Order.desc("startDate"), Sort.Order.asc("name")));

Page<Project> allProjectPage = projectRepository.findAllByCreator(member, pageRequest);
Expand All @@ -93,6 +98,25 @@ public ProjectResponseDto.ProjectPageDto getMyProject(Member member, Integer pag
return allProjectPageDto;
}

@Override
public ProjectResponseDto.ProjectPageDto getProjectIJoined(Member member, Integer page) {
PageRequest pageRequest = PageRequest.of(page, pageSize);

// Page<Project> allProjectPage = projectRepository.findAllByCreator(member, pageRequest);

Page<Project> allProjectPage = projectMemberRepository.qFindProjectPageByMemberOrderByCreatedAtDesc(member, pageRequest);


if (allProjectPage.getTotalElements() == 0L) {
throw new RootException(ResponseStatus.PROJECT_COUNT_ZERO);
}
if (allProjectPage.getTotalPages() <= page)
throw new MemberException(ResponseStatus.OVER_PAGE_INDEX_ERROR);

ProjectResponseDto.ProjectPageDto allProjectPageDto = ProjectConverter.toProjectPageDto(allProjectPage);
return allProjectPageDto;
}

@Override
public String findProjectCreator(Long projectId) {
Project project = projectRepository.findById(projectId).orElseThrow(() -> new ProjectException(ResponseStatus.PROJECT_NOT_FOUND));
Expand Down
16 changes: 8 additions & 8 deletions src/main/java/cmc/peerna/web/controller/ProjectController.java
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ else if (page < 1)
throw new MemberException(ResponseStatus.UNDER_PAGE_INDEX_ERROR);
page -= 1;

ProjectResponseDto.ProjectPageDto allProject = projectService.getMyProject(member, page);
ProjectResponseDto.ProjectPageDto allProject = projectService.getProjectICreated(member, page);
return ResponseDto.of(allProject);
}

Expand All @@ -162,17 +162,17 @@ else if (page < 1)
throw new MemberException(ResponseStatus.UNDER_PAGE_INDEX_ERROR);
page -= 1;

ProjectResponseDto.ProjectPageDto myProject = projectService.getMyProject(member, page);
ProjectResponseDto.ProjectPageDto projectIJoined = projectService.getProjectIJoined(member, page);

List<ProjectResponseDto.ProjectSimpleProfileDto> projectList;
projectList = myProject.getProjectList();
projectList = projectIJoined.getProjectList();

RootRequestDto.PageRequestDto pageRequestDto = RootRequestDto.PageRequestDto.builder()
.totalElements(myProject.getTotalElements())
.currentPageElements(myProject.getCurrentPageElements())
.totalPage(myProject.getTotalPage())
.isFirst(myProject.getIsFirst())
.isLast(myProject.getIsLast())
.totalElements(projectIJoined.getTotalElements())
.currentPageElements(projectIJoined.getCurrentPageElements())
.totalPage(projectIJoined.getTotalPage())
.isFirst(projectIJoined.getIsFirst())
.isLast(projectIJoined.getIsLast())
.build();

return PageResponseDto.of(projectList, pageRequestDto);
Expand Down
10 changes: 0 additions & 10 deletions src/main/java/cmc/peerna/web/dto/requestDto/TestRequestDto.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,5 @@ public static class peerTestRequestDto{
}


@Builder
@Getter
@AllArgsConstructor(access = AccessLevel.PROTECTED)
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public static class loginPeerTestRequestDto{
private List<Long> answerIdList;
private PeerGrade peerGrade;
private String feedback;
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ public static class NoticeSimpleInfoDto {
private String contents;
private LocalDateTime createdTime;

private String readFlag;

}

@Builder
Expand Down
Loading