From bc92e25c79af42d79c33a604f16d2c2030e38c07 Mon Sep 17 00:00:00 2001 From: seheonnn Date: Wed, 7 Feb 2024 22:49:15 +0900 Subject: [PATCH] =?UTF-8?q?:sparkles:=20feat:=20=EC=A1=B0=EC=A7=81=20?= =?UTF-8?q?=EA=B2=80=EC=83=89=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- out/production/resources/data.sql | 6 ++-- .../controller/OrganizationController.java | 8 ++++++ .../dto/OrganizationSummaryResponse.java | 28 +++++++++++++++++++ .../repository/OrganizationRepository.java | 3 ++ .../service/OrganizationService.java | 9 ++++++ src/main/resources/data.sql | 6 ++-- 6 files changed, 56 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/sponus/sponusbe/domain/organization/dto/OrganizationSummaryResponse.java diff --git a/out/production/resources/data.sql b/out/production/resources/data.sql index c945ce9a..5898f826 100644 --- a/out/production/resources/data.sql +++ b/out/production/resources/data.sql @@ -11,7 +11,8 @@ INSERT INTO organization (organization_name, manager_available_day, manager_available_hour, manager_contact_preference, - organization_status) + organization_status, + organization_image_url) VALUES ('팀 스포너스', 'sponus@gmail.com', '$2a$10$tzrzG/BSFrrye7Kbm4qPYuP6jaQcj5TX5ER1.X/THqkudiSjtEmWW', @@ -25,7 +26,8 @@ VALUES ('팀 스포너스', '월-금', '09:00-18:00', 'EMAIL', - 'ACTIVE'); + 'ACTIVE', + 'https://sponus.s3.ap-northeast-2.amazonaws.com/images/56d5e787-8ac2-4162-be41-e55db05d8d8b.png'); INSERT INTO announcement (announcement_title, announcement_type, diff --git a/src/main/java/com/sponus/sponusbe/domain/organization/controller/OrganizationController.java b/src/main/java/com/sponus/sponusbe/domain/organization/controller/OrganizationController.java index a55460fa..8b35aad3 100644 --- a/src/main/java/com/sponus/sponusbe/domain/organization/controller/OrganizationController.java +++ b/src/main/java/com/sponus/sponusbe/domain/organization/controller/OrganizationController.java @@ -1,5 +1,7 @@ package com.sponus.sponusbe.domain.organization.controller; +import java.util.List; + import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PatchMapping; @@ -14,6 +16,7 @@ import com.sponus.sponusbe.domain.organization.dto.OrganizationDetailGetResponse; import com.sponus.sponusbe.domain.organization.dto.OrganizationJoinRequest; import com.sponus.sponusbe.domain.organization.dto.OrganizationJoinResponse; +import com.sponus.sponusbe.domain.organization.dto.OrganizationSummaryResponse; import com.sponus.sponusbe.domain.organization.dto.OrganizationUpdateRequest; import com.sponus.sponusbe.domain.organization.entity.Organization; import com.sponus.sponusbe.domain.organization.service.OrganizationQueryService; @@ -73,4 +76,9 @@ public ApiResponse getOrganization(@PathVariable public ApiResponse sendEmail(@RequestParam("email") String email) throws Exception { return ApiResponse.onSuccess(organizationService.sendEmail(email)); } + + @GetMapping + public ApiResponse> searchOrganization(@RequestParam("search") String keyword) { + return ApiResponse.onSuccess(organizationService.searchOrganization(keyword)); + } } diff --git a/src/main/java/com/sponus/sponusbe/domain/organization/dto/OrganizationSummaryResponse.java b/src/main/java/com/sponus/sponusbe/domain/organization/dto/OrganizationSummaryResponse.java new file mode 100644 index 00000000..94635540 --- /dev/null +++ b/src/main/java/com/sponus/sponusbe/domain/organization/dto/OrganizationSummaryResponse.java @@ -0,0 +1,28 @@ +package com.sponus.sponusbe.domain.organization.dto; + +import java.util.List; + +import com.sponus.sponusbe.domain.organization.entity.Organization; +import com.sponus.sponusbe.domain.tag.dto.TagGetResponse; + +import lombok.Builder; + +@Builder +public record OrganizationSummaryResponse( + Long id, + String name, + String image, + List tags +) { + public static OrganizationSummaryResponse from(Organization organization) { + List tags = TagGetResponse.getTagResponse(organization); + + return OrganizationSummaryResponse.builder() + .id(organization.getId()) + .name(organization.getName()) + .image(organization.getImageUrl()) + .tags(tags) + .build(); + } + +} diff --git a/src/main/java/com/sponus/sponusbe/domain/organization/repository/OrganizationRepository.java b/src/main/java/com/sponus/sponusbe/domain/organization/repository/OrganizationRepository.java index 546d32a9..1ce7db14 100644 --- a/src/main/java/com/sponus/sponusbe/domain/organization/repository/OrganizationRepository.java +++ b/src/main/java/com/sponus/sponusbe/domain/organization/repository/OrganizationRepository.java @@ -1,5 +1,6 @@ package com.sponus.sponusbe.domain.organization.repository; +import java.util.List; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; @@ -9,4 +10,6 @@ public interface OrganizationRepository extends JpaRepository { Optional findOrganizationByEmail(String email); + + List findByNameContains(String name); } diff --git a/src/main/java/com/sponus/sponusbe/domain/organization/service/OrganizationService.java b/src/main/java/com/sponus/sponusbe/domain/organization/service/OrganizationService.java index ec6b4f11..0e53d7cf 100644 --- a/src/main/java/com/sponus/sponusbe/domain/organization/service/OrganizationService.java +++ b/src/main/java/com/sponus/sponusbe/domain/organization/service/OrganizationService.java @@ -2,6 +2,7 @@ import static com.sponus.sponusbe.domain.organization.exception.OrganizationErrorCode.*; +import java.util.List; import java.util.Random; import org.springframework.mail.javamail.JavaMailSender; @@ -11,6 +12,7 @@ import com.sponus.sponusbe.domain.organization.dto.OrganizationJoinRequest; import com.sponus.sponusbe.domain.organization.dto.OrganizationJoinResponse; +import com.sponus.sponusbe.domain.organization.dto.OrganizationSummaryResponse; import com.sponus.sponusbe.domain.organization.dto.OrganizationUpdateRequest; import com.sponus.sponusbe.domain.organization.entity.Organization; import com.sponus.sponusbe.domain.organization.exception.OrganizationException; @@ -101,4 +103,11 @@ public static String createEmailCode() { } return code.toString(); } + + public List searchOrganization(String keyword) { + return organizationRepository.findByNameContains(keyword) + .stream() + .map(OrganizationSummaryResponse::from) + .toList(); + } } diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql index c945ce9a..5898f826 100644 --- a/src/main/resources/data.sql +++ b/src/main/resources/data.sql @@ -11,7 +11,8 @@ INSERT INTO organization (organization_name, manager_available_day, manager_available_hour, manager_contact_preference, - organization_status) + organization_status, + organization_image_url) VALUES ('팀 스포너스', 'sponus@gmail.com', '$2a$10$tzrzG/BSFrrye7Kbm4qPYuP6jaQcj5TX5ER1.X/THqkudiSjtEmWW', @@ -25,7 +26,8 @@ VALUES ('팀 스포너스', '월-금', '09:00-18:00', 'EMAIL', - 'ACTIVE'); + 'ACTIVE', + 'https://sponus.s3.ap-northeast-2.amazonaws.com/images/56d5e787-8ac2-4162-be41-e55db05d8d8b.png'); INSERT INTO announcement (announcement_title, announcement_type,