Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
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
10 changes: 10 additions & 0 deletions src/main/java/com/tiki/server/auth/controller/AuthController.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@

import static com.tiki.server.auth.message.SuccessMessage.*;

import java.security.Principal;

@RestController
@RequiredArgsConstructor
@RequestMapping("api/v1/auth")
Expand All @@ -43,4 +45,12 @@ public SuccessResponse<ReissueGetResponse> reissue(final HttpServletRequest http
ReissueGetResponse response = authService.reissueToken(httpServletRequest);
return SuccessResponse.success(SUCCESS_REISSUE_ACCESS_TOKEN.getMessage(), response);
}

@ResponseStatus(HttpStatus.OK)
@GetMapping("/withdrawal")
public SuccessResponse<?> withdrawal(final Principal principal) {
long memberId = Long.parseLong(principal.getName());
authService.withdrawal(memberId);
return SuccessResponse.success(SUCCESS_REISSUE_ACCESS_TOKEN.getMessage());
}
}
31 changes: 30 additions & 1 deletion src/main/java/com/tiki/server/auth/service/AuthService.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import com.tiki.server.auth.token.adapter.TokenSaver;
import com.tiki.server.auth.token.entity.Token;
import com.tiki.server.email.Email;
import com.tiki.server.member.adapter.MemberDeleter;
import com.tiki.server.member.adapter.MemberFinder;
import com.tiki.server.member.entity.Member;
import com.tiki.server.member.exception.MemberException;
Expand All @@ -21,6 +22,13 @@

import com.tiki.server.auth.jwt.JwtGenerator;
import com.tiki.server.auth.jwt.UserAuthentication;
import com.tiki.server.memberteammanager.adapter.MemberTeamManagerDeleter;
import com.tiki.server.memberteammanager.adapter.MemberTeamManagerFinder;
import com.tiki.server.memberteammanager.entity.MemberTeamManager;
import com.tiki.server.note.adapter.NoteFinder;
import com.tiki.server.note.entity.Note;
import com.tiki.server.team.adapter.TeamFinder;
import com.tiki.server.team.entity.Team;

import lombok.RequiredArgsConstructor;
import org.thymeleaf.util.StringUtils;
Expand All @@ -30,6 +38,8 @@
import static com.tiki.server.member.message.ErrorCode.INVALID_MEMBER;
import static com.tiki.server.member.message.ErrorCode.UNMATCHED_PASSWORD;

import java.util.List;

@Slf4j
@Service
@RequiredArgsConstructor
Expand All @@ -39,9 +49,14 @@ public class AuthService {
private final JwtGenerator jwtGenerator;
private final JwtProvider jwtProvider;
private final MemberFinder memberFinder;
private final MemberTeamManagerFinder memberTeamManagerFinder;
private final MemberTeamManagerDeleter memberTeamManagerDeleter;
private final TeamFinder teamFinder;
private final NoteFinder noteFinder;
private final TokenSaver tokenSaver;
private final TokenFinder tokenFinder;
private final PasswordEncoder passwordEncoder;
private final MemberDeleter memberDeleter;

public SignInGetResponse signIn(final SignInRequest request) {
Member member = checkMemberEmpty(request);
Expand All @@ -64,8 +79,22 @@ public ReissueGetResponse reissueToken(final HttpServletRequest request) {
return ReissueGetResponse.from(accessToken);
}

@Transactional
public void withdrawal(final long memberId) {
Member member = memberFinder.findById(memberId);
List<MemberTeamManager> memberTeamManagers = memberTeamManagerFinder.findAllByMemberIdOrderByCreatedAt(memberId);
for (MemberTeamManager memberTeamManager : memberTeamManagers) {
Team team = teamFinder.findById(memberTeamManager.getTeamId());
List<Note> notes = noteFinder.findAllByMemberIdAndTeamId(memberId, team.getId());
notes.forEach(Note::deleteMemberDependency);
memberTeamManagerDeleter.delete(memberTeamManager);
}
memberDeleter.delete(member);
}

private Member checkMemberEmpty(final SignInRequest request) {
return memberFinder.findByEmail(Email.from(request.email())).orElseThrow(() -> new MemberException(INVALID_MEMBER));
return memberFinder.findByEmail(Email.from(request.email()))
.orElseThrow(() -> new MemberException(INVALID_MEMBER));
}

private void checkTokenEmpty(final String token) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@ public void deleteAll(final List<DeletedDocument> deletedDocuments) {
deletedDocumentRepository.deleteAll(deletedDocuments);
}

public void deleteAllByTeamId(final long teamId) {
deletedDocumentRepository.deleteAllByTeamId(teamId);
}

private DeletedDocument create(final Document document) {
return DeletedDocument.of(document);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,6 @@ public interface DeletedDocumentRepository extends JpaRepository<DeletedDocument
Optional<DeletedDocument> findByIdAndTeamId(final long id, final long teamId);

List<DeletedDocument> findAllByTeamId(final long teamId);

void deleteAllByTeamId(final long teamId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import com.tiki.server.folder.entity.Folder;
import com.tiki.server.memberteammanager.adapter.MemberTeamManagerFinder;
import com.tiki.server.memberteammanager.entity.MemberTeamManager;
import com.tiki.server.notedocumentmanager.adapter.NDDeleter;
import com.tiki.server.team.adapter.TeamFinder;
import com.tiki.server.team.entity.Team;

Expand All @@ -44,6 +45,7 @@ public class DocumentService {
private final DeletedDocumentAdapter deletedDocumentAdapter;
private final TeamFinder teamFinder;
private final DTBAdapter dtbAdapter;
private final NDDeleter ndDeleter;
private final AwsHandler awsHandler;

public DocumentsGetResponse getAllDocuments(final long memberId, final long teamId, final String type) {
Expand Down Expand Up @@ -75,6 +77,7 @@ public void delete(final long memberId, final long teamId, final List<Long> docu
memberTeamManagerFinder.findByMemberIdAndTeamId(memberId, teamId);
List<Document> documents = documentFinder.findAllByIdAndTeamId(documentIds, teamId);
dtbAdapter.deleteAllByDocuments(documentIds);
ndDeleter.deleteAllByDocuments(documentIds);
deletedDocumentAdapter.save(documents);
documentDeleter.deleteAll(documents);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,8 @@ public class FolderDeleter {
public void deleteAll(final List<Folder> folders) {
folderRepository.deleteAll(folders);
}

public void deleteAllByTeamId(final long teamId) {
folderRepository.deleteAllByTeamId(teamId);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,6 @@ public interface FolderRepository extends JpaRepository<Folder, Long> {
Optional<Folder> findByIdAndTeamId(final long id, final long teamId);

List<Folder> findAllByPathStartsWith(final String path);

void deleteAllByTeamId(final long teamId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import com.tiki.server.folder.entity.Folder;
import com.tiki.server.folder.exception.FolderException;
import com.tiki.server.memberteammanager.adapter.MemberTeamManagerFinder;
import com.tiki.server.notedocumentmanager.adapter.NDDeleter;

import lombok.RequiredArgsConstructor;

Expand All @@ -37,6 +38,7 @@ public class FolderService {
private final DocumentDeleter documentDeleter;
private final DeletedDocumentAdapter deletedDocumentAdapter;
private final FolderDeleter folderDeleter;
private final NDDeleter ndDeleter;

public FoldersGetResponse get(final long memberId, final long teamId,
final Long folderId) {
Expand Down Expand Up @@ -112,6 +114,7 @@ private void deleteChildFolders(final Folder folder) {

private void deleteDocuments(final Folder folder) {
List<Document> documents = documentFinder.findAllByFolderId(folder.getId());
ndDeleter.deleteAllByDocuments(documents.stream().map(Document::getId).toList());
deletedDocumentAdapter.save(documents);
documentDeleter.deleteAll(documents);
}
Expand Down
18 changes: 18 additions & 0 deletions src/main/java/com/tiki/server/member/adapter/MemberDeleter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.tiki.server.member.adapter;

import com.tiki.server.common.support.RepositoryAdapter;
import com.tiki.server.member.entity.Member;
import com.tiki.server.member.repository.MemberRepository;

import lombok.RequiredArgsConstructor;

@RepositoryAdapter
@RequiredArgsConstructor
public class MemberDeleter {

private final MemberRepository memberRepository;

public void delete(final Member member) {
memberRepository.delete(member);
}
}
4 changes: 4 additions & 0 deletions src/main/java/com/tiki/server/note/adapter/NoteDeleter.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,8 @@ public class NoteDeleter {
public void deleteNoteByIds(final List<Long> noteIds){
noteIds.forEach(noteRepository::deleteById);
}

public void deleteAllByTeamId(final long teamId) {
noteRepository.deleteAllByTeamId(teamId);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,7 @@ List<Note> findByTeamIdAndCreatedAtBeforeOrderByCreatedDesc(@Param("createdAt")
List<Note> findByTeamIdAndCreatedAtAfterOrderByCreatedAtAsc(@Param("createdAt") final LocalDateTime createdAt,
final Pageable pageable, final long teamId);

List<Note> findAllByMemberIdAndTeamId(final long memberId, final long TeamId);
List<Note> findAllByMemberIdAndTeamId(final long memberId, final long teamId);

void deleteAllByTeamId(final long teamId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,8 @@ public void deleteByNoteIdAndDocumentId(final long noteId, final List<Long> docu
ndRepository.deleteByNoteIdAndDocumentId(noteId, documentId)
);
}

public void deleteAllByDocuments(final List<Long> documentIds) {
ndRepository.deleteAllByDocumentIdIn(documentIds);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,6 @@ public interface NDRepository extends JpaRepository<NDManager, Long> {
void deleteByNoteIdAndDocumentId(final long noteId, final long documentId);

List<NDManager> findAllByNoteId(final long noteId);

void deleteAllByDocumentIdIn(final List<Long> documentIds);
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import com.tiki.server.common.support.RepositoryAdapter;
import com.tiki.server.notetimeblockmanager.repository.NTBRepository;
import com.tiki.server.timeblock.entity.TimeBlock;

import lombok.RequiredArgsConstructor;

import java.util.List;
Expand All @@ -21,4 +23,8 @@ public void deleteByNoteIdAndTimeBlockId(final long noteId, final List<Long> tim
ntbRepository.deleteByNoteIdAndTimeBlockId(noteId, timeBlockId)
);
}

public void deleteAllByTimeBlock(final TimeBlock timeBlock) {
ntbRepository.deleteAllByTimeBlockId(timeBlock.getId());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,6 @@ public interface NTBRepository extends JpaRepository<NTBManager, Long> {
List<NTBManager> findAllByNoteId(final long noteId);

List<NTBManager> findAllByTimeBlockId(final long timeBlockId);

void deleteAllByTimeBlockId(final long timeBlockId);
}
40 changes: 37 additions & 3 deletions src/main/java/com/tiki/server/team/service/TeamService.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,19 @@

import java.util.List;

import com.tiki.server.document.adapter.DeletedDocumentAdapter;
import com.tiki.server.document.adapter.DocumentDeleter;
import com.tiki.server.document.adapter.DocumentFinder;
import com.tiki.server.document.entity.DeletedDocument;
import com.tiki.server.document.entity.Document;
import com.tiki.server.documenttimeblockmanager.adapter.DTBAdapter;
import com.tiki.server.external.util.AwsHandler;
import com.tiki.server.folder.adapter.FolderDeleter;
import com.tiki.server.memberteammanager.adapter.MemberTeamManagerDeleter;
import com.tiki.server.memberteammanager.adapter.MemberTeamManagerFinder;
import com.tiki.server.note.adapter.NoteDeleter;
import com.tiki.server.notedocumentmanager.adapter.NDDeleter;
import com.tiki.server.notetimeblockmanager.adapter.NTBDeleter;
import com.tiki.server.team.adapter.TeamDeleter;
import com.tiki.server.team.adapter.TeamFinder;
import com.tiki.server.team.dto.request.TeamInformUpdateServiceRequest;
Expand All @@ -33,6 +40,8 @@
import com.tiki.server.team.entity.Category;
import com.tiki.server.team.entity.Team;
import com.tiki.server.timeblock.adapter.TimeBlockDeleter;
import com.tiki.server.timeblock.adapter.TimeBlockFinder;
import com.tiki.server.timeblock.entity.TimeBlock;

import lombok.RequiredArgsConstructor;

Expand All @@ -47,10 +56,17 @@ public class TeamService {
private final MemberFinder memberFinder;
private final DocumentFinder documentFinder;
private final DocumentDeleter documentDeleter;
private final TimeBlockFinder timeBlockFinder;
private final TimeBlockDeleter timeBlockDeleter;
private final MemberTeamManagerFinder memberTeamManagerFinder;
private final MemberTeamManagerDeleter memberTeamManagerDeleter;
private final MemberTeamManagerSaver memberTeamManagerSaver;
private final DTBAdapter dtbAdapter;
private final NTBDeleter ntbDeleter;
private final NDDeleter ndDeleter;
private final DeletedDocumentAdapter deletedDocumentAdapter;
private final FolderDeleter folderDeleter;
private final NoteDeleter noteDeleter;
private final AwsHandler awsHandler;

@Transactional
Expand Down Expand Up @@ -78,9 +94,10 @@ public void deleteTeam(final long memberId, final long teamId) {
checkIsAdmin(memberId, teamId);
List<MemberTeamManager> memberTeamManagers = memberTeamManagerFinder.findAllByTeamId(teamId);
memberTeamManagerDeleter.deleteAll(memberTeamManagers);
List<Document> documents = documentFinder.findAllByTeamId(teamId);
documentDeleter.deleteAll(documents);
timeBlockDeleter.deleteAllByTeamId(teamId);
deleteDocuments(teamId);
deleteTimeBlocks(teamId);
noteDeleter.deleteAllByTeamId(teamId);
folderDeleter.deleteAllByTeamId(teamId);
teamDeleter.deleteById(teamId);
}

Expand Down Expand Up @@ -131,4 +148,21 @@ private MemberTeamManager checkIsAdmin(final long memberId, final long teamId) {
accessMember.checkMemberAccessible(ADMIN);
return accessMember;
}

private void deleteDocuments(final long teamId) {
List<Document> documents = documentFinder.findAllByTeamId(teamId);
documents.forEach(Document -> awsHandler.deleteFile(Document.getFileKey()));
List<DeletedDocument> deletedDocuments = deletedDocumentAdapter.get(teamId);
deletedDocuments.forEach(DeletedDocument -> awsHandler.deleteFile(DeletedDocument.getFileKey()));
deletedDocumentAdapter.deleteAllByTeamId(teamId);
ndDeleter.deleteAllByDocuments(documents.stream().map(Document::getId).toList());
documentDeleter.deleteAll(documents);
}

private void deleteTimeBlocks(final long teamId) {
List<TimeBlock> timeBlocks = timeBlockFinder.findAllByTeamId(teamId);
timeBlocks.forEach(ntbDeleter::deleteAllByTimeBlock);
timeBlocks.forEach(dtbAdapter::deleteAllByTimeBlock);
timeBlockDeleter.deleteAllByTeamId(teamId);
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.tiki.server.timeblock.service;

import com.tiki.server.notetimeblockmanager.adapter.NTBDeleter;
import com.tiki.server.timeblock.dto.request.TimeBlockUpdateRequest;
import com.tiki.server.timeblock.service.dto.response.AllTimeBlockServiceResponse;
import java.util.List;
Expand Down Expand Up @@ -47,6 +48,7 @@ public class TimeBlockService {
private final DTBAdapter dtbAdapter;
private final NTBFinder ntbFinder;
private final NoteFinder noteFinder;
private final NTBDeleter ntbDeleter;

@Transactional
public TimeBlockCreateResponse createTimeBlock(
Expand Down Expand Up @@ -121,6 +123,7 @@ public void deleteTimeBlock(final long memberId, final long teamId, final long t
TimeBlock timeBlock = timeBlockFinder.findByIdAndTeamId(timeBlockId, teamId);
memberTeamManager.checkMemberAccessible(timeBlock.getAccessiblePosition());
dtbAdapter.deleteAllByTimeBlock(timeBlock);
ntbDeleter.deleteAllByTimeBlock(timeBlock);
timeBlockDeleter.deleteById(timeBlock.getId());
}

Expand Down