保誠-保戶業務員媒合平台
Jack
2022-01-18 2f57dcc8883b62a4e006c634dd945cb3c7ae63c9
[ADD] 顧問主動發送填寫滿意度通知
修改4個檔案
新增2個檔案
84 ■■■■■ 已變更過的檔案
pamapi/src/doc/滿意度/顧問主動發送滿意度通知API.txt 1 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/service/ConsultantService.java 52 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/web/rest/ConsultantResource.java 15 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/resources/i18n/messages.properties 3 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/resources/i18n/messages_zh_TW.properties 3 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/resources/templates/mail/writeSatisfactionNotice.html 10 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
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>