Skip to content

Commit 4e8cfeb

Browse files
authored
feat: 단체 정보에 사용자 북마크 여부 함께 반환 (#335)
* feat: CompanyType에 Education 추가 * feat: Organization 반환 시 isBookmarked 추가
1 parent ecc0fba commit 4e8cfeb

File tree

5 files changed

+23
-8
lines changed

5 files changed

+23
-8
lines changed

api/src/main/java/com/sponus/sponusbe/domain/bookmark/service/BookmarkService.java

-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import com.sponus.coredomain.domain.bookmark.Bookmark;
77
import com.sponus.coredomain.domain.bookmark.repository.BookmarkRepository;
88
import com.sponus.coredomain.domain.organization.Organization;
9-
import com.sponus.coredomain.domain.organization.repository.OrganizationLinkRepository;
109
import com.sponus.coredomain.domain.organization.repository.OrganizationRepository;
1110
import com.sponus.sponusbe.domain.bookmark.dto.request.BookmarkToggleRequest;
1211
import com.sponus.sponusbe.domain.bookmark.dto.response.BookmarkToggleResponse;
@@ -45,5 +44,4 @@ public BookmarkToggleResponse bookmarkToggle(Organization organization, Bookmark
4544
});
4645
}
4746

48-
4947
}

api/src/main/java/com/sponus/sponusbe/domain/organization/company/dto/OrganizationGetResponse.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,11 @@ public record OrganizationGetResponse(
1515
int bookmarkCount,
1616
int viewCount,
1717
OrganizationType organizationType,
18-
String subType
18+
String subType,
19+
boolean isBookmarked
1920
) {
20-
public static OrganizationGetResponse of(Organization organization) {
21+
22+
public static OrganizationGetResponse of(Organization organization, boolean isBookmarked) {
2123
return OrganizationGetResponse.builder()
2224
.id(organization.getId())
2325
.name(organization.getName())
@@ -28,6 +30,7 @@ public static OrganizationGetResponse of(Organization organization) {
2830
.viewCount(organization.getViewCount())
2931
.organizationType(organization.getOrganizationType())
3032
.subType(organization.getSubType())
33+
.isBookmarked(isBookmarked)
3134
.build();
3235
}
3336
}

api/src/main/java/com/sponus/sponusbe/domain/organization/controller/OrganizationController.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,11 @@ public ApiResponse<Long> join(@RequestBody OrganizationCreateRequest request) {
4545

4646
@GetMapping
4747
public ApiResponse<PageResponse<OrganizationGetResponse>> getOrganizations(
48+
@AuthOrganization Organization authOrganization,
4849
@ModelAttribute @Valid PageCondition pageCondition,
4950
@ModelAttribute @Valid OrganizationType organizationType) {
50-
return ApiResponse.onSuccess(organizationService.getOrganizations(pageCondition, organizationType));
51+
return ApiResponse.onSuccess(
52+
organizationService.getOrganizations(authOrganization, pageCondition, organizationType));
5153
}
5254

5355
@PostMapping(value = "/{organizationId}/profileImage", consumes = "multipart/form-data")

api/src/main/java/com/sponus/sponusbe/domain/organization/service/OrganizationService.java

+14-2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import java.util.Collections;
55
import java.util.List;
66
import java.util.Set;
7+
import java.util.stream.Collectors;
78

89
import org.springframework.data.domain.PageRequest;
910
import org.springframework.data.domain.Pageable;
@@ -13,6 +14,7 @@
1314
import org.springframework.transaction.annotation.Transactional;
1415
import org.springframework.web.multipart.MultipartFile;
1516

17+
import com.sponus.coredomain.domain.bookmark.repository.BookmarkRepository;
1618
import com.sponus.coredomain.domain.organization.Club;
1719
import com.sponus.coredomain.domain.organization.Company;
1820
import com.sponus.coredomain.domain.organization.Organization;
@@ -40,6 +42,7 @@
4042
@RequiredArgsConstructor
4143
public class OrganizationService {
4244
private final OrganizationRepository organizationRepository;
45+
private final BookmarkRepository bookmarkRepository;
4346
private final S3Service s3Service;
4447
private final PasswordEncoder passwordEncoder;
4548
private final SearchHistoryRepository searchHistoryRepository;
@@ -75,12 +78,21 @@ private Organization findOrganizationById(Long organizationId) {
7578
}
7679

7780
public PageResponse<OrganizationGetResponse> getOrganizations(
81+
Organization authOrganization,
7882
PageCondition pageCondition,
7983
OrganizationType organizationType) {
84+
// TODO: FETCH JOIN으로 변경
85+
Set<Long> bookmarkedOrganizationIds = bookmarkRepository.findByOrganization(authOrganization).stream()
86+
.map((bookmark) -> bookmark.getTarget().getId())
87+
.collect(Collectors.toSet());
8088
Pageable pageable = PageRequest.of(pageCondition.getPage() - 1, pageCondition.getSize());
8189
List<OrganizationGetResponse> organizations = organizationRepository.findOrganizations(
82-
organizationType, pageable).stream()
83-
.map(OrganizationGetResponse::of).toList();
90+
organizationType, pageable)
91+
.stream()
92+
.map(organization ->
93+
OrganizationGetResponse.of(organization, bookmarkedOrganizationIds.contains(organization.getId())))
94+
.toList();
95+
8496
return PageResponse.of(
8597
PageableExecutionUtils.getPage(organizations, pageable,
8698
() -> organizationRepository.countByOrganizationType(organizationType)));
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
package com.sponus.coredomain.domain.organization.enums;
22

33
public enum CompanyType {
4-
NONE, FOOD, HEALTH, LIFESTYLE, BEAUTY, ETC
4+
NONE, FOOD, HEALTH, LIFESTYLE, BEAUTY, EDUCATION, ETC
55
}

0 commit comments

Comments
 (0)