Skip to content

Commit

Permalink
Feat: 카테고리별 데이터 유무 조회 API
Browse files Browse the repository at this point in the history
  • Loading branch information
dudrhy12 committed Dec 3, 2024
1 parent acba044 commit 33e65ed
Show file tree
Hide file tree
Showing 5 changed files with 64 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -85,6 +87,14 @@ public BaseResponseDto<?> deleteCategoryUserBySocialLogin(@PathVariable Long use
return BaseResponseDto.ofSuccess(DELETE_CATEGORY_SUCCESS);
}

@GetMapping("collection/{userId}")
@Operation(summary="카테고리별 데이터 유무 조회")
public BaseResponseDto<CategoryCollectionResponseDto> 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<EventCategoryGetResponseDto> getCollectionUserBySocialLogin(@PathVariable Long userId,
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,8 @@ public interface CategoryRepository extends JpaRepository<Category, Long> {
List<Category> findAllByCategoryIdList(List<Long> 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);
}
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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;
Expand All @@ -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);
}

Expand Down Expand Up @@ -115,4 +117,17 @@ public void delete(User user, Long categoryId) {
throw new GeneralException(CATEGORY_NOT_FOUND);
}
}

public List<CategoryCollectionResponseDto> getCollections(Long userId) {
List<CategoryResponseDto> categories = categoryRepository.findCategoriesByUserUserId(userId);
List<CategoryCollectionResponseDto> categoryCollectionResponseDto = new ArrayList<>();
for(CategoryResponseDto category : categories){
Boolean collectionExist = categoryRepository.existsEventByCategoryId(category.getCategoryId());
categoryCollectionResponseDto.add(CategoryCollectionResponseDto.builder()
.category(category)
.collectionExist(collectionExist)
.build());
}
return categoryCollectionResponseDto;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -97,16 +97,16 @@ public List<EventResponseDto> getEventList(long userId, EventGetRequestDto event
}

@Transactional
public EventResponseDto updateEvent(long userId, long eventId, EventUpdateRequestDto eventUpdateRequestDto, List<MultipartFile> eventImanges) {
public EventResponseDto updateEvent(long userId, long eventId, EventUpdateRequestDto eventUpdateRequestDto, List<MultipartFile> eventImages) {
Event updatedEvent = eventRepository.findByUserUserIdAndEventId(userId, eventId);
List<String> storedFileNames = updatedEvent.getImageUrl();
if(eventImanges != null) {
List<String> storedFileNames = new ArrayList<>();
if(eventImages != null) {
List<String> 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);
}}
Expand Down Expand Up @@ -165,16 +165,17 @@ 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;
}
}



}

0 comments on commit 33e65ed

Please sign in to comment.