From a3716f72066d25d745f4d5103ff23a553c3e102b Mon Sep 17 00:00:00 2001 From: wayne <wayne8692wayne8692@gmail.com> Date: 星期四, 17 二月 2022 11:41:19 +0800 Subject: [PATCH] Merge branch 'sit' into uat --- pamapi/src/main/java/com/pollex/pam/service/PersonalNotificationService.java | 159 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 159 insertions(+), 0 deletions(-) diff --git a/pamapi/src/main/java/com/pollex/pam/service/PersonalNotificationService.java b/pamapi/src/main/java/com/pollex/pam/service/PersonalNotificationService.java new file mode 100644 index 0000000..3fa7b67 --- /dev/null +++ b/pamapi/src/main/java/com/pollex/pam/service/PersonalNotificationService.java @@ -0,0 +1,159 @@ +package com.pollex.pam.service; + +import java.time.Instant; +import java.util.List; + +import javax.management.Notification; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; + +import com.pollex.pam.domain.Appointment; +import com.pollex.pam.domain.Consultant; +import com.pollex.pam.domain.Customer; +import com.pollex.pam.domain.PersonalNotification; +import com.pollex.pam.domain.Satisfaction; +import com.pollex.pam.enums.NotificationTypeEnum; +import com.pollex.pam.enums.PersonalNotificationRoleEnum; +import com.pollex.pam.repository.CustomerRepository; +import com.pollex.pam.repository.PersonalNotificationRepository; +import com.pollex.pam.security.SecurityUtils; +import com.pollex.pam.service.dto.AppointmentUpdateDTO; + +@Service +@Transactional +public class PersonalNotificationService { + + @Autowired + PersonalNotificationRepository personalNotificationRepository; + + @Autowired + ConsultantService consultantService; + + @Autowired + AppointmentService appointmentService; + + @Autowired + CustomerService customerService; + + @Autowired + CustomerRepository customerRepository; + + @Autowired + SatisfactionService satisfactionService; + + public List<PersonalNotification> getMyPersonalNotification(Long ownerId, PersonalNotificationRoleEnum role) { + return personalNotificationRepository.findAllByOwnerRoleAndOwnerId(role, ownerId); + } + + public void createSendSatisfactionToClientToCustomer(Appointment appointment) { + PersonalNotification entity = new PersonalNotification(); + Consultant consultant = consultantService.findByAgentNo(appointment.getAgentNo()); + String content = consultant.getName()+"憿批��憛怠神皛踵�漲閰��"; + entity.setContent(content); + entity.setNotificationType(NotificationTypeEnum.ACTIVITY); + entity.setOwnerId(appointment.getCustomerId()); + entity.setOwnerRole(PersonalNotificationRoleEnum.CUSTOMER); + entity.setTitle("憛怠神皛踵�漲"); + personalNotificationRepository.save(entity); + } + + public void createSendNoticeToCustomer(Long appointmentId) { + Appointment appointment = appointmentService.findById(appointmentId); + PersonalNotification entity = new PersonalNotification(); + Consultant consultant = consultantService.findByAgentNo(appointment.getAgentNo()); + String content = "���� "+consultant.getName()+"憿批���赤�"; + entity.setContent(content); + entity.setNotificationType(NotificationTypeEnum.ACTIVITY); + entity.setOwnerId(appointment.getCustomerId()); + entity.setOwnerRole(PersonalNotificationRoleEnum.CUSTOMER); + entity.setTitle("憿批��赤�"); + personalNotificationRepository.save(entity); + } + + public void createNotFillAppointmentSatisfactionNumberToCustomer(Long customerId, int notFillSatisfactionSum) { + PersonalNotification entity = new PersonalNotification(); + + String content = "���� "+notFillSatisfactionSum+" 蝑“���遛��漲��閬‵撖�"; + entity.setContent(content); + entity.setNotificationType(NotificationTypeEnum.ACTIVITY); + entity.setOwnerId(customerId); + entity.setOwnerRole(PersonalNotificationRoleEnum.CUSTOMER); + entity.setTitle("摰X皛踵�漲"); + personalNotificationRepository.save(entity); + } + + public void createEditConsultantToConsultant(Consultant consultant) { + PersonalNotification entity = new PersonalNotification(); + String content = "����犖撣唾�身摰歇�脰��"; + entity.setContent(content); + entity.setNotificationType(NotificationTypeEnum.ACTIVITY); + entity.setOwnerId(consultant.getId()); + entity.setOwnerRole(PersonalNotificationRoleEnum.CONSULTANT); + entity.setTitle("霈撣唾����"); + personalNotificationRepository.save(entity); + } + + public void createMarkAppointmentDeletedToConsultant(Appointment appointment) { + PersonalNotification entity = new PersonalNotification(); + Customer customer = customerRepository.findById(appointment.getCustomerId()).get(); + Consultant consultant = consultantService.findByAgentNo(appointment.getAgentNo()); + String content = customer.getName()+"摰X撌脣�������"; + entity.setContent(content); + entity.setNotificationType(NotificationTypeEnum.ACTIVITY); + entity.setOwnerId(consultant.getId()); + entity.setOwnerRole(PersonalNotificationRoleEnum.CONSULTANT); + entity.setTitle("��������"); + personalNotificationRepository.save(entity); + } + + public void createUpdateAppointmentToConsultant(Appointment appointment) { + PersonalNotification entity = new PersonalNotification(); + Customer customer = customerRepository.findById(appointment.getCustomerId()).get(); + Consultant consultant = consultantService.findByAgentNo(appointment.getAgentNo()); + String content = customer.getName()+"摰X撌脫���������"; + entity.setContent(content); + entity.setNotificationType(NotificationTypeEnum.ACTIVITY); + entity.setOwnerId(consultant.getId()); + entity.setOwnerRole(PersonalNotificationRoleEnum.CONSULTANT); + entity.setTitle("��������"); + personalNotificationRepository.save(entity); + } + + public void createScorefactionToConsultant(Satisfaction satisfaction) { + PersonalNotification entity = new PersonalNotification(); + Appointment appointment = appointmentService.findById(satisfaction.getAppointmentId()); + Customer customer = customerRepository.findById(appointment.getCustomerId()).get(); + Consultant consultant = consultantService.findByAgentNo(appointment.getAgentNo()); + String content = customer.getName()+"摰X撌脣��脰�遛��漲閰��"; + entity.setContent(content); + entity.setNotificationType(NotificationTypeEnum.ACTIVITY); + entity.setOwnerId(consultant.getId()); + entity.setOwnerRole(PersonalNotificationRoleEnum.CONSULTANT); + entity.setTitle("摰X皛踵�漲"); + personalNotificationRepository.save(entity); + } + + public void readAllMyNotification() { + if(StringUtils.hasText(SecurityUtils.getAgentNo())) { + Long consultantId = consultantService.findByAgentNo(SecurityUtils.getAgentNo()).getId(); + readAllNotification(PersonalNotificationRoleEnum.CONSULTANT, consultantId); + }else if(SecurityUtils.getCustomerDBId()!=null){ + readAllNotification(PersonalNotificationRoleEnum.CUSTOMER, SecurityUtils.getCustomerDBId()); + } + } + + public void readAllNotification(PersonalNotificationRoleEnum ownerRole + , Long ownerId) { + List<PersonalNotification> allNotification = personalNotificationRepository.findAllByOwnerRoleAndOwnerId(ownerRole, ownerId); + Instant today = Instant.now(); + allNotification.stream() + .filter(notification -> notification.getReadDate()==null) + .forEach(notification ->{ + notification.setReadDate(today); + personalNotificationRepository.saveAll(allNotification); + }); + } +} -- Gitblit v1.8.0