Skip to content

Commit

Permalink
⚡ : 프로젝트 수정 구현
Browse files Browse the repository at this point in the history
  • Loading branch information
imenuuu committed Mar 10, 2024
1 parent 03801df commit ba87ea0
Show file tree
Hide file tree
Showing 6 changed files with 57 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
Expand Down Expand Up @@ -111,11 +112,14 @@ public CommonResponse<String> patchActiveProject(@PathVariable Long projectId){
@PatchMapping("/{projectId}")
@ApiErrorCodeExample({UserAuthErrorCode.class, ProjectGetErrorCode.class})
public CommonResponse<String> patchProject(@PathVariable Long projectId,
@RequestPart ProjectReq.ModifyProject modifyProject){
projectService.patchProject(projectId, modifyProject);
@RequestPart ProjectReq.ModifyProject modifyProject,
@Schema(description = "대표 이미지 파일 변경될 경우") @RequestPart(value = "presentFile", required = false) MultipartFile presentFile,
@Schema(description = "이미지 리스트 추가될 경우")@RequestPart(value = "multipartFiles", required = false) List<MultipartFile> multipartFiles){
projectService.patchProject(projectId, modifyProject, presentFile, multipartFiles);
return CommonResponse.onSuccess("수정 성공");
}

/*
@Operation(summary = "ADMIN-03-07💻 프로젝트 이미지 수정", description = "프로젝트 이미지 수정 API")
@PatchMapping(value = "/img/{projectId}/{projectImgId}", consumes = {"multipart/form-data"}, produces = "application/json")
@ApiErrorCodeExample({UserAuthErrorCode.class, PatchProjectImageErrorCode.class, FileUploadException.class})
Expand All @@ -125,6 +129,7 @@ public CommonResponse<ProjectRes.PatchProjectImg> modifyProjectImg(@PathVariable
ProjectRes.PatchProjectImg patchProjectImg = projectService.modifyProjectImg(projectId, projectImgId, multipartFile);
return CommonResponse.onSuccess(patchProjectImg);
}
*/


}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import javax.validation.constraints.NotNull;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

public class ProjectReq {
@Getter
Expand Down Expand Up @@ -75,7 +76,11 @@ public static class ModifyProject {
private LocalDateTime endDate;
@Enum(message = "DOG, CHILDREN,YOUTH,WOMEN, ELDER, DISABLED, SOCIAL, EARTH, NEIGHBOR, ANIMAL, ENVIRONMENT 중 입력해주세요")
private ProjectKind projectKind;
@Schema(description = "추천 검색어", required = false)
private String searchKeyword;
@Schema(description = "삭제할 이미지 리스트", required = false)
private List<Long> deleteImageList;

}
@Getter
@Setter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,13 @@

import com.example.matchapi.project.converter.ProjectConverter;
import com.example.matchdomain.project.adaptor.ProjectImgAdaptor;
import com.example.matchdomain.project.entity.Project;
import com.example.matchdomain.project.entity.ProjectImage;
import com.example.matchinfrastructure.config.s3.S3UploadService;

import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import javax.transaction.Transactional;
import java.util.ArrayList;
Expand All @@ -18,8 +22,8 @@
public class ProjectImgService {
private final ProjectImgAdaptor projectImgAdaptor;
private final ProjectConverter projectConverter;
private final S3UploadService s3UploadService;

@Transactional
public void saveImgList(Long id, String url, List<String> imgUrlList) {
imgUrlList.add(url);
List<ProjectImage> projectImages = new ArrayList<>();
Expand All @@ -42,4 +46,23 @@ public List<ProjectImage> findByProjectId(Long projectId) {
public ProjectImage save(ProjectImage projectImage) {
return projectImgAdaptor.save(projectImage);
}

public void updateImageLists(Project project, List<Long> deleteImageList, MultipartFile presentFile, List<MultipartFile> multipartFiles) {
if(deleteImageList != null){
List<ProjectImage> images = projectImgAdaptor.findByIdIn(deleteImageList);
for (ProjectImage image : images) {
s3UploadService.deleteFile(image.getUrl());
}
projectImgAdaptor.deleteImgList(deleteImageList);
}
if(presentFile != null){
String presentUrl = s3UploadService.uploadProjectPresentFile(project.getId(), presentFile);
projectImgAdaptor.deletePresentImg(project.getId());
projectImgAdaptor.save(projectConverter.postProjectImage(project.getId(), presentUrl, REPRESENT, 0));
}
if(multipartFiles != null){
List<String> imgUrlList = s3UploadService.listUploadProjectFiles(project.getId(), multipartFiles);
saveImgList(project.getId(), imgUrlList.get(0), imgUrlList);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import com.example.matchcommon.constants.enums.FILTER;
import com.example.matchapi.user.helper.AuthHelper;
import com.example.matchcommon.exception.BadRequestException;
import com.example.matchcommon.exception.NotFoundException;
import com.example.matchcommon.reponse.PageResponse;
import com.example.matchdomain.common.model.Status;
import com.example.matchdomain.donation.adaptor.DonationAdaptor;
Expand All @@ -20,11 +19,9 @@
import com.example.matchdomain.project.adaptor.AttentionAdaptor;
import com.example.matchdomain.project.adaptor.ProjectAdaptor;
import com.example.matchdomain.project.adaptor.ProjectImgAdaptor;
import com.example.matchdomain.project.dto.ProjectDto;
import com.example.matchdomain.project.entity.*;
import com.example.matchdomain.project.entity.enums.ProjectKind;
import com.example.matchdomain.project.entity.enums.ProjectStatus;
import com.example.matchdomain.project.entity.enums.ReportReason;
import com.example.matchdomain.project.entity.pk.ProjectUserAttentionPk;
import com.example.matchdomain.project.repository.*;
import com.example.matchdomain.user.entity.User;
Expand All @@ -38,18 +35,12 @@
import org.springframework.web.multipart.MultipartFile;

import javax.transaction.Transactional;
import java.time.LocalDateTime;

import java.util.ArrayList;
import java.util.List;

import static com.example.matchcommon.constants.MatchAlertStatic.PROJECT_UPLOAD_BODY;
import static com.example.matchdomain.common.model.Status.ACTIVE;
import static com.example.matchdomain.common.model.Status.INACTIVE;
import static com.example.matchdomain.project.entity.enums.ImageRepresentStatus.NORMAL;
import static com.example.matchdomain.project.entity.enums.ImageRepresentStatus.REPRESENT;
import static com.example.matchdomain.project.entity.enums.ProjectStatus.PROCEEDING;
import static com.example.matchdomain.project.exception.CommentDeleteErrorCode.COMMENT_DELETE_ERROR_CODE;
import static com.example.matchdomain.project.exception.CommentGetErrorCode.COMMENT_NOT_EXIST;
import static com.example.matchdomain.project.exception.PatchProjectImageErrorCode.PROJECT_NOT_CORRECT_IMAGE;
import static com.example.matchdomain.project.exception.ProjectGetErrorCode.PROJECT_NOT_EXIST;

Expand Down Expand Up @@ -161,11 +152,14 @@ public void deleteProject(Long projectId) {
}

@Transactional
public void patchProject(Long projectId, ProjectReq.ModifyProject modifyProject) {
public void patchProject(Long projectId, ProjectReq.ModifyProject modifyProject, MultipartFile presentFile,
List<MultipartFile> multipartFiles) {
Project project = projectAdaptor.findById(projectId);

project.modifyProject(modifyProject.getProjectName(), modifyProject.getUsages(), modifyProject.getDetail(), modifyProject.getRegularStatus(), modifyProject.getStartDate(), modifyProject.getEndDate(), modifyProject.getProjectKind(), modifyProject.getSearchKeyword());

projectImgService.updateImageLists(project, modifyProject.getDeleteImageList(), presentFile, multipartFiles);

projectAdaptor.save(project);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,16 @@ public void saveAll(List<ProjectImage> projectImages) {
public ProjectImage save(ProjectImage projectImage) {
return projectImageRepository.save(projectImage);
}

public void deleteImgList(List<Long> deleteImageList) {
projectImageRepository.deleteAllByIdIn(deleteImageList);
}

public List<ProjectImage> findByIdIn(List<Long> deleteImageList) {
return projectImageRepository.findAllById(deleteImageList);
}

public void deletePresentImg(Long id) {
projectImageRepository.deleteByIdAndImageRepresentStatus(id, ImageRepresentStatus.REPRESENT);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,8 @@ public interface ProjectImageRepository extends JpaRepository<ProjectImage, Long
List<ProjectImage> findByProjectIdAndImageRepresentStatusAndProject_StatusOrderBySequenceAsc(@Param("projectId") Long projectId, @Param("imageRepresentStatus") ImageRepresentStatus imageRepresentStatus,@Param("status") Status status);

List<ProjectImage> findByProjectIdOrderBySequenceAsc(Long projectId);

void deleteAllByIdIn(List<Long> deleteImageList);

void deleteByIdAndImageRepresentStatus(Long id, ImageRepresentStatus imageRepresentStatus);
}

0 comments on commit ba87ea0

Please sign in to comment.