瀏覽代碼

token和部分工具类

Newspaper 1 年之前
父節點
當前提交
ba2486eabd

+ 5 - 1
huimv-admin/pom.xml

@@ -136,7 +136,11 @@
             <artifactId>httpclient</artifactId>
             <version>4.5.14</version>
         </dependency>
-
+        <dependency>
+            <groupId>com.jcraft</groupId>
+            <artifactId>jsch</artifactId>
+            <version>0.1.54</version>
+        </dependency>
         <dependency>
             <groupId>com.hkvs</groupId>
             <artifactId>HttpClientSSLUtils</artifactId>

+ 27 - 0
huimv-admin/src/main/java/com/huimv/admin/common/token/TokenSign.java

@@ -87,6 +87,24 @@ public class TokenSign {
         return (Integer) claims.get("id");
     }
 
+    /**
+     * 根据token获取用户类型
+     *
+     * @param request
+     * @return
+     */
+    public static Integer getUserTypeByJwtToken(HttpServletRequest request) {
+        String jwtToken = request.getHeader("accessToken");
+        if (StringUtils.isBlank(jwtToken)) {
+            return null;
+        }
+        Claims claims = getClaims(jwtToken);
+        if(ObjectUtil.isEmpty(claims)||ObjectUtil.isEmpty(claims.get("type"))){
+
+        }
+        return (Integer) claims.get("type");
+    }
+
     public static String getFarmIds(HttpServletRequest request) {
         String jwtToken = request.getHeader("accessToken");
         if (StringUtils.isBlank(jwtToken)) {
@@ -96,6 +114,15 @@ public class TokenSign {
         return (String) claims.get("farmIds");
     }
 
+    public static String getUserNameByJwtToken(HttpServletRequest request) {
+        String jwtToken = request.getHeader("accessToken");
+        if (StringUtils.isBlank(jwtToken)) {
+            return null;
+        }
+        Claims claims = getClaims(jwtToken);
+        return (String) claims.get("userName");
+    }
+
     /**
      * 获取claims对象
      *

+ 56 - 0
huimv-admin/src/main/java/com/huimv/admin/common/utils/IDCardValidator.java

@@ -0,0 +1,56 @@
+package com.huimv.admin.common.utils;
+
+import java.util.regex.Pattern;
+
+public class IDCardValidator {
+
+    public static boolean isValidIDCard(String idCardNumber) {
+        // 正则表达式用于验证身份证号
+        String pattern = "\\d{17}[0-9Xx]";
+
+        // 判断输入的身份证号是否符合规则
+        if (!Pattern.matches(pattern, idCardNumber)) {
+            return false;
+        }
+
+        // 获取身份证号的前17位
+        String idCardDigits = idCardNumber.substring(0, 17);
+
+        // 验证身份证号的前17位是否为数字
+        if (!isNumeric(idCardDigits)) {
+            return false;
+        }
+
+        // 验证身份证号的最后一位是否为合法校验位
+        return isValidCheckDigit(idCardNumber);
+    }
+
+    // 判断字符串是否为纯数字
+    private static boolean isNumeric(String str) {
+        return str.matches("\\d+");
+    }
+
+    // 验证身份证号的校验位是否合法
+    private static boolean isValidCheckDigit(String idCardNumber) {
+        String checkDigit = idCardNumber.substring(17);
+        String[] checkCodes = {"1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"};
+        int sum = 0;
+        for (int i = 0; i < 17; i++) {
+            int coefficient = Integer.parseInt(idCardNumber.substring(i, i + 1));
+            int weight = (int) Math.pow(2, 17 - i) % 11;
+            sum += coefficient * weight;
+        }
+        return checkDigit.equalsIgnoreCase(checkCodes[sum % 11]);
+    }
+
+    public static void main(String[] args) {
+        String idCardNumber = "身份证号"; // 替换为要验证的身份证号
+        boolean isValid = isValidIDCard(idCardNumber);
+        if (isValid) {
+            System.out.println("身份证号正确!");
+        } else {
+            System.out.println("身份证号错误!");
+        }
+    }
+}
+

+ 25 - 0
huimv-admin/src/main/java/com/huimv/admin/common/utils/PhoneNumberValidator.java

@@ -0,0 +1,25 @@
+package com.huimv.admin.common.utils;
+
+import java.util.regex.Pattern;
+
+public class PhoneNumberValidator {
+
+    public static boolean isValidPhoneNumber(String phoneNumber) {
+        // 正则表达式用于验证手机号
+        String pattern = "1[3456789]\\d{9}";
+
+        // 判断输入的手机号是否符合规则
+        return Pattern.matches(pattern, phoneNumber);
+    }
+
+    public static void main(String[] args) {
+        String phoneNumber = "手机号"; // 替换为要验证的手机号
+        boolean isValid = isValidPhoneNumber(phoneNumber);
+        if (isValid) {
+            System.out.println("手机号正确!");
+        } else {
+            System.out.println("手机号错误!");
+        }
+    }
+}
+

+ 184 - 0
huimv-admin/src/main/java/com/huimv/admin/common/utils/UploadImage.java

@@ -0,0 +1,184 @@
+package com.huimv.admin.common.utils;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.lang.UUID;
+import com.jcraft.jsch.*;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.imageio.ImageIO;
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import java.io.*;
+import java.util.Date;
+
+@Component
+public class UploadImage {
+
+    @Value("${img.basePath}")
+    private   String basePath;
+
+    @Value("${img.ip}")
+    private    String ip ;
+//    private   String ip = "36.134.209.211";
+//    private   String ip = "192.168.0.13";
+
+    @Value("${img.user}")
+    private  String user ;
+
+//    private   String password = "!Hm537e@1";
+
+    @Value("${img.password}")
+    private   String password ;
+
+    @Value("${img.port}")
+    public   Integer port ;
+
+    @Value("${img.url}")
+    public   String url ;
+
+
+
+    /**
+     * 利用JSch包实现SFTP上传文件
+     * @param bytes  文件字节流
+     * @param fileName  文件名
+     * @throws Exception
+     */
+    public   void sshSftp(byte[] bytes,String path,String fileName) throws Exception{
+
+        // 服务器保存路径
+        String filepath = basePath +path ;
+        Session session = null;
+        Channel channel = null;
+
+        JSch jSch = new JSch();
+
+        if(port <=0){
+            //连接服务器,采用默认端口
+            session = jSch.getSession(user, ip);
+        }else{
+            //采用指定的端口连接服务器
+            session = jSch.getSession(user, ip ,port);
+        }
+
+        //如果服务器连接不上,则抛出异常
+        if (session == null) {
+            throw new Exception("session is null");
+        }
+
+        //设置登陆主机的密码
+        session.setPassword(password);//设置密码
+        //设置第一次登陆的时候提示,可选值:(ask | yes | no)
+        session.setConfig("userauth.gssapi-with-mic","no");
+        session.setConfig("StrictHostKeyChecking", "no");
+        //设置登陆超时时间
+        session.connect(30000);
+
+        OutputStream outstream = null;
+        try {
+            //创建sftp通信通道
+            channel = (Channel) session.openChannel("sftp");
+            channel.connect(1000);
+            ChannelSftp sftp = (ChannelSftp) channel;
+
+            //进入服务器指定的文件夹
+            sftp.cd(basePath);
+
+            SftpATTRS attrs = null;
+            try {
+                attrs = sftp.stat(filepath);
+            } catch (Exception e) {
+                // TODO: handle exception
+            }
+            if (attrs == null) {
+                sftp.mkdir(filepath);
+                System.out.println(("创建子目录:" + filepath));
+            }
+            sftp.cd(filepath);
+
+            //以下代码实现从本地上传一个文件到服务器,如果要实现下载,对换一下流就可以了
+            outstream = sftp.put(fileName);
+            outstream.write(bytes);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            //关流操作
+            if (outstream != null) {
+                outstream.flush();
+                outstream.close();
+            }
+            if (session != null) {
+                session.disconnect();
+            }
+            if (channel != null) {
+                channel.disconnect();
+            }
+            System.out.println("上传成功!");
+        }
+    }
+
+    //上传压缩的图片
+    public  String getImageCom(MultipartFile image) throws IOException {
+        //获取文件输入流
+        InputStream inputStream = image.getInputStream();
+        String originalFilename = image.getOriginalFilename();
+        String filenameExtension = StringUtils.getFilenameExtension(originalFilename);
+        String path = DateUtil.format(new Date(), "yyyy-MM");
+
+        try {
+            // 把图片读入到内存中
+            BufferedImage bufImg = ImageIO.read(inputStream);
+            // 压缩代码,存储图片文件byte数组
+            ByteArrayOutputStream bos = new ByteArrayOutputStream();
+            //防止图片变红,这一步非常重要
+            BufferedImage bufferedImage = new BufferedImage(bufImg.getWidth(), bufImg.getHeight(), BufferedImage.TYPE_INT_RGB);
+            bufferedImage.createGraphics().drawImage(bufImg,0,0, Color.WHITE,null);
+            //先转成jpg格式来压缩,然后在通过OSS来修改成源文件本来的后缀格式
+            ImageIO.write(bufferedImage,"jpg",bos);
+            byte[] bytes = bos.toByteArray();
+            String imgname = UUID.randomUUID() + "." + filenameExtension;
+            sshSftp(bytes, path, imgname);
+            return url+ path + "/" + imgname;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return "上传失败";
+        } finally {
+            inputStream.close();
+        }
+    }
+
+
+    //上传原图
+    public  String uploadImg( MultipartFile image ) {
+        String originalFilename = image.getOriginalFilename();
+        String filenameExtension = StringUtils.getFilenameExtension(originalFilename);
+        String path = DateUtil.format(new Date(), "yyyy-MM");
+        try {
+            InputStream inputStream = image.getInputStream();
+            BufferedInputStream in = new BufferedInputStream(inputStream);
+            ByteArrayOutputStream out = new ByteArrayOutputStream(1024);
+
+            byte[] temp = new byte[1024];
+            int size = 0;
+            while ((size = in.read(temp)) != -1) {
+                out.write(temp, 0, size);
+            }
+            in.close();
+            byte[] content = out.toByteArray();
+            String imgname = UUID.randomUUID() + "." + filenameExtension;
+            sshSftp(content, path, imgname);
+            return url + path + "/" + imgname;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return "上传失败";
+        }
+    }
+
+}
+
+
+

+ 2 - 2
huimv-admin/src/main/resources/application.properties

@@ -1,5 +1,5 @@
-#spring.profiles.active=dev
-spring.profiles.active=prod
+spring.profiles.active=dev
+#spring.profiles.active=prod
 
 #¿ªÆô½¡¿µ¼à¿Ø
 management.endpoints.web.exposure.include=*