diff --git a/src/main/java/clap/server/adapter/inbound/web/admin/FindDepartmentController.java b/src/main/java/clap/server/adapter/inbound/web/admin/FindDepartmentController.java new file mode 100644 index 00000000..cf6b6fab --- /dev/null +++ b/src/main/java/clap/server/adapter/inbound/web/admin/FindDepartmentController.java @@ -0,0 +1,32 @@ +package clap.server.adapter.inbound.web.admin; + +import clap.server.adapter.inbound.web.dto.admin.response.FindAllDepartmentsResponse; +import clap.server.application.mapper.DepartmentResponseMapper; +import clap.server.application.port.inbound.admin.FindAllDepartmentsUsecase; +import clap.server.common.annotation.architecture.WebAdapter; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.security.access.annotation.Secured; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +import java.util.List; + +@Tag(name = "05. Admin") +@WebAdapter +@RequiredArgsConstructor +@RequestMapping("/api/managements") +public class FindDepartmentController { + private final FindAllDepartmentsUsecase findAllDepartmentsUsecase; + + @Operation(summary = "๋ถ€์„œ ์กฐํšŒ API") + @Secured("ROLE_ADMIN") + @GetMapping("/departments") + public List findAllDepartments() { + return findAllDepartmentsUsecase.findAllDepartments() + .stream() + .map(DepartmentResponseMapper::toFindAllDepartmentsResponse) + .toList(); + } +} diff --git a/src/main/java/clap/server/adapter/inbound/web/dto/admin/response/FindAllDepartmentsResponse.java b/src/main/java/clap/server/adapter/inbound/web/dto/admin/response/FindAllDepartmentsResponse.java new file mode 100644 index 00000000..c9afe042 --- /dev/null +++ b/src/main/java/clap/server/adapter/inbound/web/dto/admin/response/FindAllDepartmentsResponse.java @@ -0,0 +1,6 @@ +package clap.server.adapter.inbound.web.dto.admin.response; + +public record FindAllDepartmentsResponse( + Long departmentId, + String name) { +} diff --git a/src/main/java/clap/server/application/mapper/DepartmentResponseMapper.java b/src/main/java/clap/server/application/mapper/DepartmentResponseMapper.java new file mode 100644 index 00000000..d52a0a60 --- /dev/null +++ b/src/main/java/clap/server/application/mapper/DepartmentResponseMapper.java @@ -0,0 +1,10 @@ +package clap.server.application.mapper; + +import clap.server.adapter.inbound.web.dto.admin.response.FindAllDepartmentsResponse; +import clap.server.domain.model.member.Department; + +public class DepartmentResponseMapper { + public static FindAllDepartmentsResponse toFindAllDepartmentsResponse(Department department) { + return new FindAllDepartmentsResponse(department.getDepartmentId(), department.getName()); + } +} diff --git a/src/main/java/clap/server/application/port/inbound/admin/FindAllDepartmentsUsecase.java b/src/main/java/clap/server/application/port/inbound/admin/FindAllDepartmentsUsecase.java new file mode 100644 index 00000000..f425c8d6 --- /dev/null +++ b/src/main/java/clap/server/application/port/inbound/admin/FindAllDepartmentsUsecase.java @@ -0,0 +1,9 @@ +package clap.server.application.port.inbound.admin; + +import clap.server.domain.model.member.Department; + +import java.util.List; + +public interface FindAllDepartmentsUsecase { + List findAllDepartments(); +} diff --git a/src/main/java/clap/server/application/service/admin/FindAllDepartmentsService.java b/src/main/java/clap/server/application/service/admin/FindAllDepartmentsService.java new file mode 100644 index 00000000..b30faba4 --- /dev/null +++ b/src/main/java/clap/server/application/service/admin/FindAllDepartmentsService.java @@ -0,0 +1,21 @@ +package clap.server.application.service.admin; + +import clap.server.application.port.inbound.admin.FindAllDepartmentsUsecase; +import clap.server.application.port.outbound.member.LoadDepartmentPort; +import clap.server.common.annotation.architecture.ApplicationService; +import clap.server.domain.model.member.Department; +import lombok.RequiredArgsConstructor; + +import java.util.List; + +@ApplicationService +@RequiredArgsConstructor +public class FindAllDepartmentsService implements FindAllDepartmentsUsecase { + private final LoadDepartmentPort loadDepartmentPort; + + @Override + public List findAllDepartments() { + return loadDepartmentPort.findActiveDepartments(); + } + +} diff --git a/src/main/java/clap/server/application/service/statistics/StatisticsIndexingService.java b/src/main/java/clap/server/application/service/statistics/StatisticsIndexingService.java index 67cdece3..50366739 100644 --- a/src/main/java/clap/server/application/service/statistics/StatisticsIndexingService.java +++ b/src/main/java/clap/server/application/service/statistics/StatisticsIndexingService.java @@ -15,7 +15,7 @@ public class StatisticsIndexingService { private final LoadTaskPort loadTaskPort; private final TaskDocumentPort taskDocumentPort; - @Scheduled(cron = "0 0 0 * * *") + @Scheduled(cron = "0 0 0 * * *") @Transactional public void IndexStatistics() { taskDocumentPort.saveStatistics(