diff --git a/src/main/java/org/websoso/WSSServer/controller/FeedController.java b/src/main/java/org/websoso/WSSServer/controller/FeedController.java index 94b5fe4a..943ef316 100644 --- a/src/main/java/org/websoso/WSSServer/controller/FeedController.java +++ b/src/main/java/org/websoso/WSSServer/controller/FeedController.java @@ -28,11 +28,12 @@ import org.websoso.WSSServer.dto.comment.CommentUpdateRequest; import org.websoso.WSSServer.dto.comment.CommentsGetResponse; import org.websoso.WSSServer.dto.feed.FeedCreateRequest; -import org.websoso.WSSServer.dto.feed.FeedGetResponse; -import org.websoso.WSSServer.dto.feed.FeedImageCreateRequest; +import org.websoso.WSSServer.dto.feed.FeedCreateResponse; import org.websoso.WSSServer.dto.feed.FeedImageUpdateRequest; +import org.websoso.WSSServer.dto.feed.FeedGetResponse; import org.websoso.WSSServer.dto.feed.FeedUpdateRequest; import org.websoso.WSSServer.dto.feed.FeedsGetResponse; +import org.websoso.WSSServer.dto.feed.FeedImageCreateRequest; import org.websoso.WSSServer.dto.feed.InterestFeedsGetResponse; import org.websoso.WSSServer.dto.popularFeed.PopularFeedsGetResponse; import org.websoso.WSSServer.service.FeedService; @@ -48,13 +49,12 @@ public class FeedController { @PostMapping @PreAuthorize("isAuthenticated()") - public ResponseEntity createFeed(@AuthenticationPrincipal User user, - @Valid @RequestPart("feed") FeedCreateRequest request, - @Valid @ModelAttribute FeedImageCreateRequest requestImage) { - feedService.createFeed(user, request, requestImage); + public ResponseEntity createFeed(@AuthenticationPrincipal User user, + @Valid @RequestPart("feed") FeedCreateRequest request, + @Valid @ModelAttribute FeedImageCreateRequest requestImage) { return ResponseEntity .status(CREATED) - .build(); + .body(feedService.createFeed(user, request, requestImage)); } @GetMapping("/{feedId}") @@ -79,14 +79,13 @@ public ResponseEntity getFeeds(@AuthenticationPrincipal User u @PutMapping("/{feedId}") @PreAuthorize("isAuthenticated() and @authorizationService.validate(#feedId, #user, T(org.websoso.WSSServer.domain.Feed))") - public ResponseEntity updateFeed(@AuthenticationPrincipal User user, + public ResponseEntity updateFeed(@AuthenticationPrincipal User user, @PathVariable("feedId") Long feedId, @Valid @RequestPart("feed") FeedUpdateRequest request, @Valid @ModelAttribute FeedImageUpdateRequest requestImage) { - feedService.updateFeed(feedId, request, requestImage); return ResponseEntity - .status(NO_CONTENT) - .build(); + .status(OK) + .body(feedService.updateFeed(feedId, request, requestImage)); } @DeleteMapping("/{feedId}") diff --git a/src/main/java/org/websoso/WSSServer/dto/feed/FeedCreateResponse.java b/src/main/java/org/websoso/WSSServer/dto/feed/FeedCreateResponse.java new file mode 100644 index 00000000..23b83396 --- /dev/null +++ b/src/main/java/org/websoso/WSSServer/dto/feed/FeedCreateResponse.java @@ -0,0 +1,21 @@ +package org.websoso.WSSServer.dto.feed; + +import org.websoso.WSSServer.domain.FeedImage; + +import java.util.Comparator; +import java.util.List; + +public record FeedCreateResponse( + Integer imagesCount, + List imageUrls +) { + public static FeedCreateResponse of(List images) { + return new FeedCreateResponse( + images.size(), + images.stream() + .sorted(Comparator.comparing(FeedImage::getSequence)) + .map(FeedImage::getUrl) + .toList() + ); + } +} \ No newline at end of file diff --git a/src/main/java/org/websoso/WSSServer/service/FeedService.java b/src/main/java/org/websoso/WSSServer/service/FeedService.java index 833ddc03..1df5c681 100644 --- a/src/main/java/org/websoso/WSSServer/service/FeedService.java +++ b/src/main/java/org/websoso/WSSServer/service/FeedService.java @@ -40,18 +40,7 @@ import org.websoso.WSSServer.dto.comment.CommentCreateRequest; import org.websoso.WSSServer.dto.comment.CommentUpdateRequest; import org.websoso.WSSServer.dto.comment.CommentsGetResponse; -import org.websoso.WSSServer.dto.feed.FeedCreateRequest; -import org.websoso.WSSServer.dto.feed.FeedGetResponse; -import org.websoso.WSSServer.dto.feed.FeedImageCreateRequest; -import org.websoso.WSSServer.dto.feed.FeedImageDeleteEvent; -import org.websoso.WSSServer.dto.feed.FeedImageUpdateRequest; -import org.websoso.WSSServer.dto.feed.FeedInfo; -import org.websoso.WSSServer.dto.feed.FeedUpdateRequest; -import org.websoso.WSSServer.dto.feed.FeedsGetResponse; -import org.websoso.WSSServer.dto.feed.InterestFeedGetResponse; -import org.websoso.WSSServer.dto.feed.InterestFeedsGetResponse; -import org.websoso.WSSServer.dto.feed.UserFeedGetResponse; -import org.websoso.WSSServer.dto.feed.UserFeedsGetResponse; +import org.websoso.WSSServer.dto.feed.*; import org.websoso.WSSServer.dto.novel.NovelGetResponseFeedTab; import org.websoso.WSSServer.dto.user.UserBasicInfo; import org.websoso.WSSServer.exception.exception.CustomFeedException; @@ -104,7 +93,7 @@ public class FeedService { private final CommentRepository commentRepository; private final ReportedCommentRepository reportedCommentRepository; - public void createFeed(User user, FeedCreateRequest request, FeedImageCreateRequest imagesRequest) { + public FeedCreateResponse createFeed(User user, FeedCreateRequest request, FeedImageCreateRequest imagesRequest) { List feedImages = processFeedImages(imagesRequest.images()); Optional.ofNullable(request.novelId()) @@ -118,9 +107,11 @@ public void createFeed(User user, FeedCreateRequest request, FeedImageCreateRequ feedImages); feedRepository.save(feed); feedCategoryService.createFeedCategory(feed, request.relevantCategories()); + + return FeedCreateResponse.of(feedImages); } - public void updateFeed(Long feedId, FeedUpdateRequest request, FeedImageUpdateRequest imagesRequest) { + public FeedCreateResponse updateFeed(Long feedId, FeedUpdateRequest request, FeedImageUpdateRequest imagesRequest) { Feed feed = getFeedOrException(feedId); List oldImages = new ArrayList<>(feed.getImages()); @@ -143,6 +134,8 @@ public void updateFeed(Long feedId, FeedUpdateRequest request, FeedImageUpdateRe .map(FeedImage::getUrl) .toList(); eventPublisher.publishEvent(new FeedImageDeleteEvent(oldImageUrls)); + + return FeedCreateResponse.of(feedImages); } private List processFeedImages(List images) {