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