Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
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 @@ -11,7 +11,6 @@
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestBody;
Expand Down
4 changes: 0 additions & 4 deletions src/main/java/com/tiki/server/document/entity/Document.java
Original file line number Diff line number Diff line change
@@ -1,20 +1,16 @@
package com.tiki.server.document.entity;

import static jakarta.persistence.FetchType.LAZY;
import static jakarta.persistence.GenerationType.IDENTITY;
import static lombok.AccessLevel.PRIVATE;
import static lombok.AccessLevel.PROTECTED;

import com.tiki.server.common.entity.BaseTime;
import com.tiki.server.document.dto.request.DocumentCreateRequest;
import com.tiki.server.timeblock.entity.TimeBlock;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@
import java.util.Optional;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

import com.tiki.server.common.entity.Position;
import com.tiki.server.document.entity.Document;

public interface DocumentRepository extends JpaRepository<Document, Long> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import com.tiki.server.document.entity.Document;
import com.tiki.server.document.exception.DocumentException;
import com.tiki.server.documenttimeblockmanager.adapter.DTBAdapter;
import com.tiki.server.external.util.S3Handler;
import com.tiki.server.external.util.AwsHandler;
import com.tiki.server.folder.adapter.FolderFinder;
import com.tiki.server.folder.entity.Folder;
import com.tiki.server.memberteammanager.adapter.MemberTeamManagerFinder;
Expand All @@ -43,7 +43,7 @@ public class DocumentService {
private final DeletedDocumentAdapter deletedDocumentAdapter;
private final TeamFinder teamFinder;
private final DTBAdapter dtbAdapter;
private final S3Handler s3Handler;
private final AwsHandler awsHandler;

public DocumentsGetResponse getAllDocuments(final long memberId, final long teamId, final String type) {
MemberTeamManager memberTeamManager = memberTeamManagerFinder.findByMemberIdAndTeamId(memberId, teamId);
Expand Down Expand Up @@ -82,7 +82,7 @@ public void deleteTrash(final long memberId, final long teamId, final List<Long>
memberTeamManagerFinder.findByMemberIdAndTeamId(memberId, teamId);
List<DeletedDocument> deletedDocuments = deletedDocumentAdapter.get(documentIds, teamId);
restoreTeamUsage(teamId, deletedDocuments);
deletedDocuments.forEach(deletedDocument -> s3Handler.deleteFile(deletedDocument.getFileKey()));
deletedDocuments.forEach(deletedDocument -> awsHandler.deleteFile(deletedDocument.getFileKey()));
deletedDocumentAdapter.deleteAll(deletedDocuments);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import static com.tiki.server.external.message.SuccessMessage.PRESIGNED_URL_GET_SUCCESS;
import static com.tiki.server.external.message.SuccessMessage.S3_FILE_DELETE_SUCCESS;

import com.tiki.server.external.service.S3Service;
import com.tiki.server.external.service.FileHandlerService;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
Expand All @@ -15,7 +15,7 @@

import com.tiki.server.common.dto.BaseResponse;
import com.tiki.server.common.dto.SuccessResponse;
import com.tiki.server.external.controller.docs.S3ControllerDocs;
import com.tiki.server.external.controller.docs.FileeHandlerControllerDocs;
import com.tiki.server.external.dto.request.S3DeleteRequest;
import com.tiki.server.external.dto.response.PreSignedUrlResponse;

Expand All @@ -24,21 +24,21 @@
@RestController
@RequiredArgsConstructor
@RequestMapping("api/v1/file")
public class S3Controller implements S3ControllerDocs {
public class FileHandlerController implements FileeHandlerControllerDocs {

private final S3Service s3Service;
private final FileHandlerService fileHandlerService;

@Override
@GetMapping("/upload")
public ResponseEntity<SuccessResponse<PreSignedUrlResponse>> getPreSignedUrl(@RequestParam String fileFormat) {
PreSignedUrlResponse response = s3Service.getUploadPreSignedUrl(fileFormat);
PreSignedUrlResponse response = fileHandlerService.getUploadPreSignedUrl(fileFormat);
return ResponseEntity.ok(success(PRESIGNED_URL_GET_SUCCESS.getMessage(), response));
}

@Override
@PostMapping
public ResponseEntity<BaseResponse> deleteFile(@RequestBody S3DeleteRequest request) {
s3Service.deleteFile(request);
fileHandlerService.deleteFile(request);
return ResponseEntity.ok(success(S3_FILE_DELETE_SUCCESS.getMessage()));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
import io.swagger.v3.oas.annotations.tags.Tag;

@Tag(name = "S3", description = "AWS S3 API")
public interface S3ControllerDocs {
public interface FileeHandlerControllerDocs {

@Operation(
summary = "Presigned Url 생성",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,21 @@

import com.tiki.server.external.dto.request.S3DeleteRequest;
import com.tiki.server.external.dto.response.PreSignedUrlResponse;
import com.tiki.server.external.util.S3Handler;
import com.tiki.server.external.util.AwsHandler;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class S3Service {
public class FileHandlerService {

private final S3Handler s3Handler;
private final AwsHandler awsHandler;

public PreSignedUrlResponse getUploadPreSignedUrl(final String fileFormat) {
return s3Handler.getUploadPreSignedUrl(fileFormat);
return awsHandler.getUploadPreSignedUrl(fileFormat);
}

public void deleteFile(final S3DeleteRequest request) {
s3Handler.deleteFile(request.fileKey());
awsHandler.deleteFile(request.fileKey());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@

@Component
@RequiredArgsConstructor
public class S3Handler {
public class AwsHandler {

private final AWSConfig awsConfig;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@
import com.tiki.server.common.dto.SuccessResponse;
import com.tiki.server.memberteammanager.controller.dto.request.UpdateTeamMemberNameRequest;
import com.tiki.server.memberteammanager.service.MemberTeamManagerService;
import com.tiki.server.memberteammanager.service.dto.response.MemberTeamPositionGetResponse;
import com.tiki.server.memberteammanager.service.dto.response.MemberTeamInformGetResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.security.Principal;

import static com.tiki.server.common.dto.SuccessResponse.success;
import static com.tiki.server.memberteammanager.message.SuccessMessage.GET_POSITION;
import static com.tiki.server.memberteammanager.message.SuccessMessage.GET_TEAM_INFORM;
import static com.tiki.server.memberteammanager.message.SuccessMessage.KICK_TEAM;
import static com.tiki.server.memberteammanager.message.SuccessMessage.LEAVE_TEAM;
import static com.tiki.server.memberteammanager.message.SuccessMessage.UPDATE_NAME;
Expand All @@ -25,13 +25,13 @@ public class MemberTeamController {
private final MemberTeamManagerService memberTeamManagerService;

@GetMapping("/teams/{teamId}/members/position")
public ResponseEntity<SuccessResponse<MemberTeamPositionGetResponse>> getMemberTeamPosition(
public ResponseEntity<SuccessResponse<MemberTeamInformGetResponse>> getMemberTeamInform(
final Principal principal,
@PathVariable final long teamId
) {
long memberId = Long.parseLong(principal.getName());
MemberTeamPositionGetResponse response = memberTeamManagerService.getPosition(memberId, teamId);
return ResponseEntity.ok().body(success(GET_POSITION.getMessage(), response));
MemberTeamInformGetResponse response = memberTeamManagerService.getMemberTeamInform(memberId, teamId);
return ResponseEntity.ok().body(success(GET_TEAM_INFORM.getMessage(), response));
}

@PatchMapping("/teams/{teamId}/members/name")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@
@RequiredArgsConstructor
public enum SuccessMessage {

UPDATE_NAME("팀 내 이름 변경 성공"),
LEAVE_TEAM("팀 탈퇴 성공"),
GET_TEAM_INFORM("팀 개인 정보 불러오기 성공"),
KICK_TEAM("팀 퇴출 성공"),
GET_POSITION("직책 불러오기 성공");
LEAVE_TEAM("팀 탈퇴 성공"),
UPDATE_NAME("팀 내 이름 변경 성공");

private final String message;
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import com.tiki.server.note.adapter.NoteFinder;
import com.tiki.server.note.entity.Note;
import com.tiki.server.team.exception.TeamException;
import com.tiki.server.memberteammanager.service.dto.response.MemberTeamPositionGetResponse;
import com.tiki.server.memberteammanager.service.dto.response.MemberTeamInformGetResponse;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

Expand All @@ -31,22 +31,24 @@ public class MemberTeamManagerService {

@Transactional
public void kickOutMemberFromTeam(final long memberId, final long teamId, final long kickOutMemberId) {
checkIsAdmin(memberId, teamId);
MemberTeamManager memberTeamManager = memberTeamManagerFinder.findByMemberIdAndTeamId(kickOutMemberId, teamId);
MemberTeamManager accessMember = memberTeamManagerFinder.findByMemberIdAndTeamId(memberId, teamId);
checkIsAdmin(accessMember);
MemberTeamManager kickOutMember = memberTeamManagerFinder.findByMemberIdAndTeamId(kickOutMemberId, teamId);
deleteNoteDependency(kickOutMemberId, teamId);
memberTeamManagerDeleter.delete(memberTeamManager);
memberTeamManagerDeleter.delete(kickOutMember);
}

@Transactional
public void leaveTeam(final long memberId, final long teamId) {
MemberTeamManager memberTeamManager = checkIsNotAdmin(memberId, teamId);
MemberTeamManager accessMember = memberTeamManagerFinder.findByMemberIdAndTeamId(memberId, teamId);
checkIsNotAdmin(accessMember);
deleteNoteDependency(memberId, teamId);
memberTeamManagerDeleter.delete(memberTeamManager);
memberTeamManagerDeleter.delete(accessMember);
}

public MemberTeamPositionGetResponse getPosition(final long memberId, final long teamId) {
public MemberTeamInformGetResponse getMemberTeamInform(final long memberId, final long teamId) {
MemberTeamManager memberTeamManager = memberTeamManagerFinder.findByMemberIdAndTeamId(memberId, teamId);
return MemberTeamPositionGetResponse.from(memberTeamManager.getPosition());
return MemberTeamInformGetResponse.of(memberTeamManager.getPosition(), memberTeamManager.getName());
}

@Transactional
Expand All @@ -55,19 +57,16 @@ public void updateTeamMemberName(final long memberId, final long teamId, final S
memberTeamManager.updateName(name);
}

private void checkIsAdmin(final long memberId, final long teamId) {
MemberTeamManager memberTeamManager = memberTeamManagerFinder.findByMemberIdAndTeamId(memberId, teamId);
private void checkIsAdmin(MemberTeamManager memberTeamManager) {
if (!memberTeamManager.getPosition().equals(ADMIN)) {
throw new TeamException(INVALID_AUTHORIZATION_DELETE);
}
}

private MemberTeamManager checkIsNotAdmin(final long memberId, final long teamId) {
MemberTeamManager memberTeamManager = memberTeamManagerFinder.findByMemberIdAndTeamId(memberId, teamId);
private void checkIsNotAdmin(MemberTeamManager memberTeamManager) {
if (memberTeamManager.getPosition().equals(ADMIN)) {
throw new TeamException(TOO_HIGH_AUTHORIZATION);
}
return memberTeamManager;
}

private void deleteNoteDependency(final long memberId, final long teamId) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.tiki.server.memberteammanager.service.dto.response;

import com.tiki.server.common.entity.Position;
import jakarta.validation.constraints.NotNull;

public record MemberTeamInformGetResponse(
@NotNull Position position,
@NotNull String name
) {
public static MemberTeamInformGetResponse of(final Position position, final String name) {
return new MemberTeamInformGetResponse(position, name);
}
}

This file was deleted.

28 changes: 13 additions & 15 deletions src/main/java/com/tiki/server/team/controller/TeamController.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,14 @@
import java.security.Principal;

import com.tiki.server.common.dto.BaseResponse;
import com.tiki.server.team.dto.request.UpdateTeamIconRequest;
import com.tiki.server.team.dto.request.UpdateTeamNameRequest;
import com.tiki.server.team.dto.request.TeamMemberAndTeamInformUpdateRequest;
import com.tiki.server.team.dto.request.TeamMemberAndTeamInformUpdateServiceRequest;
import com.tiki.server.team.dto.response.UsageGetResponse;
import com.tiki.server.team.dto.response.CategoriesGetResponse;
import com.tiki.server.team.dto.response.TeamsGetResponse;

import org.springframework.http.HttpStatus;
import com.tiki.server.team.service.dto.response.TeamInformGetResponse;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

Expand Down Expand Up @@ -70,26 +71,23 @@ public ResponseEntity<BaseResponse> deleteTeam(
return ResponseEntity.noContent().build();
}

@PatchMapping("/{teamId}/name")
public ResponseEntity<BaseResponse> updateTeamName(
final Principal principal,
@PathVariable final long teamId,
@RequestBody final UpdateTeamNameRequest request
@GetMapping("/{teamId}/inform")
public ResponseEntity<SuccessResponse<TeamInformGetResponse>> getTeamName(
@PathVariable final long teamId
) {
long memberId = Long.parseLong(principal.getName());
teamService.updateTeamName(memberId, teamId, request.newTeamName());
return ResponseEntity.ok(success(SUCCESS_UPDATE_TEAM_NAME.getMessage()));
TeamInformGetResponse response = teamService.getTeamInform(teamId);
return ResponseEntity.ok().body(success(SUCCESS_GET_TEAM_INFORM.getMessage(), response));
}

@PatchMapping("/{teamId}/icon")
public ResponseEntity<BaseResponse> updateIconImage(
@PatchMapping("/{teamId}/inform")
public ResponseEntity<BaseResponse> updateTeamAndTeamMemberInform(
final Principal principal,
@PathVariable final long teamId,
@RequestBody final UpdateTeamIconRequest request
@RequestBody final TeamMemberAndTeamInformUpdateRequest request
) {
long memberId = Long.parseLong(principal.getName());
teamService.updateIconImage(memberId, teamId, request.iconImageUrl());
return ResponseEntity.ok(success(SUCCESS_UPDATE_TEAM_ICON.getMessage()));
teamService.updateTeamAndTeamMemberInform(memberId, teamId, TeamMemberAndTeamInformUpdateServiceRequest.from(request));
return ResponseEntity.ok(success(SUCCESS_UPDATE_TEAM_NAME.getMessage()));
}

@PatchMapping("/{teamId}/member/{targetId}/admin")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.tiki.server.team.dto.request;

import jakarta.validation.constraints.NotNull;

public record TeamMemberAndTeamInformUpdateRequest(
@NotNull String teamMemberName,
@NotNull String teamName,
@NotNull String teamUrl
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.tiki.server.team.dto.request;

import jakarta.validation.constraints.NotNull;

public record TeamMemberAndTeamInformUpdateServiceRequest(
@NotNull String teamMemberName,
@NotNull String teamName,
@NotNull String teamIconUrl
) {
public static TeamMemberAndTeamInformUpdateServiceRequest from(TeamMemberAndTeamInformUpdateRequest request) {
return new TeamMemberAndTeamInformUpdateServiceRequest(
request.teamMemberName(),
request.teamName(),
request.teamUrl()
);
}
}

This file was deleted.

This file was deleted.

Loading
Loading