From 75a2623173bcc4a235aa1f99f7ef28519186160b Mon Sep 17 00:00:00 2001
From: yanghb <yanghb>
Date: 星期五, 21 四月 2023 11:24:25 +0800
Subject: [PATCH] 代码调整

---
 UserTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java |  176 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 167 insertions(+), 9 deletions(-)

diff --git a/UserTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java b/UserTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java
index 2bcee57..b202ba5 100644
--- a/UserTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java
+++ b/UserTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java
@@ -1,15 +1,16 @@
 package com.stylefeng.guns.modular.api;
 
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.stylefeng.guns.core.common.constant.JwtConstants;
 import com.stylefeng.guns.core.util.ToolUtil;
+import com.stylefeng.guns.modular.system.model.Driver;
 import com.stylefeng.guns.modular.system.model.UserInfo;
+import com.stylefeng.guns.modular.system.service.IDriverService;
 import com.stylefeng.guns.modular.system.service.ISmsrecordService;
 import com.stylefeng.guns.modular.system.service.IUserInfoService;
 import com.stylefeng.guns.modular.system.service.IVerifiedService;
-import com.stylefeng.guns.modular.system.util.RedisUtil;
-import com.stylefeng.guns.modular.system.util.ResultUtil;
-import com.stylefeng.guns.modular.system.util.WeChatUtil;
+import com.stylefeng.guns.modular.system.util.*;
 import com.stylefeng.guns.modular.system.warpper.LoginWarpper;
 import com.stylefeng.guns.modular.system.warpper.UserInfoWarpper;
 import com.stylefeng.guns.modular.system.warpper.VerifiedWarpper;
@@ -21,9 +22,12 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
+import java.util.*;
 
 /**
  * 用户控制器
@@ -48,6 +52,9 @@
     @Autowired
     private WeChatUtil weChatUtil;
 
+    @Autowired
+    private IDriverService driverService;
+
 
 
 
@@ -67,6 +74,8 @@
     public ResultUtil queryCaptcha(String phone, Integer type){
         if(ToolUtil.isNotEmpty(phone)){
             try {
+                phone = AESUtil.decrypt(phone);//对电话号码进行解密
+
                 return userInfoService.queryCaptcha(phone, type);
             }catch (Exception e){
                 e.printStackTrace();
@@ -75,6 +84,41 @@
         }else{
             return ResultUtil.paranErr();
         }
+    }
+
+
+    /**
+     * 获取图形验证码
+     */
+    @ResponseBody
+    @GetMapping("/base/getVerifyCodeUtils")
+    @ApiOperation(value = "获取图形验证码", tags = {"用户端-登录"}, notes = "")
+    @ApiImplicitParams({
+    })
+    public Object getVerifyCodeUtils(){
+        try {
+            String s = VerifyCodeUtils.generateVerifyCode(4);
+            File file = new File("/usr/local/server/VerifyCode/" + s + ".jpg");
+            if(!file.exists()){
+                file.createNewFile();
+                FileOutputStream out = new FileOutputStream(file);
+                VerifyCodeUtils.outputImage(100, 40, out, s);
+                file = new File("/usr/local/server/VerifyCode/" + s + ".jpg");
+                FileInputStream inputStream = new FileInputStream(file);
+                byte[] data = new byte[inputStream.available()];
+                inputStream.read(data);
+                inputStream.close();
+                String string = Base64.getEncoder().encodeToString(data);
+                Map<String, Object> map = new HashMap<>();
+                map.put("code", MD5AndKL.MD5(s.toLowerCase()));
+                map.put("img", string);
+                file.delete();
+                return ResultUtil.success(map);
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return ResultUtil.success();
     }
 
 
@@ -166,11 +210,17 @@
     @ApiImplicitParams({
             @ApiImplicitParam(value = "手机号码", name = "phone", required = true, dataType = "String"),
             @ApiImplicitParam(value = "登录端口-小程序传Applets", name = "loginType", required = false, dataType = "String"),
-            @ApiImplicitParam(value = "登录密码", name = "password", required = true, dataType = "String")
+            @ApiImplicitParam(value = "登录密码", name = "password", required = true, dataType = "String"),
+            @ApiImplicitParam(value = "短信验证码", name = "code", required = true, dataType = "String"),
     })
-    public ResultUtil<LoginWarpper> userLogin(String phone, String password,String loginType){
+    public ResultUtil<LoginWarpper> userLogin(String phone, String password,String loginType, String code){
         if(ToolUtil.isNotEmpty(phone) && ToolUtil.isNotEmpty(password)){
             try {
+                phone = AESUtil.decrypt(phone);//解密电话号码
+                boolean b = userInfoService.checkCaptcha(phone, code);
+                if(!b){
+                    return ResultUtil.error("验证码无效");
+                }
                 return userInfoService.userLogin(phone, password,loginType);
             }catch (Exception e){
                 e.printStackTrace();
@@ -457,7 +507,9 @@
                 return ResultUtil.tokenErr();
             }
             UserInfo userInfo = userInfoService.selectById(uid);
-            smsrecordService.saveData(4, userInfo.getPhone(), code, "短信验证码【" + code + "】已发到您的手机,验证码将在5分钟后失效,请及时登录!");
+            String phone1 = AESUtil.decrypt(userInfo.getPhone());//解密
+            smsrecordService.saveData(4, phone1, code, "短信验证码【" + code + "】已发到您的手机,验证码将在5分钟后失效,请及时登录!");
+            phone = AESUtil.decrypt(phone);//解密
             boolean b = userInfoService.checkCaptcha(phone, code);
             Map<String, Object> map = new HashMap<>();
             map.put("ok", b ? 1 : 0);
@@ -698,4 +750,110 @@
             return ResultUtil.runErr();
         }
     }
+
+
+    /**
+     * 对数据库数据进行加密
+     * @param type
+     * @return
+     */
+    @ResponseBody
+    @PostMapping("/base/encryptedData")
+    public ResultUtil encryptedData(Integer type, Integer id){
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                System.err.println("执行加密任务开始");
+                if(type == 1){//用户
+                    EntityWrapper<UserInfo> userInfoEntityWrapper = new EntityWrapper<>();
+                    if(null != id){
+                        userInfoEntityWrapper.eq("id", id);
+                    }
+                    List<UserInfo> userInfos = userInfoService.selectList(userInfoEntityWrapper);
+                    for (UserInfo userInfo : userInfos) {
+                        if(ToolUtil.isNotEmpty(userInfo.getPhone())){
+                            userInfo.setPhone(AESUtil.encrypt(userInfo.getPhone()));
+                        }
+                        if(ToolUtil.isNotEmpty(userInfo.getIdCard())){
+                            userInfo.setIdCard(AESUtil.encrypt(userInfo.getIdCard()));
+                        }
+                        userInfoService.updateById(userInfo);
+                    }
+                }else{
+                    EntityWrapper<Driver> userInfoEntityWrapper = new EntityWrapper<>();
+                    if(null != id){
+                        userInfoEntityWrapper.eq("id", id);
+                    }
+                    List<Driver> drivers = driverService.selectList(userInfoEntityWrapper);
+                    for (Driver driver : drivers) {
+                        if(ToolUtil.isNotEmpty(driver.getAccount())){
+                            driver.setAccount(AESUtil.encrypt(driver.getAccount()));
+                        }
+                        if(ToolUtil.isNotEmpty(driver.getPhone())){
+                            driver.setPhone(AESUtil.encrypt(driver.getPhone()));
+                        }
+                        if(ToolUtil.isNotEmpty(driver.getIdCard())){
+                            driver.setIdCard(AESUtil.encrypt(driver.getIdCard()));
+                        }
+                        driverService.updateById(driver);
+                    }
+                }
+                System.err.println("执行加密任务结束");
+            }
+        }).start();
+        return ResultUtil.success();
+    }
+
+
+    /**
+     * 解密数据
+     * @param type
+     * @return
+     */
+    @ResponseBody
+    @PostMapping("/base/decryptData")
+    public ResultUtil decryptData(Integer type, Integer id){
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                System.err.println("执行解密任务开始");
+                if(type == 1){//用户
+                    EntityWrapper<UserInfo> userInfoEntityWrapper = new EntityWrapper<>();
+                    if(null != id){
+                        userInfoEntityWrapper.eq("id", id);
+                    }
+                    List<UserInfo> userInfos = userInfoService.selectList(userInfoEntityWrapper);
+                    for (UserInfo userInfo : userInfos) {
+                        if(ToolUtil.isNotEmpty(userInfo.getPhone())){
+                            userInfo.setPhone(AESUtil.decrypt(userInfo.getPhone()));
+                        }
+                        if(ToolUtil.isNotEmpty(userInfo.getIdCard())){
+                            userInfo.setIdCard(AESUtil.decrypt(userInfo.getIdCard()));
+                        }
+                        userInfoService.updateById(userInfo);
+                    }
+                }else{
+                    EntityWrapper<Driver> userInfoEntityWrapper = new EntityWrapper<>();
+                    if(null != id){
+                        userInfoEntityWrapper.eq("id", id);
+                    }
+                    List<Driver> drivers = driverService.selectList(userInfoEntityWrapper);
+                    for (Driver driver : drivers) {
+                        if(ToolUtil.isNotEmpty(driver.getAccount())){
+                            driver.setAccount(AESUtil.decrypt(driver.getAccount()));
+                        }
+                        if(ToolUtil.isNotEmpty(driver.getPhone())){
+                            driver.setPhone(AESUtil.decrypt(driver.getPhone()));
+                        }
+                        if(ToolUtil.isNotEmpty(driver.getIdCard())){
+                            driver.setIdCard(AESUtil.decrypt(driver.getIdCard()));
+                        }
+                        driverService.updateById(driver);
+                    }
+                }
+                System.err.println("执行解密任务结束");
+            }
+        }).start();
+        return ResultUtil.success();
+    }
 }

--
Gitblit v1.7.1