Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
7c4e1c5
[REFACTOR] 피드 생성 로직을 Application으로 이전
GiJungPark Jun 9, 2026
adcea73
[REFACTOR] 피드 업데이트 로직을 Application으로 이전
GiJungPark Jun 9, 2026
c7dcc0a
[REFACTOR] 피드 수정시 피드 작성자가 본인인지 확인하는 로직을 Service로 이전
GiJungPark Jun 9, 2026
252c873
[CHORE] FeedFindApplication을 Feed 패키지 내부로 이전
GiJungPark Jun 9, 2026
6534217
[REFACTOR] 피드 삭제 로직 Application으로 분리 및 벌크 DELETE로 좋아요 및 댓글 내역을 삭제하도록 수정
GiJungPark Jun 9, 2026
e2f4c16
[REFACTOR] 피드 좋아요를 누른 경우 이벤트로 동작하도록 수정
GiJungPark Jun 11, 2026
86976c7
[FIX] /feeds/{feedId}/likes 에서 피드 접근 가능 여부를 필터에서 체크하는 부분 삭제
GiJungPark Jun 11, 2026
8fe4a82
[REFACTOR] 좋아요 취소 로직을 Application으로 이전
GiJungPark Jun 11, 2026
fef698d
[REFCATOR] Novel, User에 분산되어 있던 피드 로직을 피드 컨트롤러로 이전
GiJungPark Jun 11, 2026
333cc98
[REFACTOR] FeedService를 직접 호출하는 로직을 Application을 거치도록 변경
GiJungPark Jun 12, 2026
6ba21e1
[REFCATOR] 피드 단건 조회 로직 Application에서 Repository를 사용하지 않게 수정
GiJungPark Jun 13, 2026
a40b422
[REFACTOR] JPQL를 QueryDSL로 전환 및 의존성 분리
GiJungPark Jun 15, 2026
2a23b7f
[REFACTOR] 피드 조회시 발생하는 N+1 문제 Bulk SELECT로 수정
GiJungPark Jun 15, 2026
f8ffb28
[REFACTOR] 사용하지 않는 댓글 서비스 삭제
GiJungPark Jun 15, 2026
c6bc55b
[REFACTOR] Projection을 사용하는 쿼리 Repository 분리
GiJungPark Jun 15, 2026
5f0301c
[REFACTOR] 사용자 피드 조회시, JOIN 및 서브쿼리로 불러오도록 수정
GiJungPark Jun 15, 2026
dfb36e5
[REFACTOR] FeedFIndAPplication에서 사용하지 않는 Novel 로직 삭제
GiJungPark Jun 15, 2026
11bb69c
[REMOVE] 사용하지 않는 FeedService 삭제
GiJungPark Jun 15, 2026
6e2889a
[REMOVE] 사용하지 않는 ReportService 삭제
GiJungPark Jun 15, 2026
76ac14f
[FIX] PopularFeedService Transactional 누락건 수정
GiJungPark Jun 15, 2026
f59711a
[FIX] 비로그인한 사용자의 경우 사용자 프로필에서 비공개 게시글을 볼 수 있던 문제 수정
GiJungPark Jun 15, 2026
af8e0ce
[REFACTOR] 인기있는 피드 조회시, Novel까지 한번에 조회하도록 수정
GiJungPark Jun 15, 2026
782a376
[REFACTOR] 피드 전체 조회 / 인기글 조회 로직 분기 처리를 Service에서 Application으로 이전
GiJungPark Jun 15, 2026
d3487f5
[REFACTOR] 회원 탈퇴시, 피드의 UserId를 -1로 변경하는 로직을 이벤트로 리팩토링
GiJungPark Jun 15, 2026
bbf7100
[REFACTOR] Application에 작성된 이미지 업로드 로직을 Service로 이전 및 사용하지 않는 Reposit…
GiJungPark Jun 15, 2026
5a7001a
[RENAME] 사용하지 않는 관심글 로직 삭제
GiJungPark Jun 16, 2026
d9328ed
[REAFCTOR] List 반환에서 Slice 반환으로 변경 및 오래된 순 정렬시 피드 잘못 반환되던 쿼리 수정
GiJungPark Jun 16, 2026
613d313
[REFACTOR] Feed 로직을 Feed 패키지로 이전 및 getOwnedFeedOrException 인자 잘못 작성된 …
GiJungPark Jun 16, 2026
e4ec49a
[RENAME] 사용하지 않는 피드 카테고리 로직 삭제
GiJungPark Jun 17, 2026
ace3ce7
[REFACTOR] FeedFindApplication에서 사용하지 않는 서재 서비스 제거
GiJungPark Jun 17, 2026
851ff80
[REMOVE] feed 내에서 피드, 댓글, 신고 구분
GiJungPark Jun 17, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,21 @@
import static org.websoso.WSSServer.infrastructure.discord.DiscordWebhookMessageType.WITHDRAW;

import lombok.RequiredArgsConstructor;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.websoso.WSSServer.infrastructure.discord.DiscordMessageClient;
import org.websoso.WSSServer.infrastructure.discord.DiscordWebhookMessage;
import org.websoso.WSSServer.dto.user.WithdrawalRequest;
import org.websoso.WSSServer.feed.repository.CommentRepository;
import org.websoso.WSSServer.feed.repository.FeedRepository;
import org.websoso.WSSServer.feed.comment.repository.CommentRepository;
import org.websoso.WSSServer.feed.feed.repository.FeedRepository;
import org.websoso.WSSServer.oauth2.service.AppleService;
import org.websoso.WSSServer.oauth2.service.KakaoService;
import org.websoso.WSSServer.oauth2.repository.RefreshTokenRepository;
import org.websoso.WSSServer.notification.service.MessageFormatter;
import org.websoso.WSSServer.user.domain.User;
import org.websoso.WSSServer.user.domain.WithdrawalReason;
import org.websoso.WSSServer.user.event.WithdrawUserEvent;
import org.websoso.WSSServer.user.repository.UserRepository;
import org.websoso.WSSServer.user.repository.WithdrawalReasonRepository;

Expand All @@ -35,6 +37,8 @@ public class AccountApplication {
private final RefreshTokenRepository refreshTokenRepository;
private final KakaoService kakaoService;

private final ApplicationEventPublisher eventPublisher;

public void withdrawUser(User user, WithdrawalRequest withdrawalRequest) {
unlinkSocialAccount(user);

Expand All @@ -47,6 +51,10 @@ public void withdrawUser(User user, WithdrawalRequest withdrawalRequest) {
DiscordWebhookMessage.of(messageContent, WITHDRAW));

withdrawalReasonRepository.save(WithdrawalReason.create(withdrawalRequest.reason()));

eventPublisher.publishEvent(
WithdrawUserEvent.of(user.getUserId())
);
}

private void unlinkSocialAccount(User user) {
Expand All @@ -59,7 +67,6 @@ private void unlinkSocialAccount(User user) {

private void cleanupUserData(Long userId) {
refreshTokenRepository.deleteAll(refreshTokenRepository.findAllByUserId(userId));
feedRepository.updateUserToUnknown(userId);
commentRepository.updateUserToUnknown(userId);
userRepository.deleteById(userId);
}
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@
import org.websoso.WSSServer.dto.userNovel.TasteNovelGetResponse;
import org.websoso.WSSServer.dto.userNovel.TasteNovelsGetResponse;
import org.websoso.WSSServer.exception.exception.CustomGenreException;
import org.websoso.WSSServer.feed.domain.Feed;
import org.websoso.WSSServer.feed.repository.FeedRepository;
import org.websoso.WSSServer.feed.feed.domain.Feed;
import org.websoso.WSSServer.feed.feed.repository.FeedRepository;
import org.websoso.WSSServer.library.domain.Keyword;
import org.websoso.WSSServer.library.domain.UserNovel;
import org.websoso.WSSServer.library.service.LibraryService;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
package org.websoso.WSSServer.auth.validator;

import static org.websoso.WSSServer.exception.error.CustomCommentError.COMMENT_NOT_FOUND;
import static org.websoso.WSSServer.feed.comment.exception.CustomCommentError.COMMENT_NOT_FOUND;
import static org.websoso.WSSServer.exception.error.CustomUserError.INVALID_AUTHORIZED;

import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import org.websoso.WSSServer.feed.domain.Comment;
import org.websoso.WSSServer.feed.comment.domain.Comment;
import org.websoso.WSSServer.user.domain.User;
import org.websoso.WSSServer.exception.exception.CustomCommentException;
import org.websoso.WSSServer.feed.comment.exception.CustomCommentException;
import org.websoso.WSSServer.exception.exception.CustomUserException;
import org.websoso.WSSServer.feed.repository.CommentRepository;
import org.websoso.WSSServer.feed.comment.repository.CommentRepository;

@Component
@RequiredArgsConstructor
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
package org.websoso.WSSServer.auth.validator;

import static org.websoso.WSSServer.exception.error.CustomFeedError.BLOCKED_USER_ACCESS;
import static org.websoso.WSSServer.exception.error.CustomFeedError.FEED_NOT_FOUND;
import static org.websoso.WSSServer.exception.error.CustomFeedError.HIDDEN_FEED_ACCESS;
import static org.websoso.WSSServer.feed.feed.exception.CustomFeedError.BLOCKED_USER_ACCESS;
import static org.websoso.WSSServer.feed.feed.exception.CustomFeedError.FEED_NOT_FOUND;
import static org.websoso.WSSServer.feed.feed.exception.CustomFeedError.HIDDEN_FEED_ACCESS;

import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import org.websoso.WSSServer.feed.domain.Feed;
import org.websoso.WSSServer.feed.feed.domain.Feed;
import org.websoso.WSSServer.user.domain.User;
import org.websoso.WSSServer.exception.exception.CustomFeedException;
import org.websoso.WSSServer.feed.repository.FeedRepository;
import org.websoso.WSSServer.feed.feed.exception.CustomFeedException;
import org.websoso.WSSServer.feed.feed.repository.FeedRepository;
import org.websoso.WSSServer.user.service.BlockService;

@Component
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
package org.websoso.WSSServer.auth.validator;

import static org.websoso.WSSServer.exception.error.CustomFeedError.FEED_NOT_FOUND;
import static org.websoso.WSSServer.feed.feed.exception.CustomFeedError.FEED_NOT_FOUND;
import static org.websoso.WSSServer.exception.error.CustomUserError.INVALID_AUTHORIZED;

import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import org.websoso.WSSServer.feed.domain.Feed;
import org.websoso.WSSServer.feed.feed.domain.Feed;
import org.websoso.WSSServer.user.domain.User;
import org.websoso.WSSServer.exception.exception.CustomFeedException;
import org.websoso.WSSServer.feed.feed.exception.CustomFeedException;
import org.websoso.WSSServer.exception.exception.CustomUserException;
import org.websoso.WSSServer.feed.repository.FeedRepository;
import org.websoso.WSSServer.feed.feed.repository.FeedRepository;

@Component
@RequiredArgsConstructor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,12 @@
import org.websoso.WSSServer.dto.novel.NovelGetResponseInfoTab;
import org.websoso.WSSServer.dto.popularNovel.PopularNovelsGetResponse;
import org.websoso.WSSServer.dto.userNovel.TasteNovelsGetResponse;
import org.websoso.WSSServer.feed.service.FeedService;

@RestController
@RequestMapping("/novels")
@RequiredArgsConstructor
public class NovelController {

private final FeedService feedService;
private final SearchNovelApplication searchNovelApplication;

/**
Expand Down Expand Up @@ -149,14 +147,4 @@ public ResponseEntity<TasteNovelsGetResponse> getTasteNovels(@AuthenticationPrin
.body(searchNovelApplication.getTasteNovels(user));
}

// TODO: Feed Controller로 이동해야함
@GetMapping("/{novelId}/feeds")
public ResponseEntity<NovelGetResponseFeedTab> getFeedsByNovel(@AuthenticationPrincipal User user,
@PathVariable Long novelId,
@RequestParam("lastFeedId") Long lastFeedId,
@RequestParam("size") int size) {
return ResponseEntity
.status(OK)
.body(feedService.getFeedsByNovel(user, novelId, lastFeedId, size));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ public static FeedGetOption of(final String feedGetOption) {
"given feed option does not exist");
}

public boolean isAll() {
return this == ALL;
}

public static boolean isAll(FeedGetOption feedGetOption) {
if (feedGetOption == null) {
return true;
Expand Down
Loading
Loading