diff --git a/jaksim/src/main/java/org/sopt/jaksim/category/dto/TaskMsetLinkResponse.java b/jaksim/src/main/java/org/sopt/jaksim/category/dto/TaskMsetLinkResponse.java new file mode 100644 index 0000000..1028e82 --- /dev/null +++ b/jaksim/src/main/java/org/sopt/jaksim/category/dto/TaskMsetLinkResponse.java @@ -0,0 +1,16 @@ +package org.sopt.jaksim.category.dto; + +import org.sopt.jaksim.mset.domain.Mset; +import org.sopt.jaksim.mset.domain.MsetDTO; +import org.sopt.jaksim.task.domain.Task; + +import java.util.List; + +public record TaskMsetLinkResponse( + Task task, + List msets +) { + public static TaskMsetLinkResponse of(Task task, List msets) { + return new TaskMsetLinkResponse(task, msets); + } +} diff --git a/jaksim/src/main/java/org/sopt/jaksim/category/facade/CategoryTaskFacade.java b/jaksim/src/main/java/org/sopt/jaksim/category/facade/CategoryTaskFacade.java index 413ffc9..7510a25 100644 --- a/jaksim/src/main/java/org/sopt/jaksim/category/facade/CategoryTaskFacade.java +++ b/jaksim/src/main/java/org/sopt/jaksim/category/facade/CategoryTaskFacade.java @@ -3,11 +3,12 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.sopt.jaksim.category.domain.Category; -import org.sopt.jaksim.category.dto.CategoryCheckResponse; -import org.sopt.jaksim.category.dto.CategoryTaskLink; -import org.sopt.jaksim.category.dto.FilteredResourceResponse; -import org.sopt.jaksim.category.dto.TaskWithTaskTimer; +import org.sopt.jaksim.category.dto.*; import org.sopt.jaksim.category.service.CategoryService; +import org.sopt.jaksim.mset.domain.CategoryMset; +import org.sopt.jaksim.mset.domain.Mset; +import org.sopt.jaksim.mset.domain.TaskMset; +import org.sopt.jaksim.mset.service.CategoryMsetService; import org.sopt.jaksim.task.domain.Task; import org.sopt.jaksim.task.domain.TaskTimer; import org.sopt.jaksim.task.service.TaskService; diff --git a/jaksim/src/main/java/org/sopt/jaksim/category/facade/TaskMsetFacade.java b/jaksim/src/main/java/org/sopt/jaksim/category/facade/TaskMsetFacade.java new file mode 100644 index 0000000..592d972 --- /dev/null +++ b/jaksim/src/main/java/org/sopt/jaksim/category/facade/TaskMsetFacade.java @@ -0,0 +1,42 @@ +package org.sopt.jaksim.category.facade; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.sopt.jaksim.category.domain.Category; +import org.sopt.jaksim.category.dto.CategoryMsetLinkResponse; +import org.sopt.jaksim.category.dto.TaskMsetLinkResponse; +import org.sopt.jaksim.category.service.CategoryService; +import org.sopt.jaksim.mset.domain.CategoryMset; +import org.sopt.jaksim.mset.domain.Mset; +import org.sopt.jaksim.mset.domain.MsetDTO; +import org.sopt.jaksim.mset.domain.TaskMset; +import org.sopt.jaksim.mset.service.CategoryMsetService; +import org.sopt.jaksim.mset.service.MsetService; +import org.sopt.jaksim.mset.service.TaskMsetService; +import org.sopt.jaksim.task.domain.Task; +import org.sopt.jaksim.task.service.TaskService; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +@Slf4j +@Service +@RequiredArgsConstructor +public class TaskMsetFacade { + private final TaskService taskService; + private final MsetService msetService; + private final TaskMsetService taskMsetService; + + public TaskMsetLinkResponse getFromOtherTask(Long taskId) { + Task task = taskService.getTaskById(taskId); + List taskMsetList = taskMsetService.getByTaskId(taskId); + List msets = taskMsetList.stream() // + .map(taskMset -> msetService.getMsetById(taskMset.getMsetId())) + .map(mset -> new MsetDTO(mset.getId(), mset.getName(), mset.getUrl())) + .collect(Collectors.toList()); + return TaskMsetLinkResponse.of(task, msets); + } + +} diff --git a/jaksim/src/main/java/org/sopt/jaksim/mset/api/MsetApiController.java b/jaksim/src/main/java/org/sopt/jaksim/mset/api/MsetApiController.java index 767821e..8b5a67e 100644 --- a/jaksim/src/main/java/org/sopt/jaksim/mset/api/MsetApiController.java +++ b/jaksim/src/main/java/org/sopt/jaksim/mset/api/MsetApiController.java @@ -5,7 +5,9 @@ import org.apache.coyote.Response; import org.sopt.jaksim.category.api.CategoryApi; import org.sopt.jaksim.category.dto.CategoryMsetLinkResponse; +import org.sopt.jaksim.category.dto.TaskMsetLinkResponse; import org.sopt.jaksim.category.facade.CategoryMsetFacade; +import org.sopt.jaksim.category.facade.TaskMsetFacade; import org.sopt.jaksim.global.common.ApiResponseUtil; import org.sopt.jaksim.global.common.BaseResponse; import org.sopt.jaksim.global.message.SuccessMessage; @@ -21,6 +23,7 @@ @RequestMapping("/api/v1") public class MsetApiController implements MsetApi { private final CategoryMsetFacade categoryMsetFacade; + private final TaskMsetFacade taskMsetFacade; @GetMapping("/mset/categories/{categoryId}") @Override @@ -28,4 +31,11 @@ public ResponseEntity> getFromOtherCategory(@PathVariable("categ CategoryMsetLinkResponse response = categoryMsetFacade.getFromOtherCategory(categoryId); return ApiResponseUtil.success(SuccessMessage.SUCCESS, response); } + + @GetMapping("/mset/tasks/{taskId}") + //@Override + public ResponseEntity> getFromOtherTask(@PathVariable("taskId") Long taskId) { + TaskMsetLinkResponse response = taskMsetFacade.getFromOtherTask(taskId); + return ApiResponseUtil.success(SuccessMessage.SUCCESS, response); + } } diff --git a/jaksim/src/main/java/org/sopt/jaksim/mset/domain/MsetDTO.java b/jaksim/src/main/java/org/sopt/jaksim/mset/domain/MsetDTO.java new file mode 100644 index 0000000..c9e7935 --- /dev/null +++ b/jaksim/src/main/java/org/sopt/jaksim/mset/domain/MsetDTO.java @@ -0,0 +1,17 @@ +package org.sopt.jaksim.mset.domain; + +import lombok.Getter; + +@Getter +public class MsetDTO { + private final Long id; + private final String name; + private final String url; + + public MsetDTO(Long id, String name, String url) { + this.id = id; + this.name = name; + this.url = url; + } +} + diff --git a/jaksim/src/main/java/org/sopt/jaksim/mset/repository/TaskMsetRepository.java b/jaksim/src/main/java/org/sopt/jaksim/mset/repository/TaskMsetRepository.java new file mode 100644 index 0000000..703b50f --- /dev/null +++ b/jaksim/src/main/java/org/sopt/jaksim/mset/repository/TaskMsetRepository.java @@ -0,0 +1,10 @@ +package org.sopt.jaksim.mset.repository; + +import org.sopt.jaksim.mset.domain.TaskMset; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +public interface TaskMsetRepository extends JpaRepository { + List findByTaskId(Long taskId); +} diff --git a/jaksim/src/main/java/org/sopt/jaksim/mset/service/TaskMsetService.java b/jaksim/src/main/java/org/sopt/jaksim/mset/service/TaskMsetService.java new file mode 100644 index 0000000..a7764d4 --- /dev/null +++ b/jaksim/src/main/java/org/sopt/jaksim/mset/service/TaskMsetService.java @@ -0,0 +1,21 @@ +package org.sopt.jaksim.mset.service; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.sopt.jaksim.mset.domain.CategoryMset; +import org.sopt.jaksim.mset.domain.TaskMset; +import org.sopt.jaksim.mset.repository.CategoryMsetRepository; +import org.sopt.jaksim.mset.repository.TaskMsetRepository; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Slf4j +@Service +@RequiredArgsConstructor +public class TaskMsetService { + private final TaskMsetRepository taskMsetRepository; + public List getByTaskId(Long taskId) { + return taskMsetRepository.findByTaskId(taskId); + } +} diff --git a/jaksim/src/main/java/org/sopt/jaksim/task/service/TaskService.java b/jaksim/src/main/java/org/sopt/jaksim/task/service/TaskService.java index 5af48f4..f4e0d5a 100644 --- a/jaksim/src/main/java/org/sopt/jaksim/task/service/TaskService.java +++ b/jaksim/src/main/java/org/sopt/jaksim/task/service/TaskService.java @@ -2,11 +2,14 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.sopt.jaksim.category.domain.Category; import org.sopt.jaksim.category.domain.CategoryTask; import org.sopt.jaksim.category.dto.TaskWithTaskTimer; import org.sopt.jaksim.category.repository.CategoryTaskRepository; import org.sopt.jaksim.global.exception.NotFoundException; import org.sopt.jaksim.global.message.ErrorMessage; +import org.sopt.jaksim.mset.repository.TaskMsetRepository; +import org.sopt.jaksim.mset.service.MsetService; import org.sopt.jaksim.task.domain.Task; import org.sopt.jaksim.task.dto.TaskCreateRequest; import org.sopt.jaksim.task.domain.TodoTask; @@ -24,6 +27,9 @@ public class TaskService { private final TaskRepository taskRepository; private final CategoryTaskRepository categoryTaskRepository; + private final TaskMsetRepository taskMsetRepository; + private final MsetService msetService; + private final TaskService taskService; public Task getTaskById(Long taskId) { return taskRepository.findById(taskId).orElseThrow( @@ -64,5 +70,4 @@ public List getTasksByTodoTask(List todoTaskList) { List taskIdList = todoTaskList.stream().map(TodoTask::getTaskId).collect(Collectors.toList()); return taskRepository.findAllById(taskIdList); } - } \ No newline at end of file