Skip to content

Commit

Permalink
#82 fix : projectService 수정
Browse files Browse the repository at this point in the history
  • Loading branch information
rivkode committed Apr 25, 2024
1 parent dd81b1a commit f7b9f50
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import com.seoultech.synergybe.system.config.login.LoginUser;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
Expand All @@ -30,25 +31,23 @@ public class ProjectController {

@Operation(summary = "프로젝트 생성", description = "프로젝트가 생성됩니다.")
@PostMapping
public ResponseEntity<GetProjectResponse> createProject(@RequestBody CreateProjectRequest request, @LoginUser String userId) {
User user = userService.getUser(userId);
public ResponseEntity<String> createProject(@Valid @RequestBody CreateProjectRequest request, @LoginUser String userId) {

return ResponseEntity.status(HttpStatus.CREATED).body(projectService.createProject(user, request));
return ResponseEntity.status(HttpStatus.CREATED).body(projectService.createProject(userId, request));
}

@Operation(summary = "프로젝트 수정", description = "요청된 정보에 따라 프로젝트가 수정됩니다.")
@PutMapping
public ResponseEntity<GetProjectResponse> updateProject(@RequestBody UpdateProjectRequest request, @LoginUser String userId) {
User user = userService.getUser(userId);
public ResponseEntity<Void> updateProject(@Valid @RequestBody UpdateProjectRequest request, @LoginUser String userId) {

return ResponseEntity.status(HttpStatus.OK).body(projectService.updateProject(user, request));
return ResponseEntity.noContent().build();
}

@Operation(summary = "프로젝트 삭제", description = "프로젝트가 삭제됩니다.")
@DeleteMapping(value = "/{projectId}")
public ResponseEntity<GetProjectResponse> deleteProject(@PathVariable("projectId") String projectId, @LoginUser String userId) {

return ResponseEntity.status(HttpStatus.OK).body(projectService.deleteProject(projectId));
return ResponseEntity.status(HttpStatus.OK).body(projectService.deleteProject(userId, projectId));
}

@Operation(summary = "프로젝트 조회", description = "프로젝트를 단건 조회합니다.")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ public record GetProjectResponse(
String projectId,
String name,
String content,
ProjectField field,
ProjectStatus status,
String field,
String status,
LocalDateTime startAt,
LocalDateTime endAt,
String leaderId,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import com.seoultech.synergybe.domain.project.dto.request.CreateProjectRequest;
import com.seoultech.synergybe.domain.project.dto.request.UpdateProjectRequest;
import com.seoultech.synergybe.domain.project.dto.response.GetProjectResponse;
import com.seoultech.synergybe.domain.project.exception.ProjectBadRequestException;
import com.seoultech.synergybe.domain.project.exception.ProjectNotFoundException;
import com.seoultech.synergybe.domain.project.repository.ProjectRepository;
import com.seoultech.synergybe.domain.projectlike.service.ProjectLikeService;
Expand All @@ -33,10 +34,11 @@

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

@Slf4j
@Service
@Transactional
@Transactional(readOnly = true)
@RequiredArgsConstructor
public class ProjectService {
private final ProjectRepository projectRepository;
Expand All @@ -47,7 +49,9 @@ public class ProjectService {
private final IdGenerator idGenerator;
private final UserService userService;

public GetProjectResponse createProject(User user, CreateProjectRequest request) {
@Transactional
public String createProject(String userId, CreateProjectRequest request) {
User user = userService.getUser(userId);
String projectId = idGenerator.generateId(IdPrefix.PROJECT);
Point point = new Point(request.longitude(), request.latitude());
// try catch 문 수정 / 여기서 Point에 대한 예외처리 하지 않기
Expand All @@ -64,21 +68,24 @@ public GetProjectResponse createProject(User user, CreateProjectRequest request)
.build();
Project savedProject = projectRepository.save(project);
projectUserService.createProjectUser(savedProject, user);
return GetProjectResponse.builder().build();
return savedProject.getId();
} catch (Exception e) {
throw new IllegalArgumentException("point parse exception");
throw new ProjectBadRequestException("올바르지 않은 프로젝트 생성요청입니다.");
}
}

public GetProjectResponse updateProject(User user, UpdateProjectRequest request) {
@Transactional
public void updateProject(String userId, UpdateProjectRequest request) {
// todo
// 프로젝트 멤버 검증
Project project = this.findProjectById(request.projectId());
Project updatedProject = project.updateProject(request);
projectRepository.save(updatedProject);

return GetProjectResponse.builder().build();
}

public GetProjectResponse deleteProject(String projectId) {
public GetProjectResponse deleteProject(String userId, String projectId) {
// todo
// 프로젝트 리더 검증
Project project = this.findProjectById(projectId);


Expand All @@ -94,14 +101,23 @@ public Project findProjectById(String projectId) {
public GetProjectResponse getProject(String projectId) {
Project project = this.findProjectById(projectId);

return GetProjectResponse.builder().build();
return GetProjectResponse.builder()
.name(project.getName().getName())
.content(project.getContent().getContent())
.field(project.getField().name())
.location(project.getLocation().getLocation())
.startAt(project.getPeriod().getStartAt())
.endAt(project.getPeriod().getEndAt())
.leaderId(project.getLeaderId().getLeaderId())
.status(project.getStatus().getName())
.teamUserIds(project.getProjectUsers().stream().map(projectUser -> projectUser.getUser().getId()).collect(Collectors.toList()))
.build();
}

public ListResponse<GetProjectResponse> getProjectList(Long end) {
List<Project> projects = projectRepository.findAllByEndId(end);
ListResponse<GetProjectResponse> getProjectResponseListResponse = new ListResponse(projects);

return getProjectResponseListResponse;
return (ListResponse<GetProjectResponse>) new ListResponse(projects);
}

public Page<Project> searchAllProjects(String keyword, Pageable pageable) {
Expand Down

0 comments on commit f7b9f50

Please sign in to comment.