Skip to content

Commit

Permalink
refactor(Email): 미사용 메소드 제거 및 코드 포맷 통일
Browse files Browse the repository at this point in the history
  • Loading branch information
limehee committed Oct 1, 2024
1 parent 18f48cd commit f2704ac
Showing 1 changed file with 10 additions and 60 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,58 +3,25 @@
import jakarta.mail.MessagingException;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FilenameUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import org.thymeleaf.context.Context;
import org.thymeleaf.spring6.SpringTemplateEngine;
import page.clab.api.domain.memberManagement.member.domain.Member;
import page.clab.api.external.memberManagement.member.application.port.ExternalRetrieveMemberUseCase;
import page.clab.api.global.common.email.domain.EmailTemplateType;
import page.clab.api.global.common.email.dto.request.EmailDto;
import page.clab.api.global.common.email.exception.MessageSendingFailedException;
import page.clab.api.global.config.EmailTemplateProperties;
import page.clab.api.global.util.FileUtil;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

@Service
@RequiredArgsConstructor
@Slf4j
public class EmailService {

private final ExternalRetrieveMemberUseCase externalRetrieveMemberUseCase;
private final SpringTemplateEngine springTemplateEngine;
private final EmailAsyncService emailAsyncService;
private final EmailTemplateProperties emailTemplateProperties;

@Value("${resource.file.path}")
private String filePath;

public List<String> broadcastEmail(EmailDto emailDto, List<MultipartFile> multipartFiles) {
List<File> convertedFiles = multipartFiles != null && !multipartFiles.isEmpty()
? convertMultipartFiles(multipartFiles)
: new ArrayList<>();

List<String> successfulAddresses = Collections.synchronizedList(new ArrayList<>());

emailDto.getTo().parallelStream().forEach(address -> {
try {
Member recipient = externalRetrieveMemberUseCase.findByEmail(address);
String emailContent = generateEmailContent(emailDto, recipient.getName());
emailAsyncService.sendEmailAsync(address, emailDto.getSubject(), emailContent, convertedFiles, emailDto.getEmailTemplateType());
successfulAddresses.add(address);
} catch (MessagingException e) {
throw new MessageSendingFailedException(address + "에게 이메일을 보내는데 실패했습니다.");
}
});
return successfulAddresses;
}
private final SpringTemplateEngine springTemplateEngine;

public void sendAccountCreationEmail(Member member, String password) {
EmailTemplateProperties.Template template = emailTemplateProperties.getTemplate(EmailTemplateType.ACCOUNT_CREATION);
Expand Down Expand Up @@ -103,11 +70,19 @@ public void sendPasswordResetCodeEmail(Member member, String code) {

public void sendNewPasswordEmail(Member member, String newPassword) {
EmailTemplateProperties.Template template = emailTemplateProperties.getTemplate(EmailTemplateType.NEW_PASSWORD);

String subject = template.getSubject();
String content = template.getContent()
.replace("{{id}}", member.getId())
.replace("{{password}}", newPassword);

EmailDto emailDto = EmailDto.create(List.of(member.getEmail()), template.getSubject(), content, EmailTemplateType.NEW_PASSWORD);
EmailDto emailDto = EmailDto.create(
List.of(member.getEmail()),
subject,
content,
EmailTemplateType.NEW_PASSWORD
);

try {
String emailContent = generateEmailContent(emailDto, member.getName());
emailAsyncService.sendEmailAsync(member.getEmail(), emailDto.getSubject(), emailContent, null, emailDto.getEmailTemplateType());
Expand All @@ -116,31 +91,6 @@ public void sendNewPasswordEmail(Member member, String newPassword) {
}
}

private List<File> convertMultipartFiles(List<MultipartFile> multipartFiles) {
List<File> convertedFiles = new ArrayList<>();
for (MultipartFile multipartFile : multipartFiles) {
File file = convertMultipartFileToFile(multipartFile);
convertedFiles.add(file);
}
return convertedFiles;
}

private File convertMultipartFileToFile(MultipartFile multipartFile) {
String originalFilename = multipartFile.getOriginalFilename();
String extension = FilenameUtils.getExtension(originalFilename);
String path = filePath + File.separator + "temp" + File.separator + FileUtil.makeFileName(extension);
path = path.replace("/", File.separator).replace("\\", File.separator);
File file = new File(path);
FileUtil.ensureParentDirectoryExists(file, filePath);

try {
multipartFile.transferTo(file);
} catch (IOException e) {
throw new RuntimeException("Failed to convert MultipartFile to File", e);
}
return file;
}

private String generateEmailContent(EmailDto emailDto, String name) {
Context context = new Context();
context.setVariable("title", emailDto.getSubject());
Expand Down

0 comments on commit f2704ac

Please sign in to comment.