From 653566dd3199a36fcff30ea9b9f31087e59ce3ed Mon Sep 17 00:00:00 2001 From: Jack <jack.su@pollex.com.tw> Date: 星期四, 25 十一月 2021 21:32:39 +0800 Subject: [PATCH] [UPDATE] 新增重複帳號註冊的檢核,直接拋出500的錯誤訊息 [UPDATE] 調整dev設定檔(auto-commit=false),解決mvnw jdbc連線失敗的問題 --- pamapi/src/main/java/com/pollex/pam/service/CustomerService.java | 39 +++++++++++++++++++++++++++++---------- 1 files changed, 29 insertions(+), 10 deletions(-) diff --git a/pamapi/src/main/java/com/pollex/pam/service/CustomerService.java b/pamapi/src/main/java/com/pollex/pam/service/CustomerService.java index 30561b9..2fd1590 100644 --- a/pamapi/src/main/java/com/pollex/pam/service/CustomerService.java +++ b/pamapi/src/main/java/com/pollex/pam/service/CustomerService.java @@ -1,5 +1,7 @@ package com.pollex.pam.service; +import java.util.Optional; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Service; @@ -32,16 +34,33 @@ } public String registerCustomer(CustomerRegisterDTO registDTO) { - String account = registDTO.getContactType() == OtpLoginTypeEnum.EMAIL?registDTO.getEmail():registDTO.getPhone(); - OtpTmp otpTmp = otpTmpService.findByAccountAndIndexKey(account, registDTO.getIndexKey()); - if(otpTmp.getStatus() == OtpTmpStatusEnum.VERRIFIED) { - Customer customer = customerDTOMapper.toCustomer(registDTO); - save(customer); - String jwt = customerAuthService.authorize(account, registDTO.getIndexKey(), registDTO.getOtpCode()); - return jwt; - }else { - throw new UsernameNotFoundException("Otp record not found"); - } + 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); + save(customer); + String jwt = customerAuthService.authorize(account, registDTO.getIndexKey(), registDTO.getOtpCode()); + return jwt; + }else { + throw new UsernameNotFoundException("Otp record not found"); + } + } } + + private String getCustomerAccount(CustomerRegisterDTO registDTO) { + return registDTO.getContactType() == OtpLoginTypeEnum.EMAIL?registDTO.getEmail():registDTO.getPhone(); + } + + private boolean checkCustomerExist(CustomerRegisterDTO registDTO) { + String account = getCustomerAccount(registDTO); + Optional<Customer> customer = customerRepository.findOneByEmailEqualsOrPhoneEquals(account, account); + return customer.isPresent(); + } } -- Gitblit v1.8.0