Skip to content
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 @@ -7,6 +7,7 @@
import com.hotsix.server.project.dto.ProjectRequestDto;
import com.hotsix.server.project.dto.ProjectResponseDto;
import com.hotsix.server.project.dto.ProjectStatusUpdateRequestDto;
import com.hotsix.server.project.dto.ProjectSummaryResponse;
import com.hotsix.server.project.service.ProjectService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
Expand Down Expand Up @@ -125,4 +126,12 @@ public CommonResponse<Long> getProjectCreatorId(
Long creatorId = projectService.getProjectCreatorId(projectId);
return CommonResponse.success(creatorId);
}

@GetMapping("/me")
@Operation(summary = "내 프로젝트 목록 조회", description = "로그인한 사용자의 모든 프로젝트를 상태별로 반환합니다.")
public CommonResponse<List<ProjectSummaryResponse>> getMyProjects() {
List<ProjectSummaryResponse> myProjects = projectService.getProjectsByUser();
return CommonResponse.success(myProjects);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.hotsix.server.project.dto;

import com.hotsix.server.project.entity.Project;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;

@Getter
@Builder
@AllArgsConstructor
public class ProjectSummaryResponse {
private Long projectId;
private String title;
private String status;
private String deadline;

public static ProjectSummaryResponse from(Project project) {
return ProjectSummaryResponse.builder()
.projectId(project.getProjectId())
.title(project.getTitle())
.status(project.getStatus().name())
.deadline(project.getDeadline().toString())
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,7 @@ public interface ProjectRepository extends JpaRepository<Project, Long> {
@Query("SELECT p FROM Project p " +
"WHERE (p.initiator = :user OR p.participant = :user) AND p.status = :status")
List<Project> findByInitiatorOrParticipantAndStatus(@Param("user") User user, @Param("status") Status status);

List<Project> findByInitiatorOrParticipant(User initiator, User participant);
}

Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,17 @@


import com.hotsix.server.aws.manager.AmazonS3Manager;
import com.hotsix.server.project.dto.ProjectStatusUpdateRequestDto;
import com.hotsix.server.global.Rq.Rq;
import com.hotsix.server.project.dto.*;
import com.hotsix.server.project.entity.Category;
import com.hotsix.server.project.entity.ProjectImage;
import com.hotsix.server.project.exception.ProjectErrorCase;
import com.hotsix.server.proposal.dto.ProposalFileResponseDto;
import jakarta.persistence.EntityNotFoundException;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.hotsix.server.project.dto.ProjectFileResponseDto;

import com.hotsix.server.global.exception.ApplicationException;
import com.hotsix.server.project.dto.ProjectRequestDto;
import com.hotsix.server.project.dto.ProjectResponseDto;
import com.hotsix.server.project.dto.ProjectStatusUpdateRequestDto;
import com.hotsix.server.project.entity.Project;
import com.hotsix.server.project.entity.Status;
Expand All @@ -35,6 +33,7 @@

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

@Service
@RequiredArgsConstructor
Expand All @@ -46,6 +45,7 @@ public class ProjectService {
private final UserRepository userRepository;
private final AmazonS3Manager amazonS3Manager;
private final BookmarkService bookmarkService;
private final Rq rq;

@Transactional
public ProjectResponseDto registerProject(Long currentUserId, ProjectRequestDto dto, List<MultipartFile> images) {
Expand Down Expand Up @@ -293,4 +293,12 @@ public Long getProjectCreatorId(Long projectId) {
return project.getInitiator().getUserId();
}

public List<ProjectSummaryResponse> getProjectsByUser() {
User actor = rq.getUser();
List<Project> projects = projectRepository.findByInitiatorOrParticipant(actor, actor);

return projects.stream()
.map(ProjectSummaryResponse::from)
.collect(Collectors.toList());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -162,5 +162,4 @@ public CommonResponse<String> uploadProfileImage(@RequestParam("file") Multipart
imageUrl
);
}

}