Skip to content
Merged
Changes from all 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
Original file line number Diff line number Diff line change
Expand Up @@ -146,10 +146,7 @@ public SnsEventResponseDTO.CreateSnsEventResponse createSnsEvent(
SnsEvent savedSnsEvent = snsEventRepository.save(createdSnsEvent);

// PDF, DOCX파일 바이트 배열로 생성 및 썸네일 생성 & 업로드 / DB에 keyName저장
String thumbnailKeyName = createAndUploadListFileAndThumbnail(
request,
savedSnsEvent
);
String thumbnailKeyName = createAndUploadListFileAndThumbnail(savedSnsEvent);

// sns event 썸네일 key name 초기화
savedSnsEvent.initThumbnailKeyName(thumbnailKeyName);
Expand Down Expand Up @@ -216,8 +213,13 @@ public void updateSnsEventTitle(
}

snsEvent.updateTitle(request.getTitle());
snsEventRepository.save(snsEvent);
SnsEvent savedSnsEvent = snsEventRepository.save(snsEvent);

// S3문서 제목, S3 문서내 제목, 썸네일 이미지의 제목 변경
deleteS3FileAndThumnailImage(savedSnsEvent);
String thumbnailKeyName = createAndUploadListFileAndThumbnail(savedSnsEvent);
// sns event 썸네일 key name 초기화
savedSnsEvent.initThumbnailKeyName(thumbnailKeyName);
}

@Override
Expand All @@ -236,7 +238,8 @@ public void deleteSnsEvent(
throw new SnsEventHandler(SNS_EVENT_NO_AUTHORITY);
}
snsEventRepository.delete(snsEvent);

// S3의 문서 및 썸네일 이미지 삭제
deleteS3FileAndThumnailImage(snsEvent);
}

@Override
Expand All @@ -255,13 +258,13 @@ public SnsEventResponseDTO.ListDownLoadLinkResponse downloadList(
if (keyName == null || keyName.isEmpty()) {
throw new SnsEventHandler(SNS_EVENT_LIST_KEYNAME_NOT_FOUND);
}
downloadLink = amazonS3Manager.generatePresignedUrlForDownloadPdfAndWord(keyName, snsEventTitle + "_participnat_list.pdf");
downloadLink = amazonS3Manager.generatePresignedUrlForDownloadPdfAndWord(keyName, snsEventTitle + "_참여자_리스트.pdf");
} else if (format == Format.DOCX) {
String keyName = snsEvent.getKeyNameParticipantWord();
if (keyName == null || keyName.isEmpty()) {
throw new SnsEventHandler(SNS_EVENT_LIST_KEYNAME_NOT_FOUND);
}
downloadLink = amazonS3Manager.generatePresignedUrlForDownloadPdfAndWord(keyName, snsEventTitle + "_participnat_list.docx");
downloadLink = amazonS3Manager.generatePresignedUrlForDownloadPdfAndWord(keyName, snsEventTitle + "_참여자_리스트.docx");
} else {
throw new SnsEventHandler(SNS_EVENT_WRONG_FORMAT);
}
Expand All @@ -271,13 +274,13 @@ public SnsEventResponseDTO.ListDownLoadLinkResponse downloadList(
if (keyName == null || keyName.isEmpty()) {
throw new SnsEventHandler(SNS_EVENT_LIST_KEYNAME_NOT_FOUND);
}
downloadLink = amazonS3Manager.generatePresignedUrlForDownloadPdfAndWord(keyName, snsEventTitle + "_winner_list.pdf");
downloadLink = amazonS3Manager.generatePresignedUrlForDownloadPdfAndWord(keyName, snsEventTitle + "_당첨자_리스트.pdf");
} else if (format == Format.DOCX) {
String keyName = snsEvent.getKeyNameWinnerWord();
if (keyName == null || keyName.isEmpty()) {
throw new SnsEventHandler(SNS_EVENT_LIST_KEYNAME_NOT_FOUND);
}
downloadLink = amazonS3Manager.generatePresignedUrlForDownloadPdfAndWord(keyName, snsEventTitle + "_winner_list.docx");
downloadLink = amazonS3Manager.generatePresignedUrlForDownloadPdfAndWord(keyName, snsEventTitle + "_당첨자_리스트.docx");
} else {
throw new SnsEventHandler(SNS_EVENT_WRONG_FORMAT);
}
Expand Down Expand Up @@ -324,13 +327,9 @@ private String createListHtml(
} else {
throw new SnsEventHandler(SNS_EVENT_WRONG_FORMAT);
}

}

private String createAndUploadListFileAndThumbnail(
SnsEventRequestDTO.CreateSnsRequest request,
SnsEvent snsEvent
){
private String createAndUploadListFileAndThumbnail(SnsEvent snsEvent){
String listHtmlParticipant = createListHtml(snsEvent, ListType.PARTICIPANT);
String listHtmlWinner = createListHtml(snsEvent, ListType.WINNER);
byte[] pdfBytesParticipant;
Expand All @@ -352,10 +351,10 @@ private String createAndUploadListFileAndThumbnail(
listHtmlWinner = fileConvertHelper.injectPageMarginStyle(listHtmlWinner);
byte[] shiftedPdfBytesParticipant = fileConvertHelper.convertHtmlToPdf(listHtmlParticipant, fontBytes);
byte[] shiftedPdfBytesWinner = fileConvertHelper.convertHtmlToPdf(listHtmlWinner, fontBytes);
pdfBytesParticipant = addPdfTitle(shiftedPdfBytesParticipant, request.getTitle(), fontBytes);
pdfBytesWinner = addPdfTitle(shiftedPdfBytesWinner, request.getTitle(), fontBytes);
docxBytesParticipant = createWord(ListType.PARTICIPANT, request.getTitle(), snsEvent);
docxBytesWinner = createWord(ListType.WINNER, request.getTitle(), snsEvent );
pdfBytesParticipant = addPdfTitle(shiftedPdfBytesParticipant, snsEvent.getTitle() + " 참여자 리스트", fontBytes);
pdfBytesWinner = addPdfTitle(shiftedPdfBytesWinner, snsEvent.getTitle() + " 당첨자 리스트", fontBytes);
docxBytesParticipant = createWord(ListType.PARTICIPANT, snsEvent.getTitle() + " 참여자 리스트", snsEvent);
docxBytesWinner = createWord(ListType.WINNER, snsEvent.getTitle() + " 당첨자 리스트", snsEvent );
} catch (Exception e) {
log.error("Error creating document: {}", e.getMessage());
throw new SnsEventHandler(SNS_EVENT_DOWNLOAD_LIST_ERROR);
Expand Down Expand Up @@ -487,7 +486,7 @@ private byte[] addPdfTitle(byte[] pdfBytes, String text, byte[] fontBytes) throw
for (int i = 1; i <= totalPages; i++) {
PdfContentByte over = stamper.getOverContent(i);
over.beginText();
over.setFontAndSize(bf, 28f); // 글씨 크게 (28pt)
over.setFontAndSize(bf, 26f); // 글씨 크게 (28pt)
// 페이지 폭 중앙 계산
float x = reader.getPageSize(i).getWidth() / 2;
// 페이지 상단에서 약간 내려오게 (70pt 여백)
Expand Down Expand Up @@ -631,4 +630,12 @@ private void addTitle(XWPFDocument doc, String titleText, int fontSize) {
run.setBold(true); // 굵게
run.addBreak(); // 제목과 표 사이 한 줄 띄움
}

private void deleteS3FileAndThumnailImage(SnsEvent snsEvent) {
amazonS3Manager.deleteFile(snsEvent.getKeyNameParticipantPdf());
amazonS3Manager.deleteFile(snsEvent.getKeyNameParticipantWord());
amazonS3Manager.deleteFile(snsEvent.getKeyNameWinnerPdf());
amazonS3Manager.deleteFile(snsEvent.getKeyNameWinnerWord());
amazonS3Manager.deleteFile(snsEvent.getThumbnailKeyName());
}
}