From a8b21cd919b76a548b77ef0ec2d8aee28c8e6b0e Mon Sep 17 00:00:00 2001
From: wayne <wayne8692wayne8692@gmail.com>
Date: 星期二, 23 十一月 2021 10:41:56 +0800
Subject: [PATCH] [update] 修正發送OTP api,將兩個發送方式並成同一個

---
 pamapi/src/main/java/com/pollex/pam/web/rest/OtpResource.java |   40 ++++++++++++----------------------------
 1 files changed, 12 insertions(+), 28 deletions(-)

diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/OtpResource.java b/pamapi/src/main/java/com/pollex/pam/web/rest/OtpResource.java
index bb55739..6308dac 100644
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/OtpResource.java
+++ b/pamapi/src/main/java/com/pollex/pam/web/rest/OtpResource.java
@@ -1,15 +1,13 @@
 package com.pollex.pam.web.rest;
 
 import com.pollex.pam.config.ApplicationProperties;
+import com.pollex.pam.enums.OtpLoginTypeEnum;
 import com.pollex.pam.security.jwt.JWTFilter;
 import com.pollex.pam.security.jwt.TokenProvider;
 import com.pollex.pam.security.token.OtpAuthenticationToken;
 import com.pollex.pam.service.OtpWebService;
 import com.pollex.pam.service.dto.OtpResponseDTO;
-import com.pollex.pam.web.rest.vm.OtpAccount;
-import com.pollex.pam.web.rest.vm.OtpEmailLoginVM;
-import com.pollex.pam.web.rest.vm.OtpSMSLoginVM;
-import com.pollex.pam.web.rest.vm.VerifyOtpVM;
+import com.pollex.pam.web.rest.vm.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -22,14 +20,8 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.xml.rpc.ServiceException;
-import java.nio.charset.Charset;
-import java.nio.charset.StandardCharsets;
 import java.rmi.RemoteException;
-import java.util.Arrays;
-import java.util.Random;
 import java.util.UUID;
-
-import static java.nio.charset.StandardCharsets.UTF_8;
 
 @RestController
 @RequestMapping("/api/otp")
@@ -49,29 +41,21 @@
     @Autowired
     TokenProvider tokenProvider;
 
-    @PostMapping("/byPhone")
-    public ResponseEntity<Object> sendOtpByPhone(@RequestBody OtpSMSLoginVM login) {
+    @PostMapping("/sendOtp")
+    public ResponseEntity<Object> sendOtp(@RequestBody OtpLoginVM login) {
         try {
             if(applicationProperty.isMockLogin()) {
-                return new ResponseEntity<>(getMockOtpResponse(), HttpStatus.OK);
+                return new ResponseEntity<>(getMockSendOtpResponse(), HttpStatus.OK);
             }
 
-            OtpResponseDTO otpResponseDTO = otpWebService.sendByPhone(login.getPhone());
-            return new ResponseEntity<>(otpResponseDTO, HttpStatus.OK);
-        } catch (ServiceException | RemoteException e) {
-            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("connecting otp web service error");
-        }
-    }
-
-    @PostMapping("/byEmail")
-    public ResponseEntity<Object> sendOtpByEmail(@RequestBody OtpEmailLoginVM login) {
-        try {
-            if(applicationProperty.isMockLogin()) {
-                return new ResponseEntity<>(getMockOtpResponse(), HttpStatus.OK);
+            if(login.getLoginType() == OtpLoginTypeEnum.SMS) {
+                return new ResponseEntity<>(otpWebService.sendByPhone(login.getAccount()), HttpStatus.OK);
+            }
+            else if(login.getLoginType() == OtpLoginTypeEnum.EMAIL) {
+                return new ResponseEntity<>(otpWebService.sendByEmail(login.getAccount()), HttpStatus.OK);
             }
 
-            OtpResponseDTO otpResponseDTO = otpWebService.sendByEmail(login.getEmail());
-            return new ResponseEntity<>(otpResponseDTO, HttpStatus.OK);
+            return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("can not support this login type, loginType = " + login.getLoginType().name());
         } catch (ServiceException | RemoteException e) {
             return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("connecting otp web service error");
         }
@@ -93,7 +77,7 @@
         return new ResponseEntity<>(new UserJWTController.JWTToken(jwt), httpHeaders, HttpStatus.OK);
     }
 
-    private OtpResponseDTO getMockOtpResponse() {
+    private OtpResponseDTO getMockSendOtpResponse() {
         String indexKey = UUID.randomUUID().toString().substring(0, 8);
         return new OtpResponseDTO(new String[]{indexKey, "0", "", ""});
     }

--
Gitblit v1.8.0