From 7eb57571830d0677857cea565b09c4f38d286b8d Mon Sep 17 00:00:00 2001 From: wayne <wayne8692wayne8692@gmail.com> Date: 星期三, 29 十二月 2021 10:31:36 +0800 Subject: [PATCH] [update] 調整預約單通知的簡訊與email文案,並重購SendMsgService --- pamapi/src/main/java/com/pollex/pam/service/AppointmentService.java | 84 +++++++++++++++++++++++++++++++++++++++++- 1 files changed, 82 insertions(+), 2 deletions(-) diff --git a/pamapi/src/main/java/com/pollex/pam/service/AppointmentService.java b/pamapi/src/main/java/com/pollex/pam/service/AppointmentService.java index ec045e3..ad552b0 100644 --- a/pamapi/src/main/java/com/pollex/pam/service/AppointmentService.java +++ b/pamapi/src/main/java/com/pollex/pam/service/AppointmentService.java @@ -6,8 +6,10 @@ import java.util.Optional; import java.util.stream.Collectors; -import com.pollex.pam.domain.Satisfaction; +import com.pollex.pam.config.ApplicationProperties; import com.pollex.pam.service.dto.AppointmentUpdateDTO; +import com.pollex.pam.web.rest.errors.SendEmailFailException; +import io.jsonwebtoken.lang.Assert; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -25,6 +27,9 @@ import com.pollex.pam.service.mapper.AppointmentCustomerViewMapper; import com.pollex.pam.service.mapper.AppointmentDTOMapper; import com.pollex.pam.web.rest.errors.AppointmentNotFoundException; +import org.springframework.util.StringUtils; +import org.thymeleaf.context.Context; +import org.thymeleaf.spring5.SpringTemplateEngine; import static com.pollex.pam.enums.AppointmentStatusEnum.AVAILABLE; import static com.pollex.pam.enums.AppointmentStatusEnum.DELETED; @@ -35,7 +40,9 @@ private static final Logger log = LoggerFactory.getLogger(AppointmentService.class); - @Autowired + private static final String NOTIFY_EMAIL_SUBJECT = "靽���像�蝟餌絞�嚗���"; + + @Autowired AppointmentRepository appointmentRepository; @Autowired @@ -52,6 +59,15 @@ @Autowired SatisfactionService satisfactionService; + + @Autowired + SendMsgService sendMsgService; + + @Autowired + ApplicationProperties applicationProperties; + + @Autowired + SpringTemplateEngine springTemplateEngine; public Appointment customerCreateAppointment(AppointmentCreateDTO appointmentCreateDTO) { Appointment appointment = appointmentDTOMapper.toAppointment(appointmentCreateDTO); @@ -155,4 +171,68 @@ consultantNotViewAppointments.forEach(appointment -> appointment.setConsultantViewTime(Instant.now())); appointmentRepository.saveAll(consultantNotViewAppointments); } + + public void sendAppointmentNotify(Appointment appointment) { + Assert.notNull(appointment, "appointment entity cannot be null"); + + log.debug("is need send appointment notify msg? = {}", applicationProperties.isSendNotifyMsg()); + if(applicationProperties.isSendNotifyMsg()) { + log.debug("sending appointment notify, appointmentId = {}", appointment.getId()); + sendAppointmentNotifyBySMS(appointment); + sendAppointmentNotifyByHtmlEmail(appointment); + } + } + + private void sendAppointmentNotifyBySMS(Appointment appointment) { + String msg = getAppointmentNotifyWording(appointment); + String consultantMobile = consultantService.findByAgentNo(appointment.getAgentNo()).getPhoneNumber(); + + try { + sendMsgService.sendMsgBySMS(consultantMobile, msg); + } catch (Exception e) { + log.warn("send appointment notify by sms was fail, appointment Id = {}", appointment.getId(), e); + } + } + + private String getAppointmentNotifyWording(Appointment appointment) { + String normalContent; + if(StringUtils.hasText(appointment.getPhone())) { + normalContent = "閬芣��“��憟踝����蝑�靽�犖憯賢��像��������恥�����Ⅳ�" + appointment.getPhone() + "\n\n"; + } + else { + normalContent = "閬芣��“��憟踝����蝑�靽�犖憯賢��像�����n\n"; + } + + String urlContent = "隢��雯��嚗�" + getAppointmentDetailUrl(appointment.getId()) + " ����蒂摰�蝯∟赤隢�����"; + return normalContent + urlContent; + } + + private void sendAppointmentNotifyByHtmlEmail(Appointment appointment) { + String senderEmail = applicationProperties.getEmail().getSenderEmail(); + String consultantEmail = consultantService.findByAgentNo(appointment.getAgentNo()).getEmail(); + String customerMobile = appointment.getPhone(); + String normalContent; + + if(StringUtils.hasText(customerMobile)) { + normalContent = "閬芣��“��憟踝����蝑�靽�犖憯賢��像��������恥�����Ⅳ�" + customerMobile + ""; + } + else { + normalContent = "閬芣��“��憟踝����蝑�靽�犖憯賢��像������"; + } + + Context context = new Context(); + context.setVariable("content", normalContent); + context.setVariable("urlHint", getAppointmentDetailUrl(appointment.getId())); + String content = springTemplateEngine.process("mail/appointmentNotifyEmail", context); + + try { + sendMsgService.sendMsgByEmail(senderEmail, consultantEmail, NOTIFY_EMAIL_SUBJECT, content, true); + } catch (SendEmailFailException e) { + log.warn("send email failed, appointment Id = {}", appointment.getId(), e); + } + } + + public String getAppointmentDetailUrl(Long appointmentId) { + return applicationProperties.getFrontEndDomain() + "/myAppointmentList/contactedList?appointmentId=" + appointmentId; + } } -- Gitblit v1.8.0