From 82b5c11b7f3bb0f74c108fe2c06721968ae2b5da Mon Sep 17 00:00:00 2001
From: kaiyu <404897439@qq.com>
Date: Thu, 18 Mar 2021 17:23:14 +0800
Subject: [PATCH] common:     完成验证码工具类 生成校验

---
 screen-manage/src/main/java/com/moral/api/controller/LoginController.java   |  125 +++++++++++++++++++++++++++++++
 screen-manage/src/main/resources/application-dev.yml                        |    6 +
 screen-common/src/main/java/com/moral/pojo/VerificationCode.java            |   15 +++
 screen-common/src/main/java/com/moral/constant/Constants.java               |    1 
 screen-common/src/main/java/com/moral/util/KaptchaUtils.java                |   23 ++++-
 screen-manage/src/main/java/com/moral/api/controller/AccountController.java |   68 ++++-------------
 6 files changed, 178 insertions(+), 60 deletions(-)

diff --git a/screen-common/src/main/java/com/moral/constant/Constants.java b/screen-common/src/main/java/com/moral/constant/Constants.java
index f30292d..c9cb5f2 100644
--- a/screen-common/src/main/java/com/moral/constant/Constants.java
+++ b/screen-common/src/main/java/com/moral/constant/Constants.java
@@ -7,4 +7,5 @@
     public static String DELETE = "1";
 
     public static String NOT_DELETE = "0";
+
 }
diff --git a/screen-common/src/main/java/com/moral/pojo/VerificationCode.java b/screen-common/src/main/java/com/moral/pojo/VerificationCode.java
index f524a9f..03a2210 100644
--- a/screen-common/src/main/java/com/moral/pojo/VerificationCode.java
+++ b/screen-common/src/main/java/com/moral/pojo/VerificationCode.java
@@ -1,6 +1,7 @@
 package com.moral.pojo;
 
 import lombok.Data;
+import org.springframework.util.ObjectUtils;
 
 /**
  * @ClassName VerificationCode
@@ -14,5 +15,17 @@
 
     private String key;
 
-    private String value;
+    private String encode;
+
+    private String inputText;
+
+    public boolean valid(){
+        if (
+                ObjectUtils.isEmpty(key)        ||
+                ObjectUtils.isEmpty(inputText)  ||
+                        inputText.length()!=4
+                )
+            return false;
+        return true;
+    }
 }
diff --git a/screen-common/src/main/java/com/moral/util/KaptchaUtils.java b/screen-common/src/main/java/com/moral/util/KaptchaUtils.java
index 7a1abe4..e79f9e3 100644
--- a/screen-common/src/main/java/com/moral/util/KaptchaUtils.java
+++ b/screen-common/src/main/java/com/moral/util/KaptchaUtils.java
@@ -7,6 +7,7 @@
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
 import sun.misc.BASE64Encoder;
 
 import javax.annotation.Resource;
@@ -18,6 +19,7 @@
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.util.UUID;
+import java.util.concurrent.TimeUnit;
 
 /**
  * @ClassName KaptchaUtils
@@ -33,6 +35,9 @@
     private static DefaultKaptcha defaultKaptcha;
 
     private static RedisTemplate redisTemplate;
+
+    //������������������ ������������
+    private static final int validity_time = 60;
 
     @Autowired
     public void setRedisTemplate(RedisTemplate redisTemplate) {
@@ -54,6 +59,7 @@
      */
 
     public static VerificationCode createVerificationCode() throws IOException {
+        VerificationCode verificationCode = new VerificationCode();
         //���������������������
         String text = defaultKaptcha.createText();
         //������������
@@ -67,12 +73,19 @@
         String encode = encoder.encode(bytes);
         //������������������redis
         String key = UUID.randomUUID().toString();
-        //redisTemplate.opsForValsue().set(key,encode);
-        //redisTemplate.expire();
-        return null;
+        redisTemplate.opsForValue().set(key,text);
+        redisTemplate.expire(key,validity_time, TimeUnit.SECONDS);
+        verificationCode.setKey(key);
+        verificationCode.setEncode(encode);
+        return verificationCode;
     }
-    public boolean verify(String verificationCode) {
-       return false;
+    public static boolean verify(VerificationCode code) {
+        String key = code.getKey();
+        String inputText = code.getInputText();
+        String validText = (String) redisTemplate.opsForValue().get(key);
+        if(inputText.equals(validText))
+            return true;
+        return false;
     }
 
 
diff --git a/screen-manage/src/main/java/com/moral/api/controller/AccountController.java b/screen-manage/src/main/java/com/moral/api/controller/AccountController.java
index 3e194d4..ece5b58 100644
--- a/screen-manage/src/main/java/com/moral/api/controller/AccountController.java
+++ b/screen-manage/src/main/java/com/moral/api/controller/AccountController.java
@@ -37,55 +37,27 @@
     @Autowired
     ManageAccountService accountService;
 
-    @PostMapping("login")
-    public ResultMessage login(@RequestBody LoginForm loginForm) {
-        if (!loginForm.valid())
-            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
-                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
-
-        LoginDTO loginDTO = accountService.login(loginForm);
-
-        LoginVO loginVO = LoginVO.convert(loginDTO);
-
-        return new ResultMessage(loginDTO.getCode(),loginDTO.getMsg(),loginVO);
-    }
-
-
-    @PostMapping("logout")
-    public ResultMessage logout (@RequestBody LogoutForm logoutForm, HttpServletRequest request) {
-        if(!logoutForm.valid())
-            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
-                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
-        String token = request.getHeader("token");
-        logoutForm.setToken(token);
-
-        if(accountService.logout(logoutForm))
-            return ResultMessage.ok();
-        return ResultMessage.fail();
-
-    }
-
     @PostMapping("insert")
-    public ResultMessage insert(@RequestBody AccountInsertForm accountInsertForm){
-        if(!accountInsertForm.valid())
+    public ResultMessage insert(@RequestBody AccountInsertForm accountInsertForm) {
+        if (!accountInsertForm.valid())
             return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                     ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
         //������������������������������
         AccountInsertDTO conditionDTO = accountInsertForm.paramValid();
-        if(conditionDTO.getCode()!=ResponseCodeEnum.SUCCESS.getCode()){
-            return new ResultMessage(conditionDTO.getCode(),conditionDTO.getMsg(),null);
+        if (conditionDTO.getCode() != ResponseCodeEnum.SUCCESS.getCode()) {
+            return new ResultMessage(conditionDTO.getCode(), conditionDTO.getMsg(), null);
         }
 
         AccountInsertDTO accountInsertDTO = accountService.insertAccount(accountInsertForm);
 
         AccountInsertVO accountInsertVO = AccountInsertVO.convert(accountInsertDTO);
 
-        return new ResultMessage(accountInsertDTO.getCode(),accountInsertDTO.getMsg(),accountInsertVO);
+        return new ResultMessage(accountInsertDTO.getCode(), accountInsertDTO.getMsg(), accountInsertVO);
     }
 
     @GetMapping("query")
-    public ResultMessage query(AccountQueryForm accountQueryForm){
-        if(!accountQueryForm.valid())
+    public ResultMessage query(AccountQueryForm accountQueryForm) {
+        if (!accountQueryForm.valid())
             return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                     ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
 
@@ -93,32 +65,32 @@
 
         AccountQueryVO accountQueryVO = AccountQueryVO.convert(accountQueryDTO);
 
-        return new ResultMessage(accountQueryDTO.getCode(),accountQueryDTO.getMsg(),accountQueryVO);
+        return new ResultMessage(accountQueryDTO.getCode(), accountQueryDTO.getMsg(), accountQueryVO);
     }
 
 
     @PostMapping("update")
-    public ResultMessage update(@RequestBody AccountUpdateForm accountUpdateRequest){
-        if(!accountUpdateRequest.valid())
+    public ResultMessage update(@RequestBody AccountUpdateForm accountUpdateRequest) {
+        if (!accountUpdateRequest.valid())
             return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                     ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
 
         //������������������������������
         AccountUpdateDTO conditionDTO = accountUpdateRequest.paramValid();
-        if(conditionDTO.getCode()!=ResponseCodeEnum.SUCCESS.getCode()){
-            return new ResultMessage(conditionDTO.getCode(),conditionDTO.getMsg(),null);
+        if (conditionDTO.getCode() != ResponseCodeEnum.SUCCESS.getCode()) {
+            return new ResultMessage(conditionDTO.getCode(), conditionDTO.getMsg(), null);
         }
 
         AccountUpdateDTO accountUpdateDTO = accountService.updateAccount(accountUpdateRequest);
 
         AccountUpdateVO accountUpdateVO = AccountUpdateVO.convert(accountUpdateDTO);
 
-        return new ResultMessage(accountUpdateDTO.getCode(),accountUpdateDTO.getMsg(),accountUpdateVO);
+        return new ResultMessage(accountUpdateDTO.getCode(), accountUpdateDTO.getMsg(), accountUpdateVO);
     }
 
     @PostMapping("delete")
-    public ResultMessage delete(@RequestBody AccountDeleteForm accountDeleteForm){
-        if(!accountDeleteForm.valid())
+    public ResultMessage delete(@RequestBody AccountDeleteForm accountDeleteForm) {
+        if (!accountDeleteForm.valid())
             return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                     ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
 
@@ -126,16 +98,8 @@
 
         AccountDeleteVO accountDeleteVO = AccountDeleteVO.convert(accountDeleteDTO);
 
-        return new ResultMessage(accountDeleteDTO.getCode(),accountDeleteDTO.getMsg(),accountDeleteVO);
+        return new ResultMessage(accountDeleteDTO.getCode(), accountDeleteDTO.getMsg(), accountDeleteVO);
     }
-
-    @PostMapping("yanzhengma")
-    public String yanzhengma(HttpServletResponse response) throws IOException {
-        KaptchaUtils.createVerificationCode();
-        TokenUtils.getToken("1",1);
-        return null;
-    }
-
 
 
 }
diff --git a/screen-manage/src/main/java/com/moral/api/controller/LoginController.java b/screen-manage/src/main/java/com/moral/api/controller/LoginController.java
new file mode 100644
index 0000000..c705879
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/controller/LoginController.java
@@ -0,0 +1,125 @@
+package com.moral.api.controller;
+
+import com.moral.api.pojo.dto.login.LoginDTO;
+import com.moral.api.pojo.form.LoginForm;
+import com.moral.api.pojo.form.LogoutForm;
+import com.moral.api.pojo.vo.login.LoginVO;
+import com.moral.api.service.ManageAccountService;
+import com.moral.constant.ResponseCodeEnum;
+import com.moral.constant.ResultMessage;
+import com.moral.pojo.VerificationCode;
+import com.moral.util.KaptchaUtils;
+import io.swagger.annotations.Api;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.ObjectUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+
+/**
+ * @ClassName LoginController
+ * @Description TODO
+ * @Author ���������
+ * @Date 2021/3/18 15:28
+ * @Version TODO
+ **/
+@Slf4j
+@Api(tags = {"������������"})
+@RestController
+public class LoginController {
+    @Autowired
+    ManageAccountService accountService;
+
+    /**
+     * @Description: ������������
+     * @Param: [loginForm]
+     * @return: com.moral.constant.ResultMessage
+     * @Author: ���������
+     * @Date: 2021/3/18
+     */
+    @PostMapping("login")
+    public ResultMessage login(@RequestBody LoginForm loginForm) {
+        if (!loginForm.valid())
+            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
+                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+
+        LoginDTO loginDTO = accountService.login(loginForm);
+
+        LoginVO loginVO = LoginVO.convert(loginDTO);
+
+        return new ResultMessage(loginDTO.getCode(), loginDTO.getMsg(), loginVO);
+    }
+
+
+    /**
+     * @Description: ������������
+     * @Param: [logoutForm, request]
+     * @return: com.moral.constant.ResultMessage
+     * @Author: ���������
+     * @Date: 2021/3/18
+     */
+    @PostMapping("logout")
+    public ResultMessage logout(@RequestBody LogoutForm logoutForm, HttpServletRequest request) {
+        if (!logoutForm.valid())
+            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
+                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+        String token = request.getHeader("token");
+        logoutForm.setToken(token);
+
+        if (accountService.logout(logoutForm))
+            return ResultMessage.ok();
+        return ResultMessage.fail();
+    }
+
+    /**
+    * @Description: ���������������������������
+            * @Param: []
+            * @return: com.moral.constant.ResultMessage
+            * @Author: ���������
+            * @Date: 2021/3/18
+            */
+    @GetMapping
+    public ResultMessage verifyConfig(){
+
+        return null;
+    }
+
+    /**
+     * @Description: ���������������������
+     * @Param: []
+     * @return: com.moral.constant.ResultMessage
+     * @Author: ���������
+     * @Date: 2021/3/18
+     */
+    @GetMapping("verificationCode/get")
+    public ResultMessage getVerificationCode() {
+        VerificationCode verificationCode = null;
+        try {
+            verificationCode = KaptchaUtils.createVerificationCode();
+        } catch (IOException e) {
+            log.error(e.getMessage());
+        }
+        if(ObjectUtils.isEmpty(verificationCode))
+            return  ResultMessage.fail();
+        System.out.println(verificationCode.getEncode());
+        return ResultMessage.ok(verificationCode);
+    }
+
+    /**
+    * @Description: ���������������
+            * @Param: [verificationCode]
+            * @return: com.moral.constant.ResultMessage
+            * @Author: ���������
+            * @Date: 2021/3/18
+            */
+    @GetMapping("verificationCode/verify")
+    public ResultMessage gverifyVerificationCode(VerificationCode verificationCode) {
+        if(!verificationCode.valid())
+            return ResultMessage.fail();
+        if(KaptchaUtils.verify(verificationCode))
+            return ResultMessage.ok();
+        return ResultMessage.fail();
+    }
+}
diff --git a/screen-manage/src/main/resources/application-dev.yml b/screen-manage/src/main/resources/application-dev.yml
index 7aa5cab..6f70051 100644
--- a/screen-manage/src/main/resources/application-dev.yml
+++ b/screen-manage/src/main/resources/application-dev.yml
@@ -113,16 +113,18 @@
 mvc:
   interceptor:
     exclude:
-      - /account/login
+      - /login
       - /swagger-ui.html
       - /swagger-resources/**
       - /webjars/**
-      - /account/logout
+      - /logout
       - /account/insert
       - /account/query
       - /account/update
       - /account/delete
       - /account/yanzhengma
+      - /verificationCode/get
+      - /verificationCode/verify
 AES:
   KEY:
     AD42F7787B035B7580000EF93BE20BAD

--
Gitblit v1.8.0