ソースを参照

该项目首次推送代码到git

chendayu 1 年間 前
コミット
df508bfd48

+ 45 - 0
pom.xml

@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.5.9</version>
+        <relativePath/> <!-- lookup parent from repository -->
+    </parent>
+    <groupId>com.test.xiaoshi</groupId>
+    <artifactId>xiaoshi-test</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+    <name>xiaoshi-test</name>
+    <description>这是专用于写测试Demo的项目</description>
+    <properties>
+        <java.version>1.8</java.version>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.fastjson2</groupId>
+            <artifactId>fastjson2</artifactId>
+            <version>2.0.20</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.pdfbox</groupId>
+            <artifactId>pdfbox</artifactId>
+            <version>2.0.16</version>
+        </dependency>
+    </dependencies>
+
+</project>

+ 13 - 0
src/main/java/com/test/xiaoshi/test/XiaoshiTestApplication.java

@@ -0,0 +1,13 @@
+package com.test.xiaoshi.test;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class XiaoshiTestApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(XiaoshiTestApplication.class, args);
+    }
+
+}

+ 128 - 0
src/main/java/com/test/xiaoshi/test/controller/GetUsersFromDingDing.java

@@ -0,0 +1,128 @@
+package com.test.xiaoshi.test.controller;
+
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+/**
+ * @author chenyu
+ * @date 2023/10/11
+ */
+public class GetUsersFromDingDing {
+
+    /**
+     * 获取钉钉的 Access Token
+     * 首先,我们需要获取钉钉的 Access Token,用于后续的 API 调用。可以通过发送 HTTP 请求获取 Access Token
+     * 这段代码中,你需要替换 your_corp_id 和 your_corp_secret 分别为你的企业 ID 和企业密钥
+     */
+    public String getAccessToken() throws IOException {
+        String corpId = "ding54828c9e7edff1a924f2f5cc6abecb85";  //企业id
+        String corpSecret = "cb6c8a2b6a85336c809c81acb2e95b0b";  //企业密钥
+        String url = " + corpId + &corpsecret=" + corpSecret;
+
+        //发送 HTTP 请求获取 Access Token
+        HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
+        connection.setRequestMethod("GET");
+        int responseCode = connection.getResponseCode();
+
+        if (responseCode == HttpURLConnection.HTTP_OK) {
+            // 获取响应结果
+            BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
+            String inputLine;
+            StringBuffer response = new StringBuffer();
+            while ((inputLine = in.readLine()) != null) {
+                response.append(inputLine);
+            }
+            in.close();
+
+            // 解析响应结果,获取 Access Token
+            JSONObject jsonObject = JSONObject.parseObject(response.toString());
+            String accessToken = jsonObject.getString("access_token");
+            return accessToken;
+
+        } else {
+            // 处理错误情况
+            // ...
+            return null;
+        }
+
+    }
+
+    /**
+     * 获取部门列表
+     * 接下来,我们需要获取钉钉中的部门列表。这可以通过调用钉钉的部门列表 API 来实现。
+     */
+    public void getDepartmentInfo() throws IOException {
+        String accessToken = getAccessToken();
+        String url = "" + accessToken;
+
+        //发送 HTTP 请求获取部门列表
+        HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
+        connection.setRequestMethod("GET");
+        int responseCode = connection.getResponseCode();
+
+        if (responseCode == HttpURLConnection.HTTP_OK) {
+            // 获取部门列表
+            BufferedReader departmentIn = new BufferedReader(new InputStreamReader(connection.getInputStream()));
+            String inputLine;
+            StringBuffer response = new StringBuffer();
+            while ((inputLine = departmentIn.readLine()) != null) {
+                response.append(inputLine);
+            }
+            departmentIn.close();
+
+            // 解析部门列表数据
+            JSONObject jsonObject = JSONObject.parseObject(response.toString());
+            JSONArray departmentArr = jsonObject.getJSONArray("department");
+            // 处理部门列表数据
+            // ...
+        } else {
+            // 处理错误情况
+            // ...
+        }
+
+    }
+
+    /**
+     * 获取人员列表
+     * 接下来,我们需要获取钉钉中的人员列表。这可以通过调用钉钉的人员列表 API 来实现。
+     */
+    public void getUserInfo() throws IOException {
+        String accessToken = getAccessToken();
+        Integer departmentId = 0;
+
+        String userUrl = " + accessToken + &department_id=" + departmentId;
+
+        //发送 HTTP 请求获取人员列表
+        HttpURLConnection userConnection = (HttpURLConnection) new URL(userUrl).openConnection();
+        userConnection.setRequestMethod("GET");
+        int userResponseCode = userConnection.getResponseCode();
+
+        if (userResponseCode == HttpURLConnection.HTTP_OK) {
+            // 获取人员列表
+            BufferedReader userIn = new BufferedReader(new InputStreamReader(userConnection.getInputStream()));
+            String userInputLine;
+            StringBuffer response = new StringBuffer();
+            while ((userInputLine = userIn.readLine()) != null) {
+                response.append(userInputLine);
+            }
+            userIn.close();
+
+            // 解析人员列表数据
+            JSONObject jsonObject = JSONObject.parseObject(response.toString());
+            JSONArray userArray = jsonObject.getJSONArray("userlist");
+            // 处理人员列表数据
+            // ...
+        } else {
+            // 处理错误情况
+            // ...
+        }
+
+    }
+
+}

+ 48 - 0
src/main/java/com/test/xiaoshi/test/controller/GetUsersFromYuKong.java

@@ -0,0 +1,48 @@
+package com.test.xiaoshi.test.controller;
+
+import javax.naming.Context;
+import javax.naming.NamingEnumeration;
+import javax.naming.directory.SearchControls;
+import javax.naming.directory.SearchResult;
+import javax.naming.ldap.InitialLdapContext;
+import javax.naming.ldap.LdapContext;
+import java.util.Properties;
+
+
+public class GetUsersFromYuKong {
+
+    /**
+     * 获得域控中所有用户信息
+     */
+    public static void main(String[] args) {
+        Properties env = new Properties();
+        String adminName = "administrator@xiaoshi.com";  //域控管理员账号
+        String adminPassword = "xiaoShi221101,";  //域控管理员密码
+        String host = "192.168.1.25";  //域控ip地址
+        String port = "389";  //端口号
+        String url = "ldap://" + host + ":" + port;  //域控地址
+        env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
+        env.put(Context.SECURITY_AUTHENTICATION, "simple");  //LDAP访问安全级别:"none","simple","strong"
+        env.put(Context.SECURITY_PRINCIPAL, adminName);
+        env.put(Context.SECURITY_CREDENTIALS, adminPassword);
+        env.put(Context.PROVIDER_URL, url);
+        try {
+            LdapContext ctx = new InitialLdapContext(env, null);
+            SearchControls searchControls = new SearchControls();
+            searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
+            //String searchFilter = "(&(objectClass=user)(sAMAccountName=lirenjie))";
+            String searchFilter = "(&(objectCategory=person)(objectClass=user)(name=*))";
+            //String searchBase = "DC=xiaoshi,DC=com";
+            String searchBase = "ou=小世公司,dc=xiaoshi,dc=com";
+            NamingEnumeration<SearchResult> results = ctx.search(searchBase, searchFilter, searchControls);
+            while (results.hasMoreElements()) {
+                SearchResult sr = results.next();
+                System.out.println("[" + sr.getName() + "]");
+            }
+
+            ctx.close();
+        } catch (Exception e) {
+            System.out.println("未知错误!");
+        }
+    }
+}

+ 39 - 0
src/main/java/com/test/xiaoshi/test/controller/LoginFromYuKong.java

@@ -0,0 +1,39 @@
+package com.test.xiaoshi.test.controller;
+
+import javax.naming.AuthenticationException;
+import javax.naming.Context;
+import javax.naming.NamingException;
+import javax.naming.directory.DirContext;
+import javax.naming.directory.InitialDirContext;
+import java.util.Hashtable;
+
+public class LoginFromYuKong {
+
+    /**
+     * 域控中用户登录系统校验
+     */
+    public static void main(String[] args) throws NamingException {
+        Hashtable<String, String> env = new Hashtable<>();
+        env.put(Context.SECURITY_AUTHENTICATION, "simple");  //LDAP访问安全级别(none,simple,strong)
+        env.put(Context.SECURITY_PRINCIPAL, "chenyu@xiaoshi.com");  //AD的用户名
+        env.put(Context.SECURITY_CREDENTIALS, "xiaoShi221101,");  //AD的密码
+        env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");  //LDAP工厂类
+        env.put(Context.PROVIDER_URL, "LDAP://192.168.1.25:389");  //默认端口389
+
+        DirContext ctx = null;
+        try {
+            ctx = new InitialDirContext(env);  //初始化上下文
+            System.out.println("登录成功!");
+
+        } catch (AuthenticationException e) {
+            System.out.println("用户名或密码错误");
+        } catch (Exception e) {
+            System.out.println("未知异常!");
+        }
+
+
+        ctx.close();
+    }
+
+
+}

+ 58 - 0
src/main/java/com/test/xiaoshi/test/controller/PdfTest.java

@@ -0,0 +1,58 @@
+package com.test.xiaoshi.test.controller;
+
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.rendering.PDFRenderer;
+import org.apache.pdfbox.text.PDFTextStripper;
+
+import javax.imageio.ImageIO;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * @author chenyu
+ * @date 2023/10/19
+ */
+public class PdfTest {
+    public static void main(String[] args) throws IOException {
+        getImgFromPdf("2.pdf");
+
+    }
+
+    /**
+     * 读取pdf中文字信息(全部)
+     *
+     * @param inputFile
+     * @return
+     */
+    public static String readPdf(String inputFile) {
+        //创建文档对象
+        PDDocument doc = null;
+        String content = "";
+        try {
+            //加载一个pdf对象
+            doc = PDDocument.load(new File(inputFile));
+            //获取一个PDFTextStripper文本剥离对象
+            PDFTextStripper textStripper = new PDFTextStripper();
+            content = textStripper.getText(doc);
+            System.out.println("内容:" + content);
+            System.out.println("全部页数" + doc.getNumberOfPages());
+            //关闭文档
+            doc.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return content;
+    }
+
+    public static void getImgFromPdf(String inputFile) throws IOException {
+        File file = new File(inputFile);
+        PDDocument doc = PDDocument.load(file);
+        PDFRenderer renderer = new PDFRenderer(doc);
+        BufferedImage image = renderer.renderImage(3);
+        ImageIO.write(image, "JPEG", new File("pdf第1页中的图片.jpg"));
+        doc.close();
+
+    }
+
+}

+ 1 - 0
src/main/resources/application.properties

@@ -0,0 +1 @@
+