diff --git a/src/main/java/ddingdong/ddingdongBE/domain/activityreport/controller/ClubActivityReportApiController.java b/src/main/java/ddingdong/ddingdongBE/domain/activityreport/controller/ClubActivityReportApiController.java index bbf622f4..80663fbb 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/activityreport/controller/ClubActivityReportApiController.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/activityreport/controller/ClubActivityReportApiController.java @@ -20,6 +20,7 @@ import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; @@ -36,8 +37,6 @@ @RequestMapping("/server/club") public class ClubActivityReportApiController { - private static final int IMAGE_COUNT = 2; - private final ActivityReportService activityReportService; private final FileService fileService; @@ -48,7 +47,7 @@ public CurrentTermResponse getCurrentTerm() { @GetMapping("/my/activity-reports") public List getMyActivityReports( - @AuthenticationPrincipal PrincipalDetails principalDetails + @AuthenticationPrincipal PrincipalDetails principalDetails ) { User user = principalDetails.getUser(); return activityReportService.getMyActivityReports(user); @@ -56,75 +55,92 @@ public List getMyActivityReports( @GetMapping("/activity-reports") public List getActivityReport( - @RequestParam("term") String term, - @RequestParam("club_name") String clubName + @RequestParam("term") String term, + @RequestParam("club_name") String clubName ) { return activityReportService.getActivityReport(term, clubName); } @PostMapping("/my/activity-reports") public void registerReport( - @AuthenticationPrincipal PrincipalDetails principalDetails, - @RequestPart(value = "reportData", required = false) List requests, - @RequestPart(value = "uploadFiles1", required = false) List imageA, - @RequestPart(value = "uploadFiles2", required = false) List imageB + @AuthenticationPrincipal PrincipalDetails principalDetails, + @RequestPart(value = "reportData", required = false) List requests, + @RequestPart(value = "uploadFiles1", required = false) MultipartFile firstImage, + @RequestPart(value = "uploadFiles2", required = false) MultipartFile secondImage ) { User user = principalDetails.getUser(); IntStream.range(0, requests.size()) - .forEach(index -> { - RegisterActivityReportRequest request = requests.get(index); - Long registeredActivityReportId = activityReportService.register(user, request); - if (index == 0 && imageA != null) { - fileService.uploadFile(registeredActivityReportId, Collections.singletonList(imageA.get(0)), - IMAGE, ACTIVITY_REPORT); - } - if (index == 1 && imageB != null) { - fileService.uploadFile(registeredActivityReportId, Collections.singletonList(imageB.get(0)), - IMAGE, ACTIVITY_REPORT); - } - }); + .forEach(index -> { + + RegisterActivityReportRequest request = requests.get(index); + Long registeredActivityReportId = activityReportService.register(user, request); + + if (index == 0 && !firstImage.isEmpty()) { + fileService.uploadFile(registeredActivityReportId, + Collections.singletonList(firstImage), + IMAGE, ACTIVITY_REPORT); + } + + if (index == 1 && !secondImage.isEmpty()) { + fileService.uploadFile(registeredActivityReportId, + Collections.singletonList(secondImage), + IMAGE, ACTIVITY_REPORT); + } + }); } @PatchMapping("my/activity-reports") public void updateReport( - @AuthenticationPrincipal PrincipalDetails principalDetails, - @RequestParam("term") String term, - @RequestPart(value = "reportData", required = false) List requests, - @RequestPart(value = "uploadFiles1", required = false) List imageA, - @RequestPart(value = "uploadFiles2", required = false) List imageB + @AuthenticationPrincipal PrincipalDetails principalDetails, + @RequestParam("term") String term, + @RequestPart(value = "reportData", required = false) List requests, + @RequestPart(value = "uploadFiles1", required = false) MultipartFile firstImage, + @RequestPart(value = "uploadFiles2", required = false) MultipartFile secondImage ) { User user = principalDetails.getUser(); - List updateActivityReportDtos = activityReportService.update(user, term, requests); + List updateActivityReportDtos = activityReportService.update(user, term, + requests); IntStream.range(0, updateActivityReportDtos.size()) - .forEach(index -> { - if (index == 0) { - fileService.deleteFile(updateActivityReportDtos.get(index).getId(), IMAGE, ACTIVITY_REPORT); - fileService.uploadFile(updateActivityReportDtos.get(index).getId(), imageA, IMAGE, - ACTIVITY_REPORT); - } - if (index == 1) { - fileService.deleteFile(updateActivityReportDtos.get(index).getId(), IMAGE, ACTIVITY_REPORT); - fileService.uploadFile(updateActivityReportDtos.get(index).getId(), imageB, IMAGE, - ACTIVITY_REPORT); - } + .forEach(index -> { + if (index == 0) { + fileService.deleteFile(updateActivityReportDtos.get(index).getId(), IMAGE, + ACTIVITY_REPORT); + + if (!firstImage.isEmpty()) { + fileService.uploadFile(updateActivityReportDtos.get(index).getId(), Collections.singletonList(firstImage), + IMAGE, + ACTIVITY_REPORT); } - ); + } + if (index == 1) { + fileService.deleteFile(updateActivityReportDtos.get(index).getId(), IMAGE, + ACTIVITY_REPORT); + + if (!secondImage.isEmpty()) { + fileService.uploadFile(updateActivityReportDtos.get(index).getId(), Collections.singletonList(secondImage), + IMAGE, + ACTIVITY_REPORT); + } + } + } + ); } @DeleteMapping("my/activity-reports") public void deleteReport( - @AuthenticationPrincipal PrincipalDetails principalDetails, - @RequestParam("term") String term + @AuthenticationPrincipal PrincipalDetails principalDetails, + @RequestParam("term") String term ) { User user = principalDetails.getUser(); List deleteActivityReportDtos = activityReportService.delete(user, term); deleteActivityReportDtos - .forEach( - activityReportDto -> fileService.deleteFile(activityReportDto.getId(), IMAGE, ACTIVITY_REPORT) - ); + .forEach( + activityReportDto -> fileService.deleteFile(activityReportDto.getId(), IMAGE, + ACTIVITY_REPORT) + ); } } diff --git a/src/main/java/ddingdong/ddingdongBE/domain/activityreport/service/ActivityReportService.java b/src/main/java/ddingdong/ddingdongBE/domain/activityreport/service/ActivityReportService.java index f5395678..f08dad35 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/activityreport/service/ActivityReportService.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/activityreport/service/ActivityReportService.java @@ -58,22 +58,27 @@ public List getAll() { public List getMyActivityReports(final User user) { Club club = clubService.findClubByUserId(user.getId()); - List activityReports = activityReportRepository.findByClubName(club.getName()); + List activityReports = activityReportRepository.findByClubName( + club.getName()); return parseToActivityReportResponse(activityReports); } @Transactional(readOnly = true) - public List getActivityReport(final String term, final String clubName) { - List activityReports = activityReportRepository.findByClubNameAndTerm(clubName, term); + public List getActivityReport(final String term, + final String clubName) { + List activityReports = activityReportRepository.findByClubNameAndTerm( + clubName, term); return activityReports.stream().map(activityReport -> { - List imageUrls = fileInformationService.getImageUrls(IMAGE.getFileType() + ACTIVITY_REPORT.getFileDomain() + activityReport.getId()); + List imageUrls = fileInformationService.getImageUrls( + IMAGE.getFileType() + ACTIVITY_REPORT.getFileDomain() + activityReport.getId()); return DetailActivityReportResponse.from(activityReport, imageUrls); }).collect(Collectors.toList()); } - public Long register(final User user, final RegisterActivityReportRequest registerActivityReportRequest) { + public Long register(final User user, + final RegisterActivityReportRequest registerActivityReportRequest) { Club club = clubService.findClubByUserId(user.getId()); ActivityReport activityReport = registerActivityReportRequest.toEntity(club); @@ -84,25 +89,29 @@ public Long register(final User user, final RegisterActivityReportRequest regist } public List update(final User user, final String term, - final List requests) { + final List requests) { Club club = clubService.findClubByUserId(user.getId()); - List activityReports = activityReportRepository.findByClubNameAndTerm(club.getName(), term); + List activityReports = activityReportRepository.findByClubNameAndTerm( + club.getName(), term); - return IntStream.range(0, activityReports.size()).mapToObj(index -> { - activityReports.get(index).update(requests.get(index)); - return ActivityReportDto.from(activityReports.get(index)); - }).collect(Collectors.toList()); + return IntStream.range(0, activityReports.size()) + .mapToObj(index -> { + activityReports.get(index).update(requests.get(index)); + return ActivityReportDto.from(activityReports.get(index)); + }).collect(Collectors.toList()); } public List delete(final User user, final String term) { Club club = clubService.findClubByUserId(user.getId()); - List activityReports = activityReportRepository.findByClubNameAndTerm(club.getName(), term); + List activityReports = activityReportRepository.findByClubNameAndTerm( + club.getName(), term); return activityReports.stream() - .peek(activityReport -> activityReport.getParticipants().clear()) - .peek(activityReportRepository::delete).map(ActivityReportDto::from).collect(Collectors.toList()); + .peek(activityReport -> activityReport.getParticipants().clear()) + .peek(activityReportRepository::delete).map(ActivityReportDto::from) + .collect(Collectors.toList()); } public CurrentTermResponse getCurrentTerm() { @@ -114,7 +123,8 @@ public CurrentTermResponse getCurrentTerm() { } private int calculateGapOfDays(final LocalDate startDate, final LocalDate currentDate) { - return (int) Duration.between(startDate.atStartOfDay(), currentDate.atStartOfDay()).toDays(); + return (int) Duration.between(startDate.atStartOfDay(), currentDate.atStartOfDay()) + .toDays(); } private String calculateCurrentTerm(final int days) { @@ -127,11 +137,12 @@ private String calculateCurrentTerm(final int days) { return String.valueOf(result); } - private List parseToActivityReportResponse(final List activityReports) { + private List parseToActivityReportResponse( + final List activityReports) { Map>> groupedData = activityReports.stream().collect( - Collectors.groupingBy(activityReport -> activityReport.getClub().getName(), - Collectors.groupingBy(ActivityReport::getTerm, - Collectors.mapping(ActivityReport::getId, Collectors.toList())))); + Collectors.groupingBy(activityReport -> activityReport.getClub().getName(), + Collectors.groupingBy(ActivityReport::getTerm, + Collectors.mapping(ActivityReport::getId, Collectors.toList())))); return groupedData.entrySet().stream().flatMap(entry -> { String clubName = entry.getKey(); @@ -139,8 +150,9 @@ private List parseToActivityReportResponse(final List return termMap.entrySet().stream().map(termEntry -> { String term = termEntry.getKey(); - List activityReportDtos = termEntry.getValue().stream().map(ActivityReportDto::new) - .collect(Collectors.toList()); + List activityReportDtos = termEntry.getValue().stream() + .map(ActivityReportDto::new) + .collect(Collectors.toList()); return AllActivityReportResponse.of(clubName, term, activityReportDtos); }); diff --git a/src/main/java/ddingdong/ddingdongBE/domain/club/service/ClubMemberService.java b/src/main/java/ddingdong/ddingdongBE/domain/club/service/ClubMemberService.java index 91c26189..a2d2156b 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/club/service/ClubMemberService.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/club/service/ClubMemberService.java @@ -7,9 +7,7 @@ import ddingdong.ddingdongBE.domain.club.entity.ClubMember; import ddingdong.ddingdongBE.domain.club.repository.ClubMemberRepository; import ddingdong.ddingdongBE.domain.club.repository.ClubRepository; -import java.util.Collections; import java.util.List; -import java.util.stream.Collectors; import javax.transaction.Transactional; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; diff --git a/src/main/java/ddingdong/ddingdongBE/file/service/FileService.java b/src/main/java/ddingdong/ddingdongBE/file/service/FileService.java index 681500c0..17089c05 100644 --- a/src/main/java/ddingdong/ddingdongBE/file/service/FileService.java +++ b/src/main/java/ddingdong/ddingdongBE/file/service/FileService.java @@ -10,6 +10,7 @@ import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; @@ -19,6 +20,7 @@ public class FileService { private final FileInformationService fileInformationService; private final FileStore fileStore; + public void uploadFile(Long parentId, List files, FileTypeCategory fileTypeCategory, FileDomainCategory fileDomainCategory) { if (files != null && !files.isEmpty()) { List uploadFileDtos = fileStore.storeFile(files, fileTypeCategory.getFileType(), fileDomainCategory.getFileDomain());