diff --git a/src/main/java/com/cookiee/cookieeserver/category/controller/CategoryUserBySocialLoginController.java b/src/main/java/com/cookiee/cookieeserver/category/controller/CategoryUserBySocialLoginController.java index 96d79eb..6ac9794 100644 --- a/src/main/java/com/cookiee/cookieeserver/category/controller/CategoryUserBySocialLoginController.java +++ b/src/main/java/com/cookiee/cookieeserver/category/controller/CategoryUserBySocialLoginController.java @@ -2,6 +2,7 @@ package com.cookiee.cookieeserver.category.controller; import com.cookiee.cookieeserver.category.domain.Category; +import com.cookiee.cookieeserver.category.dto.response.CategoryCollectionResponseDto; import com.cookiee.cookieeserver.login.jwt.JwtService; import com.cookiee.cookieeserver.global.dto.BaseResponseDto; import com.cookiee.cookieeserver.category.dto.request.CategoryCreateRequestDto; @@ -10,6 +11,7 @@ import com.cookiee.cookieeserver.event.dto.response.EventCategoryGetResponseDto; import com.cookiee.cookieeserver.category.service.CategoryUserBySocialLoginService; import com.cookiee.cookieeserver.user.domain.User; +import com.fasterxml.jackson.databind.ser.Serializers; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; @@ -85,6 +87,14 @@ public BaseResponseDto deleteCategoryUserBySocialLogin(@PathVariable Long use return BaseResponseDto.ofSuccess(DELETE_CATEGORY_SUCCESS); } + @GetMapping("collection/{userId}") + @Operation(summary="카테고리별 데이터 유무 조회") + public BaseResponseDto getCollectionBooleanBySocialLogin(@PathVariable Long userId){ + final User currentUser = jwtService.getAndValidateCurrentUser(userId); + return BaseResponseDto.ofSuccess(GET_COLLECTION_SUCCESS, categoryUserBySocialLoginService.getCollections(userId)); + + } + @GetMapping("/collection/{userId}/{categoryId}") @Operation(summary = "카테고리 모아보기") public BaseResponseDto getCollectionUserBySocialLogin(@PathVariable Long userId, diff --git a/src/main/java/com/cookiee/cookieeserver/category/dto/response/CategoryCollectionResponseDto.java b/src/main/java/com/cookiee/cookieeserver/category/dto/response/CategoryCollectionResponseDto.java new file mode 100644 index 0000000..c7b1705 --- /dev/null +++ b/src/main/java/com/cookiee/cookieeserver/category/dto/response/CategoryCollectionResponseDto.java @@ -0,0 +1,26 @@ +package com.cookiee.cookieeserver.category.dto.response; + +import com.cookiee.cookieeserver.category.domain.Category; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class CategoryCollectionResponseDto { + private Long categoryId; + private String categoryName; + private String categoryColor; + private Boolean collectionExist; + + @Builder + public CategoryCollectionResponseDto(CategoryResponseDto category, Boolean collectionExist) { + this.categoryId = category.getCategoryId(); + this.categoryName = category.getCategoryName(); + this.categoryColor = category.getCategoryColor(); + this.collectionExist = collectionExist; + } + +} diff --git a/src/main/java/com/cookiee/cookieeserver/category/repository/CategoryRepository.java b/src/main/java/com/cookiee/cookieeserver/category/repository/CategoryRepository.java index 33dc8eb..2efa9ed 100644 --- a/src/main/java/com/cookiee/cookieeserver/category/repository/CategoryRepository.java +++ b/src/main/java/com/cookiee/cookieeserver/category/repository/CategoryRepository.java @@ -33,4 +33,8 @@ public interface CategoryRepository extends JpaRepository { List findAllByCategoryIdList(List categoryIDs); void deleteCategoryByUserUserId(Long userId); + + @Query("SELECT CASE WHEN COUNT(e) > 0 THEN true ELSE false END " + + "FROM Event e JOIN e.eventCategories c WHERE c.category.categoryId = :categoryId") + boolean existsEventByCategoryId(@Param("categoryId") Long categoryId); } \ No newline at end of file diff --git a/src/main/java/com/cookiee/cookieeserver/category/service/CategoryUserBySocialLoginService.java b/src/main/java/com/cookiee/cookieeserver/category/service/CategoryUserBySocialLoginService.java index 60a8202..7054c3f 100644 --- a/src/main/java/com/cookiee/cookieeserver/category/service/CategoryUserBySocialLoginService.java +++ b/src/main/java/com/cookiee/cookieeserver/category/service/CategoryUserBySocialLoginService.java @@ -1,6 +1,7 @@ package com.cookiee.cookieeserver.category.service; import com.cookiee.cookieeserver.category.domain.Category; +import com.cookiee.cookieeserver.category.dto.response.CategoryCollectionResponseDto; import com.cookiee.cookieeserver.event.domain.Event; import com.cookiee.cookieeserver.global.domain.EventCategory; import com.cookiee.cookieeserver.global.exception.GeneralException; @@ -15,6 +16,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; @@ -31,7 +33,7 @@ public class CategoryUserBySocialLoginService { @Transactional public Category create(User user, CategoryCreateRequestDto requestDto) { // 이름만 중복 검사 - if(categoryRepository.existsByCategoryColorAndUserUserId(requestDto.getCategoryColor(), user.getUserId())){ + if(categoryRepository.existsByCategoryNameAndUserUserId(requestDto.getCategoryName(), user.getUserId())){ throw new GeneralException(CATEGORY_NAME_EXISTS); } @@ -115,4 +117,17 @@ public void delete(User user, Long categoryId) { throw new GeneralException(CATEGORY_NOT_FOUND); } } + + public List getCollections(Long userId) { + List categories = categoryRepository.findCategoriesByUserUserId(userId); + List categoryCollectionResponseDto = new ArrayList<>(); + for(CategoryResponseDto category : categories){ + Boolean collectionExist = categoryRepository.existsEventByCategoryId(category.getCategoryId()); + categoryCollectionResponseDto.add(CategoryCollectionResponseDto.builder() + .category(category) + .collectionExist(collectionExist) + .build()); + } + return categoryCollectionResponseDto; + } } diff --git a/src/main/java/com/cookiee/cookieeserver/event/service/EventUserBySocialLoginService.java b/src/main/java/com/cookiee/cookieeserver/event/service/EventUserBySocialLoginService.java index b5ed914..81a6e6f 100644 --- a/src/main/java/com/cookiee/cookieeserver/event/service/EventUserBySocialLoginService.java +++ b/src/main/java/com/cookiee/cookieeserver/event/service/EventUserBySocialLoginService.java @@ -97,16 +97,16 @@ public List getEventList(long userId, EventGetRequestDto event } @Transactional - public EventResponseDto updateEvent(long userId, long eventId, EventUpdateRequestDto eventUpdateRequestDto, List eventImanges) { + public EventResponseDto updateEvent(long userId, long eventId, EventUpdateRequestDto eventUpdateRequestDto, List eventImages) { Event updatedEvent = eventRepository.findByUserUserIdAndEventId(userId, eventId); - List storedFileNames = updatedEvent.getImageUrl(); - if(eventImanges != null) { + List storedFileNames = new ArrayList<>(); + if(eventImages != null) { List imageUrls = updatedEvent.getImageUrl(); for (String imageUrl : imageUrls){ String fileName = extractFileNameFromUrl(imageUrl); amazonS3Client.deleteObject(bucketName, fileName); } - for (MultipartFile image : eventImanges) { + for (MultipartFile image : eventImages) { String storedFileName = s3Uploader.saveFile(image, String.valueOf(userId), "event"); storedFileNames.add(storedFileName); }} @@ -165,11 +165,11 @@ public void deleteAllEvent(Long userId){ } } - public static String extractFileNameFromUrl(String EventImageUrl) { + public static String extractFileNameFromUrl(String eventImageUrl) { try { - URI uri = new URI(EventImageUrl); + URI uri = new URI(eventImageUrl); String path = uri.getPath(); - return path.substring(path.lastIndexOf('/') + 1); + return path; } catch (Exception e) { e.printStackTrace(); return null; @@ -177,4 +177,5 @@ public static String extractFileNameFromUrl(String EventImageUrl) { } + } \ No newline at end of file