diff --git a/src/main/java/com/tiki/server/email/emailsender/entity/MailSender.java b/src/main/java/com/tiki/server/email/emailsender/entity/MailSender.java index ade98ace..4f61d02e 100644 --- a/src/main/java/com/tiki/server/email/emailsender/entity/MailSender.java +++ b/src/main/java/com/tiki/server/email/emailsender/entity/MailSender.java @@ -3,8 +3,10 @@ import com.tiki.server.email.emailsender.exception.EmailSenderException; import com.tiki.server.email.emailsender.message.ErrorCode; import jakarta.mail.internet.MimeMessage; + import java.util.HashMap; import java.util.Map; + import lombok.RequiredArgsConstructor; import org.springframework.core.io.ClassPathResource; import org.springframework.mail.javamail.JavaMailSender; @@ -37,9 +39,16 @@ public void sendPasswordChangingMail(final String email, final String code, fina javaMailSender.send(message); } - public void sendTeamInvitationMail(final String email,final String senderName, final String teamName, final long teamId) { + public void sendTeamInvitationMail( + final String email, + final String senderName, + final String teamName, + final long teamId, + final long invitationId + ) { Map map = new HashMap<>(); - map.put("teamId", String.format("%d",teamId)); + map.put("teamId", String.format("%d", teamId)); + map.put("invitationId", String.format("%d", invitationId)); map.put("teamName", teamName); map.put("senderName", senderName); MimeMessage message = makeMessage(email, MAIL_INVITE_TEAM_MEMBER, INVITE_TEAM_MEMBER_TEMPLATE_NAME, map); diff --git a/src/main/java/com/tiki/server/email/emailsender/service/EmailSenderService.java b/src/main/java/com/tiki/server/email/emailsender/service/EmailSenderService.java index 677430fd..c29133c0 100644 --- a/src/main/java/com/tiki/server/email/emailsender/service/EmailSenderService.java +++ b/src/main/java/com/tiki/server/email/emailsender/service/EmailSenderService.java @@ -21,6 +21,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; @Slf4j @Service @@ -56,20 +57,22 @@ public void sendPasswordChanging(final EmailServiceRequest emailServiceRequest) emailVerificationSaver.save(emailVerification); } + @Transactional public void createTeamInvitation(final TeamInvitationCreateServiceRequest request) { MemberTeamManager memberTeamManager = memberTeamManagerFinder.findByMemberIdAndTeamId(request.senderId(), request.teamId()); memberTeamManager.checkMemberAccessible(Position.ADMIN); Team team = teamFinder.findById(request.teamId()); checkIsPresentTeamMember(request); + TeamInvitation teamInvitation = teamInvitationSaver.createTeamInvitation( + TeamInvitation.of(memberTeamManager.getName(), request.teamId(), request.targetEmail())); mailSender.sendTeamInvitationMail( request.targetEmail().getEmail(), memberTeamManager.getName(), team.getName(), - request.teamId() + request.teamId(), + teamInvitation.getId() ); - teamInvitationSaver.createTeamInvitation( - TeamInvitation.of(memberTeamManager.getName(), request.teamId(), request.targetEmail())); } private void checkIsPresentTeamMember(final TeamInvitationCreateServiceRequest request) { diff --git a/src/main/resources/templates/invitation.html b/src/main/resources/templates/invitation.html index 1f39262f..12bc6cfa 100644 --- a/src/main/resources/templates/invitation.html +++ b/src/main/resources/templates/invitation.html @@ -65,7 +65,7 @@

티키에서 더 편리해진 동아리 관리를 경험해보세요.

- 초대 수락하기 + 초대 수락하기