pamapi/src/doc/滿意度/顧問主動發送滿意度通知API.txt | ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程 | |
pamapi/src/main/java/com/pollex/pam/service/ConsultantService.java | ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程 | |
pamapi/src/main/java/com/pollex/pam/web/rest/ConsultantResource.java | ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程 | |
pamapi/src/main/resources/i18n/messages.properties | ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程 | |
pamapi/src/main/resources/i18n/messages_zh_TW.properties | ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程 | |
pamapi/src/main/resources/templates/mail/writeSatisfactionNotice.html | ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程 |
pamapi/src/doc/º¡·N«×/ÅU°Ý¥D°Êµo°eº¡·N«×³qª¾API.txt
¤ñ¹ï·sÀÉ®× @@ -0,0 +1 @@ http://localhost:8080/api/consultant/sendSatisfactionToClient/{appointmentId} pamapi/src/main/java/com/pollex/pam/service/ConsultantService.java
@@ -1,6 +1,7 @@ package com.pollex.pam.service; import com.pollex.pam.config.ApplicationProperties; import com.pollex.pam.domain.Appointment; import com.pollex.pam.domain.AppointmentCustomerView; import com.pollex.pam.domain.Consultant; import com.pollex.pam.domain.CustomerFavoriteConsultant; @@ -20,6 +21,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; import org.thymeleaf.context.Context; import org.thymeleaf.spring5.SpringTemplateEngine; import java.io.File; import java.io.FileInputStream; @@ -35,6 +39,7 @@ import static com.pollex.pam.enums.ContactStatusEnum.*; @Service @Transactional public class ConsultantService { private static final Logger log = LoggerFactory.getLogger(ConsultantService.class); @@ -65,6 +70,18 @@ @Autowired ApplicationProperties applicationProperty; @Autowired SendMsgService sendMsgService; @Autowired SpringTemplateEngine springTemplateEngine; @Autowired ApplicationProperties applicationProperties; @Autowired ConsultantService consultantService; public List<CustomerFavoriteConsultantDTO> getMyConsultantList() { Long customerId = SecurityUtils.getCustomerDBId(); @@ -236,4 +253,39 @@ return null; } } public void sendSatisfactionToClient(Appointment appointment) { String subject = "滿æåº¦å¡«å¯«éç¥"; if(StringUtils.hasText(appointment.getEmail())) { String content = genSendSatisfactionEmailContent(appointment); sendMsgService.sendMsgByEmail(appointment.getEmail(), subject, content, true); }if(StringUtils.hasText(appointment.getPhone())) { String content = genSendSatisfactionSMSContent(appointment); sendMsgService.sendMsgBySMS(appointment.getPhone(), content); } } private String genSendSatisfactionSMSContent(Appointment appointment) { String agentNo = appointment.getAgentNo(); Consultant consultant = consultantService.findByAgentNo(agentNo); String contsultantName = consultant.getName(); String content = contsultantName+"é¡§åè«æ¨å¡«å¯«ä¿èª åªåå¹³å°ç滿æåº¦è©æ¯"+getSendSatisfactionToClientUrl(appointment.getId()); return content; } private String genSendSatisfactionEmailContent(Appointment appointment) { String agentNo = appointment.getAgentNo(); Consultant consultant = consultantService.findByAgentNo(agentNo); Context context = new Context(); context.setVariable("consultantName", consultant.getName()); context.setVariable("appointmentUrl", getSendSatisfactionToClientUrl(appointment.getId())); String content = springTemplateEngine.process("mail/writeSatisfactionNotice", context); return content; } public String getSendSatisfactionToClientUrl(Long appointmentId) { return applicationProperties.getFrontEndDomain() + "/?appointmentId=" + appointmentId; } } pamapi/src/main/java/com/pollex/pam/web/rest/ConsultantResource.java
@@ -1,7 +1,9 @@ package com.pollex.pam.web.rest; import com.pollex.pam.domain.Appointment; import com.pollex.pam.domain.Consultant; import com.pollex.pam.security.SecurityUtils; import com.pollex.pam.service.AppointmentService; import com.pollex.pam.service.ConsultantService; import com.pollex.pam.service.dto.*; import org.apache.commons.compress.utils.IOUtils; @@ -27,6 +29,9 @@ @Autowired ConsultantService consultantService; @Autowired AppointmentService appointmentService; @GetMapping("/favorite") public ResponseEntity<List<CustomerFavoriteConsultantDTO>> getMyConsultantList() { @@ -115,4 +120,14 @@ Consultant editResult = consultantService.editConsultant(editDTO); return new ResponseEntity<>(editResult, HttpStatus.OK); } @PostMapping("/sendSatisfactionToClient/{appointmentId}") public ResponseEntity<Void> sendSatisfactionToClient(@PathVariable Long appointmentId) { Appointment appointment = appointmentService.findById(appointmentId); if(!appointment.getAgentNo().equals(SecurityUtils.getAgentNo())) { throw new IllegalAccessError(); } consultantService.sendSatisfactionToClient(appointment); return ResponseEntity.noContent().build(); } } pamapi/src/main/resources/i18n/messages.properties
@@ -19,3 +19,6 @@ email.reset.greeting=Dear {0} email.reset.text1=For your pamapi account a password reset was requested, please click on the URL below to reset it: email.reset.text2=Regards, # satisfaction write email email.write.satisfaction.content={0}\u9867\u554F\u8ACB\u60A8\u586B\u5BEB\u4FDD\u8AA0\u5A92\u5408\u5E73\u53F0\u7684\u6EFF\u610F\u5EA6\u8A55\u6BD4{1} pamapi/src/main/resources/i18n/messages_zh_TW.properties
@@ -19,3 +19,6 @@ email.reset.greeting=\u89AA\u611B\u7684 {0} email.reset.text1=\u60A8\u7684 pamapi \u5E33\u865F\u88AB\u8981\u6C42\u91CD\u65B0\u8A2D\u5B9A\u5BC6\u78BC\uFF0C\u8ACB\u9EDE\u4E0B\u5217\u7DB2\u5740\u8A2D\u5B9A: email.reset.text2=\u795D\u60A8\u4F7F\u7528\u6109\u5FEB\uFF0C # satisfaction write email email.write.satisfaction.content={0}\u9867\u554F\u8ACB\u60A8\u586B\u5BEB\u4FDD\u8AA0\u5A92\u5408\u5E73\u53F0\u7684\u6EFF\u610F\u5EA6\u8A55\u6BD4{1} pamapi/src/main/resources/templates/mail/writeSatisfactionNotice.html
¤ñ¹ï·sÀÉ®× @@ -0,0 +1,10 @@ <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org" lang="zh"> <head> <title>滿æåº¦å¡«å¯«éç¥</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <p th:text="#{email.write.satisfaction.content(${consultantName},${appointmentUrl})}">é¡§åè«æ¨å¡«å¯«ä¿èª åªåå¹³å°ç滿æåº¦è©æ¯</p> </body> </html>