保誠-保戶業務員媒合平台
Jack
2021-11-29 13ae6947a48f4c061b1a6479df889fa2aaf07099
pamapi/src/main/java/com/pollex/pam/service/CustomerService.java
@@ -2,6 +2,9 @@
import java.util.Optional;
import com.pollex.pam.security.SecurityUtils;
import com.pollex.pam.service.dto.CustomerDTO;
import com.pollex.pam.service.mapper.CustomerMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
@@ -18,31 +21,34 @@
@Service
@Transactional
public class CustomerService {
   @Autowired
   CustomerRepository customerRepository;
   @Autowired
    CustomerDTOMapper customerDTOMapper;
   @Autowired
   CustomerAuthService customerAuthService;
   @Autowired
   OtpTmpService otpTmpService;
    @Autowired
    CustomerMapper customerMapper;
   public Customer save(Customer customer) {
      return customerRepository.save(customer);
   }
   public Customer registerCustomer(CustomerRegisterDTO registDTO) {
      boolean isCustomerExist = checkCustomerExist(registDTO);
      if(isCustomerExist) {
         throw new UsernameAlreadyUsedException();
      }else {
         String account = getCustomerAccount(registDTO);
         OtpTmp otpTmp = otpTmpService.findByAccountAndIndexKey(account, registDTO.getIndexKey());
          if(otpTmp.getStatus() == OtpTmpStatusEnum.VERRIFIED) {
             Customer customer = customerDTOMapper.toCustomer(registDTO);
@@ -54,9 +60,28 @@
                   + " => status: " + otpTmp.getStatus());
          }
      }
   }
    public void updateLoggedCustomer(CustomerDTO customerDTO) {
        Long customerId = SecurityUtils.getCustomerDBId();
        Customer customer = customerRepository.findById(customerId)
            .orElseThrow(() -> new UsernameNotFoundException("customerId which is from token is not found in customer db table, customer id = " + customerId));
        customer.setEmail(customerDTO.getEmail());
        customer.setPhone(customerDTO.getPhone());
        customer.setName(customerDTO.getName());
        customerRepository.save(customer);
    }
    public CustomerDTO getLoggedCustomerDTO() {
        Long customerId = SecurityUtils.getCustomerDBId();
        Customer customer = customerRepository.findById(customerId)
            .orElseThrow(() -> new UsernameNotFoundException("customerId which is from token is not found in customer db table, customer id = " + customerId));
        return customerMapper.toDto(customer);
    }
   private String getCustomerAccount(CustomerRegisterDTO registDTO) {
      return registDTO.getContactType() == OtpLoginTypeEnum.EMAIL?registDTO.getEmail():registDTO.getPhone();
   }