Browse Source

资产管理

tangxiangan 5 months ago
parent
commit
a2d064e484
56 changed files with 3871 additions and 1492 deletions
  1. 13 48
      pom.xml
  2. 285 0
      src/main/java/cn/kdan/ExcelUtil.java
  3. 2 9
      src/main/java/cn/kdan/WorkflowStreamlinerApplication.java
  4. 0 32
      src/main/java/cn/kdan/base/GlobalExceptionHandler.java
  5. 0 51
      src/main/java/cn/kdan/base/R.java
  6. 0 12
      src/main/java/cn/kdan/config/SchedulingConfig.java
  7. 0 38
      src/main/java/cn/kdan/controller/WorkflowStreamLinerController.java
  8. 0 18
      src/main/java/cn/kdan/dto/MattermostCreatePost.java
  9. 0 35
      src/main/java/cn/kdan/entity/PersistentData.java
  10. 0 173
      src/main/java/cn/kdan/entity/Users.java
  11. 0 51
      src/main/java/cn/kdan/enums/ClientFeedbackEnum.java
  12. 0 45
      src/main/java/cn/kdan/enums/EmailSubjectEnum.java
  13. 0 340
      src/main/java/cn/kdan/listener/EmailListener.java
  14. 0 18
      src/main/java/cn/kdan/mapper/PersistentDataMapper.java
  15. 0 16
      src/main/java/cn/kdan/mapper/UsersMapper.java
  16. 0 13
      src/main/java/cn/kdan/service/PersistentDataService.java
  17. 0 15
      src/main/java/cn/kdan/service/UsersService.java
  18. 0 22
      src/main/java/cn/kdan/service/impl/PersistentDataServiceImpl.java
  19. 0 129
      src/main/java/cn/kdan/service/impl/UsersServiceImpl.java
  20. 0 237
      src/main/java/cn/kdan/utils/EmailUtil.java
  21. 0 52
      src/main/resources/application.yml
  22. 0 85
      src/main/resources/logback-spring.xml
  23. 89 0
      src/main/resources/mac/InstalledAppInfo(丁林圭).txt
  24. 101 0
      src/main/resources/mac/InstalledAppInfo(万军).txt
  25. 47 0
      src/main/resources/mac/InstalledAppInfo(倪滤波).txt
  26. 40 0
      src/main/resources/mac/InstalledAppInfo(刘佳杰).txt
  27. 47 0
      src/main/resources/mac/InstalledAppInfo(刘小龙).txt
  28. 33 0
      src/main/resources/mac/InstalledAppInfo(吴祯琳).txt
  29. 46 0
      src/main/resources/mac/InstalledAppInfo(唐祥安).txt
  30. 67 0
      src/main/resources/mac/InstalledAppInfo(崔鳯鸣).txt
  31. 26 0
      src/main/resources/mac/InstalledAppInfo(廖双).txt
  32. 20 0
      src/main/resources/mac/InstalledAppInfo(彭胜).txt
  33. 63 0
      src/main/resources/mac/InstalledAppInfo(易思特).txt
  34. 79 0
      src/main/resources/mac/InstalledAppInfo(曾宏).txt
  35. 1818 0
      src/main/resources/mac/InstalledAppInfo(李佰).txt
  36. 82 0
      src/main/resources/mac/InstalledAppInfo(李哲).txt
  37. 55 0
      src/main/resources/mac/InstalledAppInfo(杨丽).txt
  38. 24 0
      src/main/resources/mac/InstalledAppInfo(杨杨).txt
  39. 102 0
      src/main/resources/mac/InstalledAppInfo(杨柳华).txt
  40. 62 0
      src/main/resources/mac/InstalledAppInfo(楚格).txt
  41. 19 0
      src/main/resources/mac/InstalledAppInfo(汤超).txt
  42. 26 0
      src/main/resources/mac/InstalledAppInfo(王峥).txt
  43. 61 0
      src/main/resources/mac/InstalledAppInfo(王帅).txt
  44. 44 0
      src/main/resources/mac/InstalledAppInfo(王晓).txt
  45. 26 0
      src/main/resources/mac/InstalledAppInfo(王玉婷).txt
  46. 106 0
      src/main/resources/mac/InstalledAppInfo(王超).txt
  47. 183 0
      src/main/resources/mac/InstalledAppInfo(罗婉珠).txt
  48. 68 0
      src/main/resources/mac/InstalledAppInfo(罗志鹏).txt
  49. 56 0
      src/main/resources/mac/InstalledAppInfo(罗毅).txt
  50. 56 0
      src/main/resources/mac/InstalledAppInfo(胡慧敏).txt
  51. 39 0
      src/main/resources/mac/InstalledAppInfo(陈轺).txt
  52. 58 0
      src/main/resources/mac/InstalledAppInfo(陶源).txt
  53. 28 0
      src/main/resources/mac/InstalledAppInfo(黄雅晴).txt
  54. 0 16
      src/main/resources/mapper/PersistentDataMapper.xml
  55. 0 37
      src/main/resources/mapper/UsersMapper.xml
  56. BIN
      src/main/resources/长沙 - 资产管理(2024.9).xlsx

+ 13 - 48
pom.xml

@@ -10,68 +10,33 @@
     <groupId>cn.kdan</groupId>
     <artifactId>workflow_streamliner</artifactId>
     <version>0.0.1-SNAPSHOT</version>
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
     <dependencies>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
         </dependency>
+
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>
             <scope>test</scope>
         </dependency>
-
-        <!--<dependency>
-            <groupId>org.mybatis</groupId>
-            <artifactId>mybatis-spring</artifactId>
-            <version>2.0.7</version>
-        </dependency>-->
-        <!--mysql-->
-        <dependency>
-            <groupId>mysql</groupId>
-            <artifactId>mysql-connector-java</artifactId>
-        </dependency>
-        <!--mybatis plus-->
-        <dependency>
-            <groupId>com.baomidou</groupId>
-            <artifactId>mybatis-plus-boot-starter</artifactId>
-            <version>3.5.2</version>
-        </dependency>
-
         <dependency>
-            <groupId>com.baomidou</groupId>
-            <artifactId>mybatis-plus-annotation</artifactId>
-            <version>3.5.2</version>
-            <scope>compile</scope>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi</artifactId>
+            <version>5.2.3</version>
         </dependency>
-
         <dependency>
-            <groupId>com.sun.mail</groupId>
-            <artifactId>jakarta.mail</artifactId>
-            <version>1.6.7</version>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+            <version>5.2.3</version>
         </dependency>
-<!--        <dependency>-->
-<!--            <groupId>org.junit.jupiter</groupId>-->
-<!--            <artifactId>junit-jupiter-api</artifactId>-->
-<!--        </dependency>-->
-
-        <dependency>
-            <groupId>org.projectlombok</groupId>
-            <artifactId>lombok</artifactId>
-            <version>1.18.8</version>
-            <scope>provided</scope>
-        </dependency>
-        <!--hutool工具包-->
-        <dependency>
-            <groupId>cn.hutool</groupId>
-            <artifactId>hutool-all</artifactId>
-            <version>5.8.2</version>
-        </dependency>
-
     </dependencies>
 
     <build>

+ 285 - 0
src/main/java/cn/kdan/ExcelUtil.java

@@ -0,0 +1,285 @@
+package cn.kdan;
+
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.util.StringUtils;
+
+import java.io.*;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class ExcelUtil {
+    public static void main(String[] args) {
+        ExcelUtil excelUtil = new ExcelUtil();
+        excelUtil.getSheet();
+        excelUtil.insert();
+        excelUtil.statistics();
+    }
+
+    /**
+     *根据设备资产表生成各个设备的sheet表单
+     */
+    private void getSheet() {
+        String inputFilePath = "src/main/resources/长沙 - 资产管理(2024.9).xlsx";
+        String outputFilePath = "src/main/resources/output.xlsx";;
+
+        try (FileInputStream fis = new FileInputStream(new File(inputFilePath));
+             Workbook workbook = new XSSFWorkbook(fis)) {
+
+            Sheet sheet = workbook.getSheetAt(0); // 读取第一个sheet
+            Workbook newWorkbook = new XSSFWorkbook(); // 创建新的工作簿
+
+            for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++) {
+                Row row = sheet.getRow(i);
+
+                Cell cell1 = row.getCell(15); // 假设第1列为索引0
+                Cell cell2 = row.getCell(2); // 假设第2列为索引1
+                if(StringUtils.isEmpty(cell2.getStringCellValue())&&StringUtils.isEmpty(cell1.getStringCellValue())){
+                    continue;
+                }
+                String sheetName = cell1.getStringCellValue();
+                if(!StringUtils.isEmpty(cell2.getStringCellValue())){
+                    sheetName = sheetName+ "(" + cell2.getStringCellValue() +")";
+                }
+                Sheet newSheet = newWorkbook.createSheet(sheetName); // 创建新的Sheet
+                // 创建一个CellStyle来设置样式
+                CellStyle blueStyle = newWorkbook.createCellStyle();
+
+                // 设置背景色为蓝色
+                blueStyle.setFillForegroundColor(IndexedColors.LIGHT_BLUE.getIndex());
+                blueStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+
+                // 创建一个白色字体的Font
+                Font whiteFont = newWorkbook.createFont();
+                whiteFont.setColor(IndexedColors.WHITE.getIndex());
+                newSheet.setColumnWidth(0, 60 * 256);
+                newSheet.setColumnWidth(1, 60 * 256);
+                newSheet.setColumnWidth(2, 40 * 256);
+                // 将字体应用到CellStyle
+                blueStyle.setFont(whiteFont);
+                Row oneRow = newSheet.createRow(0); // 第一行
+                // 应用样式到第一行的前三列
+                for (int col = 0; col < 3; col++) {
+                    Cell cell = oneRow.createCell(col); // 对应的列
+                    if(col== 0){
+                        cell.setCellValue(cell1.getStringCellValue());
+                    }
+                    cell.setCellStyle(blueStyle);
+                }
+
+                Row twoRow = newSheet.createRow(1); // 第二行
+                // 设置第二行前三列的值
+                // 注意:我们再次遍历列,但这次是在第二行上创建和设置单元格
+                for (int col = 0; col < 3; col++) {
+                    Cell cell = twoRow.createCell(col); // 对应的列
+                    // 假设我们为每列设置不同的值
+                    switch (col) {
+                        case 0:
+                            cell.setCellValue("软件名称");
+                            break;
+                        case 1:
+                            cell.setCellValue("软件来源");
+                            break;
+                        case 2:
+                            cell.setCellValue("软件版本号");
+                            break;
+                    }
+                    cell.setCellStyle(blueStyle);
+                }
+            }
+
+            // 写入到新的 Excel 文件
+            try (FileOutputStream fos = new FileOutputStream(outputFilePath)) {
+                newWorkbook.write(fos);
+            }
+
+            newWorkbook.close();
+            System.out.println("数据已成功写入到新sheet中。");
+
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 将txt的数据插入到对应人员sheet页
+     */
+    public void insert() {
+        String directoryPath = "src/main/resources/mac";
+        String excelFilePath = "src/main/resources/output.xlsx";
+
+        try (Workbook workbook = new XSSFWorkbook(new FileInputStream(new File(excelFilePath)))) {
+            File dir = new File(directoryPath);
+            File[] directoryListing = dir.listFiles((dir1, name) -> name.endsWith(".txt"));
+
+            if (directoryListing != null) {
+                for (File file : directoryListing) {
+                    String appName = extractAppNameFromFile(file);
+                    for (Sheet sheet : workbook) {
+                        if (sheet.getSheetName().contains(appName)) {
+                            int rowNum = 0;
+                            try (BufferedReader br = new BufferedReader(new FileReader(file))) {
+                                String line;
+                                while ((line = br.readLine()) != null) {
+                                    if (++rowNum > 3) { // Start from the fourth line
+                                        String[] columns = line.split("\\s+", 2); // Assuming space as delimiter, adjust as needed
+                                        Row row = sheet.createRow(rowNum - 3 + 1) ;
+                                        for (int i = 0; i < columns.length && i < 2; i++) {
+                                            Cell cell = row.createCell(i);
+                                            cell.setCellValue(columns[i]);
+                                        }
+                                    }
+                                }
+                            }
+                            break;
+                        }
+                    }
+                }
+                // Write the workbook in file system
+                try (FileOutputStream outputStream = new FileOutputStream(excelFilePath)) {
+                    workbook.write(outputStream);
+                }
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 统计mac总表
+     */
+    public void statistics() {
+        String directoryPath = "src/main/resources/mac";
+        String excelFilePath = "src/main/resources/output.xlsx";
+
+        try (Workbook workbook = new XSSFWorkbook(new FileInputStream(new File(excelFilePath)))) {
+            File dir = new File(directoryPath);
+            File[] directoryListing = dir.listFiles((dir1, name) -> name.endsWith(".txt"));
+
+            if (directoryListing != null) {
+                Map<String, Integer> countMap = new HashMap<>();
+                Map<String, Set<String>> secondColumnMap = new HashMap<>(); // 使用Set存储不重复的第二列数据
+
+                for (File file : directoryListing) {
+                    try (BufferedReader br = new BufferedReader(new FileReader(file))) {
+                        String line;
+                        while ((line = br.readLine()) != null) {
+                            String[] columns = line.split("\\s+", 2); // 按空格分隔
+                            if (columns.length > 1) {
+                                String key = columns[0];
+                                String secondValue = columns[1];
+                                if (key.equals("")){
+                                    System.out.println(file.getAbsoluteFile());
+                                }
+                                // 更新计数
+                                countMap.put(key, countMap.getOrDefault(key, 0) + 1);
+
+                                // 存储不重复的第二列数据
+                                secondColumnMap.putIfAbsent(key, new HashSet<>());
+                                secondColumnMap.get(key).add(secondValue);
+                            }
+                        }
+                    }
+                }
+
+                // 创建sheet并写入数据
+                Sheet sheet = workbook.createSheet("安装软件汇总_mac");
+                workbook.setSheetOrder(sheet.getSheetName(), 0);
+                int rowNum = 1;
+                // 创建一个CellStyle来设置样式
+                CellStyle blueStyle = workbook.createCellStyle();
+
+                // 设置背景色为蓝色
+                blueStyle.setFillForegroundColor(IndexedColors.LIGHT_BLUE.getIndex());
+                blueStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+
+                // 创建一个白色字体的Font
+                Font whiteFont = workbook.createFont();
+                whiteFont.setColor(IndexedColors.WHITE.getIndex());
+                sheet.setColumnWidth(0, 60 * 256);
+                sheet.setColumnWidth(1, 60 * 256);
+                sheet.setColumnWidth(2, 40 * 256);
+                // 将字体应用到CellStyle
+                blueStyle.setFont(whiteFont);
+                Row oneRow = sheet.createRow(0); // 第一行
+                // 应用样式到第一行的前三列
+                for (int col = 0; col < 3; col++) {
+                    Cell cell = oneRow.createCell(col); // 对应的列
+                    if(col== 0){
+                        cell.setCellValue("mac_汇总");
+                    }
+                    cell.setCellStyle(blueStyle);
+                }
+                // 写入表头
+                Row headerRow = sheet.createRow(rowNum++);
+                for (int col = 0; col < 3; col++) {
+                    Cell cell = headerRow.createCell(col); // 对应的列
+                    // 假设我们为每列设置不同的值
+                    switch (col) {
+                        case 0:
+                            cell.setCellValue("App 名称");
+                            break;
+                        case 1:
+                            cell.setCellValue("使用设备数");
+                            break;
+                        case 2:
+                            cell.setCellValue("软件来源");
+                            break;
+                    }
+                    cell.setCellStyle(blueStyle);
+                }
+
+                // 写入数据
+                for (Map.Entry<String, Integer> entry : countMap.entrySet()) {
+                    Row row = sheet.createRow(rowNum++);
+                    row.createCell(0).setCellValue(entry.getKey());
+                    row.createCell(1).setCellValue(entry.getValue());
+
+                    // 将不重复的第二列数据合并为一个字符串
+                    String secondValues = String.join("\n", secondColumnMap.get(entry.getKey()));
+                    Cell sourceCell = row.createCell(2); // 写入第二列数据
+                    sourceCell.setCellValue(secondValues);
+                    CellStyle cellStyle = workbook.createCellStyle();
+                    cellStyle.setWrapText(true);
+                    sourceCell.setCellStyle(cellStyle);
+                }
+
+                // 写入工作簿到文件系统
+                try (FileOutputStream outputStream = new FileOutputStream(excelFilePath)) {
+                    workbook.write(outputStream);
+                }
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 获取txt里的名字用于匹配sheet进行填充
+     * @param file file
+     * @return String
+     */
+    public static String extractAppNameFromFile(File file) {
+        // 定义正则表达式来匹配括号内的内容
+        Pattern pattern = Pattern.compile("\\(([^)]+)\\)");
+
+        // 转换文件名为字符串,以便使用正则表达式匹配
+        String fileName = file.getName();
+
+        // 创建matcher对象
+        Matcher matcher = pattern.matcher(fileName);
+
+        // 查找匹配项
+        if (matcher.find()) {
+            // 返回匹配到的括号内的内容
+            return matcher.group(1);
+        }
+        System.out.println("txt文件名格式错误"+fileName);
+        // 如果没有找到匹配项,返回null或空字符串(根据你的需求)
+        return null; // 或者 ""
+    }
+}

+ 2 - 9
src/main/java/cn/kdan/WorkflowStreamlinerApplication.java

@@ -1,18 +1,11 @@
 package cn.kdan;
 
-import org.mybatis.spring.annotation.MapperScan;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
 
-/**
- * @author ComPDF-Bob 2024-06-11
- **/
-@SpringBootApplication
-@MapperScan("cn.kdan.mapper")
+
 public class WorkflowStreamlinerApplication {
 
     public static void main(String[] args) {
-        SpringApplication.run(WorkflowStreamlinerApplication.class, args);
+        System.out.println("Hello world!");
     }
 
 }

+ 0 - 32
src/main/java/cn/kdan/base/GlobalExceptionHandler.java

@@ -1,32 +0,0 @@
-package cn.kdan.base;
-
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.ExceptionHandler;
-import org.springframework.web.bind.annotation.RestControllerAdvice;
-
-/**
- * @author Bob 2024/7/5
- */
-@RestControllerAdvice(basePackages = "cn.kdan")
-@Slf4j
-public class GlobalExceptionHandler {
-
-    @ExceptionHandler(Throwable.class)
-    public R<Void> handlerThrowable(Throwable t) {
-        log.info("错误类:{}", t.getClass());
-        log.error(t.getMessage(), t);
-        return R.error();
-    }
-
-    @ExceptionHandler(Exception.class)
-    public R<Void> handlerThrowable(Exception e) {
-        log.error(e.getMessage(), e);
-        return R.error("504", e.getMessage());
-    }
-
-    @ExceptionHandler(RuntimeException.class)
-    public R<Void> handlerThrowable(RuntimeException e) {
-        log.error(e.getMessage(), e);
-        return R.error("504", e.getMessage());
-    }
-}

+ 0 - 51
src/main/java/cn/kdan/base/R.java

@@ -1,51 +0,0 @@
-package cn.kdan.base;
-
-
-import cn.hutool.http.HttpStatus;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-/**
- * 请求统一返回对象
- * @author wph
- */
-@Data
-@AllArgsConstructor
-public class R<T> {
-
-    private String code;
-    private String msg;
-    private T data;
-
-    public static <T> R<T> ok() {
-        return ok(null);
-    }
-
-    public static <T> R<T> ok(T data) {
-        return ok("success", data);
-    }
-
-    public static <T> R<T> ok(String msg, T data) {
-        return ok(HttpStatus.HTTP_OK + "", msg, data);
-    }
-
-    public static <T> R<T> ok(String code, String msg) {
-        return new R<>(code, msg, null);
-    }
-
-    public static <T> R<T> ok(String code, String msg, T data) {
-        return new R<>(code, msg, data);
-    }
-
-    public static <T> R<T> error(String code, String msg) {
-        return error(code, msg, null);
-    }
-
-    public static <T> R<T> error(String code, String msg, T data) {
-        return new R<>(code, msg, data);
-    }
-
-    public static <T> R<T> error() {
-        return error("504", "error");
-    }
-}

+ 0 - 12
src/main/java/cn/kdan/config/SchedulingConfig.java

@@ -1,12 +0,0 @@
-package cn.kdan.config;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.scheduling.annotation.EnableScheduling;
-
-/**
- * @author ComPDF-WPH 2024-06-21
- **/
-@Configuration
-@EnableScheduling
-public class SchedulingConfig {
-}

+ 0 - 38
src/main/java/cn/kdan/controller/WorkflowStreamLinerController.java

@@ -1,38 +0,0 @@
-package cn.kdan.controller;
-
-import cn.kdan.base.R;
-import cn.kdan.listener.EmailListener;
-import cn.kdan.service.UsersService;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.Map;
-
-/**
- * @author Bob 2024-06-13
- */
-@RestController
-@RequestMapping("/v1/workflowStreamLiner")
-public class WorkflowStreamLinerController {
-
-    private final UsersService usersService;
-    private final EmailListener emailListener;
-
-    public WorkflowStreamLinerController(UsersService usersService, EmailListener emailListener) {
-        this.usersService = usersService;
-        this.emailListener = emailListener;
-    }
-
-    /**
-     * 检查收件箱
-     */
-    @PostMapping("/checkInbox")
-    public R<?> checkInbox() {
-        return R.ok(usersService.checkInbox());
-    }
-
-    @PostMapping("/executeTask")
-    public R<?> executeTask(@RequestBody Map<String, Object> requestBody) {
-        emailListener.executeTask(requestBody);
-        return R.ok();
-    }
-}

+ 0 - 18
src/main/java/cn/kdan/dto/MattermostCreatePost.java

@@ -1,18 +0,0 @@
-package cn.kdan.dto;
-
-import lombok.Data;
-
-import java.util.List;
-
-/**
- * @author ComPDF-Bob 2024-06-20
- **/
-@Data
-public class MattermostCreatePost {
-
-    private String channel_id;
-
-    private String message;
-
-    private List<String> file_ids;
-}

+ 0 - 35
src/main/java/cn/kdan/entity/PersistentData.java

@@ -1,35 +0,0 @@
-package cn.kdan.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-import lombok.Data;
-
-/**
- * 
- * @TableName persistent_data
- */
-@Data
-@TableName(value ="persistent_data")
-public class PersistentData implements Serializable {
-    /**
-     * 
-     */
-    @TableId(type = IdType.AUTO)
-    private Integer id;
-
-    /**
-     * 
-     */
-    private String dataKey;
-
-    /**
-     * 
-     */
-    private String dataValue;
-
-    @TableField(exist = false)
-    private static final long serialVersionUID = 1L;
-}

+ 0 - 173
src/main/java/cn/kdan/entity/Users.java

@@ -1,173 +0,0 @@
-package cn.kdan.entity;
-
-import lombok.Data;
-
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.util.Date;
-
-/**
- * 官网用户信息
- * @TableName users
- */
-@Data
-public class Users implements Serializable {
-    /**
-     * 
-     */
-    private Integer id;
-
-    /**
-     * 用户全名
-     */
-    private String fullName;
-
-    /**
-     * 用户邮箱
-     */
-    private String email;
-
-    /**
-     * 用户标识:1=正常注册 2=新增订单 3=新增授权码
-     */
-    private Integer flag;
-
-    /**
-     * 用户类型 1:免费用户 2:试用用户 3:saas用户 4:SDK用户 5:saas和SDK用户 6:SaaS试用用户
-     */
-    private Integer type;
-
-    /**
-     * 密码
-     */
-    private String password;
-
-    /**
-     * 订单数量
-     */
-    private Integer orderNum;
-
-    /**
-     * 消费金额
-     */
-    private BigDecimal orderAmount;
-
-    /**
-     * 登录次数
-     */
-    private Integer loginTimes;
-
-    /**
-     * 1:SDK 2:SaaS
-     */
-    private Integer source;
-
-    /**
-     * 1:没有验证 2:通过验证
-     */
-    private Integer isVerify;
-
-    /**
-     * 1:NO 2:YES
-     */
-    private Integer hasSeenManual;
-
-    /**
-     * 1:NO 2:YES
-     */
-    private Integer isDeleted;
-
-    /**
-     * 
-     */
-    private Date createdAt;
-
-    /**
-     * 
-     */
-    private Date updatedAt;
-
-    /**
-     * 用户邮箱地址状态:0、正常;1、邮件已屏蔽;2、找不到地址
-     */
-    private Integer emailStatus;
-
-    private static final long serialVersionUID = 1L;
-
-    @Override
-    public boolean equals(Object that) {
-        if (this == that) {
-            return true;
-        }
-        if (that == null) {
-            return false;
-        }
-        if (getClass() != that.getClass()) {
-            return false;
-        }
-        Users other = (Users) that;
-        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
-            && (this.getFullName() == null ? other.getFullName() == null : this.getFullName().equals(other.getFullName()))
-            && (this.getEmail() == null ? other.getEmail() == null : this.getEmail().equals(other.getEmail()))
-            && (this.getFlag() == null ? other.getFlag() == null : this.getFlag().equals(other.getFlag()))
-            && (this.getType() == null ? other.getType() == null : this.getType().equals(other.getType()))
-            && (this.getPassword() == null ? other.getPassword() == null : this.getPassword().equals(other.getPassword()))
-            && (this.getOrderNum() == null ? other.getOrderNum() == null : this.getOrderNum().equals(other.getOrderNum()))
-            && (this.getOrderAmount() == null ? other.getOrderAmount() == null : this.getOrderAmount().equals(other.getOrderAmount()))
-            && (this.getLoginTimes() == null ? other.getLoginTimes() == null : this.getLoginTimes().equals(other.getLoginTimes()))
-            && (this.getSource() == null ? other.getSource() == null : this.getSource().equals(other.getSource()))
-            && (this.getIsVerify() == null ? other.getIsVerify() == null : this.getIsVerify().equals(other.getIsVerify()))
-            && (this.getHasSeenManual() == null ? other.getHasSeenManual() == null : this.getHasSeenManual().equals(other.getHasSeenManual()))
-            && (this.getIsDeleted() == null ? other.getIsDeleted() == null : this.getIsDeleted().equals(other.getIsDeleted()))
-            && (this.getCreatedAt() == null ? other.getCreatedAt() == null : this.getCreatedAt().equals(other.getCreatedAt()))
-            && (this.getUpdatedAt() == null ? other.getUpdatedAt() == null : this.getUpdatedAt().equals(other.getUpdatedAt()));
-    }
-
-    @Override
-    public int hashCode() {
-        final int prime = 31;
-        int result = 1;
-        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
-        result = prime * result + ((getFullName() == null) ? 0 : getFullName().hashCode());
-        result = prime * result + ((getEmail() == null) ? 0 : getEmail().hashCode());
-        result = prime * result + ((getFlag() == null) ? 0 : getFlag().hashCode());
-        result = prime * result + ((getType() == null) ? 0 : getType().hashCode());
-        result = prime * result + ((getPassword() == null) ? 0 : getPassword().hashCode());
-        result = prime * result + ((getOrderNum() == null) ? 0 : getOrderNum().hashCode());
-        result = prime * result + ((getOrderAmount() == null) ? 0 : getOrderAmount().hashCode());
-        result = prime * result + ((getLoginTimes() == null) ? 0 : getLoginTimes().hashCode());
-        result = prime * result + ((getSource() == null) ? 0 : getSource().hashCode());
-        result = prime * result + ((getIsVerify() == null) ? 0 : getIsVerify().hashCode());
-        result = prime * result + ((getHasSeenManual() == null) ? 0 : getHasSeenManual().hashCode());
-        result = prime * result + ((getIsDeleted() == null) ? 0 : getIsDeleted().hashCode());
-        result = prime * result + ((getCreatedAt() == null) ? 0 : getCreatedAt().hashCode());
-        result = prime * result + ((getUpdatedAt() == null) ? 0 : getUpdatedAt().hashCode());
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        StringBuilder sb = new StringBuilder();
-        sb.append(getClass().getSimpleName());
-        sb.append(" [");
-        sb.append("Hash = ").append(hashCode());
-        sb.append(", id=").append(id);
-        sb.append(", fullName=").append(fullName);
-        sb.append(", email=").append(email);
-        sb.append(", flag=").append(flag);
-        sb.append(", type=").append(type);
-        sb.append(", password=").append(password);
-        sb.append(", orderNum=").append(orderNum);
-        sb.append(", orderAmount=").append(orderAmount);
-        sb.append(", loginTimes=").append(loginTimes);
-        sb.append(", source=").append(source);
-        sb.append(", isVerify=").append(isVerify);
-        sb.append(", hasSeenManual=").append(hasSeenManual);
-        sb.append(", isDeleted=").append(isDeleted);
-        sb.append(", createdAt=").append(createdAt);
-        sb.append(", updatedAt=").append(updatedAt);
-        sb.append(", serialVersionUID=").append(serialVersionUID);
-        sb.append("]");
-        return sb.toString();
-    }
-}

+ 0 - 51
src/main/java/cn/kdan/enums/ClientFeedbackEnum.java

@@ -1,51 +0,0 @@
-package cn.kdan.enums;
-
-/**
- * @author ComPDF-Bob 2024-06-21
- **/
-public enum ClientFeedbackEnum {
-
-    FEEDBACK("Feedback"),
-    REPORT_A_BUG("Report a Bug"),
-    PROPOSE_A_NEW_FEATURE("Propose a New Feature"),
-    GENERAL_QUESTIONS("General Questions"),
-    // 中文简体
-    FEEDBACK_SIMPLIFIED("意见回馈"),
-    REPORT_A_BUG_SIMPLIFIED("错误回报"),
-    PROPOSE_A_NEW_FEATURE_SIMPLIFIED("新功能提议"),
-    GENERAL_QUESTIONS_SIMPLIFIED("一般问题"),
-    // 中文繁体
-    FEEDBACK_TRADITIONAL("意見回饋"),
-    REPORT_A_BUG_TRADITIONAL("回報問題"),
-    PROPOSE_A_NEW_FEATURE_TRADITIONAL("新功能提議"),
-    GENERAL_QUESTIONS_TRADITIONAL("一般問題"),
-    ;
-
-    public String value() {
-        return value;
-    }
-
-    private final String value;
-
-    ClientFeedbackEnum(String value){
-        this.value = value;
-    }
-
-    public static ClientFeedbackEnum getByValue(String value){
-        for (ClientFeedbackEnum clientTypeEnum : ClientFeedbackEnum.values()) {
-            if (clientTypeEnum.value.equals(value)){
-                return clientTypeEnum;
-            }
-        }
-        return null;
-    }
-
-    public static ClientFeedbackEnum getByLikeValue(String value){
-        for (ClientFeedbackEnum clientTypeEnum : ClientFeedbackEnum.values()) {
-            if (value.contains(clientTypeEnum.value)){
-                return clientTypeEnum;
-            }
-        }
-        return null;
-    }
-}

+ 0 - 45
src/main/java/cn/kdan/enums/EmailSubjectEnum.java

@@ -1,45 +0,0 @@
-package cn.kdan.enums;
-
-/**
- * @author ComPDF-Bob 2024-06-21
- **/
-public enum EmailSubjectEnum {
-
-    MAC_APP_STORE_FREE("PDF Reader Pro Lite -"),
-    MAC_APP_STORE_PAID("PDF Reader Pro Edition -"),
-    MAC_DMG("PDF Reader Pro -"),
-    WINDOWS("PDF Reader Pro Windows Verification -"),
-    UWP_FREE("PDF Reader Pro Lite -"),
-    UWP_PAID("PDF Reader Pro Edition -"),
-    IOS("PDF Reader Pro Lite -"),
-    ANDROID("PDF Reader Pro -"),
-    ;
-
-    public String value() {
-        return value;
-    }
-
-    private final String value;
-
-    EmailSubjectEnum(String value){
-        this.value = value;
-    }
-
-    public static EmailSubjectEnum getByValue(String value){
-        for (EmailSubjectEnum clientTypeEnum : EmailSubjectEnum.values()) {
-            if (clientTypeEnum.value.equals(value)){
-                return clientTypeEnum;
-            }
-        }
-        return null;
-    }
-
-    public static EmailSubjectEnum getByLikeValue(String value){
-        for (EmailSubjectEnum clientTypeEnum : EmailSubjectEnum.values()) {
-            if (value.contains(clientTypeEnum.value)){
-                return clientTypeEnum;
-            }
-        }
-        return null;
-    }
-}

+ 0 - 340
src/main/java/cn/kdan/listener/EmailListener.java

@@ -1,340 +0,0 @@
-package cn.kdan.listener;
-
-import cn.hutool.json.JSONArray;
-import cn.hutool.json.JSONObject;
-import cn.hutool.json.JSONUtil;
-import cn.kdan.dto.MattermostCreatePost;
-import cn.kdan.entity.PersistentData;
-import cn.kdan.enums.ClientFeedbackEnum;
-import cn.kdan.enums.EmailSubjectEnum;
-import cn.kdan.service.PersistentDataService;
-import cn.kdan.utils.EmailUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.core.io.FileSystemResource;
-import org.springframework.http.*;
-import org.springframework.stereotype.Component;
-import org.springframework.util.CollectionUtils;
-import org.springframework.util.LinkedMultiValueMap;
-import org.springframework.util.MultiValueMap;
-import org.springframework.util.StringUtils;
-import org.springframework.web.client.RestTemplate;
-
-import javax.mail.*;
-import javax.mail.search.*;
-import java.io.File;
-import java.io.IOException;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.*;
-
-/**
- * @author ComPDF-WPH 2024-06-18
- **/
-@Slf4j
-@Component
-public class EmailListener {
-
-    private final RestTemplate restTemplate = new RestTemplate();
-    private final PersistentDataService persistentDataService;
-
-    @Value("${workflow.customer_email.host}")
-    private String host;
-    @Value("${workflow.customer_email.port}")
-    private String port;
-    @Value("${workflow.customer_email.user}")
-    private String user;
-    @Value("${workflow.customer_email.appPassword}")
-    private String appPassword;
-    @Value("${workflow.customer_email.folder}")
-    private String folderStr;
-
-    @Value("${workflow.customer_email.authorization}")
-    private String authorization;
-    @Value("${workflow.customer_email.channelId}")
-    private String channelId;
-    @Value("${workflow.customer_email.fileUrl}")
-    private String fileUrl;
-    @Value("${workflow.customer_email.postUrl}")
-    private String postUrl;
-
-    public EmailListener(PersistentDataService persistentDataService) {
-        this.persistentDataService = persistentDataService;
-    }
-
-    // 每小时执行一次,cron 表达式:"0 0 * * * ?"
-//    @Scheduled(cron = "0 0 * * * ?")
-    public void executeTask(Map<String, Object> requestBody) {
-        assert requestBody != null;
-        log.info("请求参数: {}", requestBody.toString());
-        String filterFolderStr = "";
-        // 获取上次更新时间
-        PersistentData persistentData = persistentDataService.getById(1);
-        // 获取当前时间
-        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        String nowTime = dateFormat.format(new Date());
-
-        String startTime = persistentData.getDataValue();
-        String endTime = nowTime;
-        String remindPersonnel = "@suvi @dinglingui @wanjun @zhoujiesheng @huangyaqing @yangyang @nicole ";
-        if (null != requestBody) {
-            if (null != requestBody.get("filterFolderStr")) {
-                filterFolderStr = requestBody.get("filterFolderStr").toString();
-            }
-            if (null != requestBody.get("remindPersonnel")) {
-                remindPersonnel = requestBody.get("remindPersonnel").toString();
-            }
-            if (!StringUtils.isEmpty(requestBody.get("startTime"))) {
-                startTime = requestBody.get("startTime").toString();
-                // 检查时间格式
-                try {
-                    dateFormat.parse(requestBody.get("startTime").toString());
-                } catch (ParseException e) {
-                    log.error("时间格式错误,请检查时间格式是否正确");
-                    throw new RuntimeException("时间格式错误,请检查时间格式是否正确");
-                }
-            }
-            if (!StringUtils.isEmpty(requestBody.get("endTime"))) {
-                endTime = requestBody.get("endTime").toString();
-                // 检查时间格式
-                try {
-                    dateFormat.parse(requestBody.get("endTime").toString());
-                } catch (ParseException e) {
-                    log.error("时间格式错误,请检查时间格式是否正确");
-                    throw new RuntimeException("时间格式错误,请检查时间格式是否正确");
-                }
-            }
-        }
-        log.info("开始时间: {}, 结束时间: {}", startTime, endTime);
-        // 判断开始时间是否大于等于结束时间
-        try {
-            if (dateFormat.parse(startTime).after(dateFormat.parse(endTime))) {
-                log.error("开始时间不能大于结束时间");
-                throw new RuntimeException("开始时间不能大于结束时间");
-            }
-        } catch (ParseException e) {
-            log.error("时间格式错误,请检查时间格式是否正确");
-            throw new RuntimeException("时间格式错误,请检查时间格式是否正确");
-        }
-        log.info("开始读取收件箱: {}", new Date());
-        // 设置邮件服务器属性
-        Properties properties = new Properties();
-        properties.put("mail.store.protocol", "imaps");
-        properties.put("mail.imap.host", host);
-        properties.put("mail.imap.port", port);
-        properties.put("mail.imap.starttls.enable", "true");
-        properties.put("mail.imap.ssl.trust", "*");
-        properties.put("mail.imap.ssl.enable", "true");
-        Session session = Session.getInstance(properties);
-//        session.setDebug(true);
-        if (null == filterFolderStr) {
-            filterFolderStr = "";
-        }
-        String[] split = filterFolderStr.split(";");
-        List<String> filterFolderList = Arrays.asList(split);
-        try {
-            // 获取邮箱存储
-            Store store = session.getStore("imap");
-            // 使用应用专用密码
-            store.connect(user, appPassword);
-            // 获取所有文件夹
-//            Folder[] folders = store.getDefaultFolder().list();
-//            System.out.println(folders.length);
-            // 打开收件箱,用户反馈,INBOX
-            Folder folder = store.getFolder(folderStr);
-            extracted(folder, folderStr, filterFolderList, remindPersonnel, startTime, endTime);
-            log.info("读取完成,关闭收件箱,:{}", folder.getName());
-            store.close();
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        persistentData.setDataValue(endTime);
-        log.info("更新处理时间时间,{}", persistentData.getDataValue());
-        persistentDataService.updateById(persistentData);
-    }
-
-    /**
-     * 读取邮件文件夹
-     * @param folder 邮件文件夹
-     * @param folderStr 当前文件夹
-     * @param filterFolderList 过滤文件夹
-     * @param remindPersonnel @人员
-     * @param extractTime 提取时间
-     * @throws MessagingException
-     * @throws IOException
-     */
-    private void extracted(Folder folder, String folderStr, List<String> filterFolderList, String remindPersonnel, String extractTime, String endTime) throws MessagingException, IOException, ParseException {
-        // 判断收件箱是否包含文件夹,存在则循坏和递归读取子目录
-        log.info("读取收件箱:{}", folderStr);
-        if (folder.getType() != Folder.HOLDS_MESSAGES) {
-            Folder[] subfolders = folder.list();
-            log.info("收件箱[{}]子级文件夹数量: {}", folderStr, subfolders.length);
-            for (Folder subfolder : subfolders) {
-                String folderString = folderStr + "-" + subfolder.getName();
-                if (filterFolderList.contains(folderString)) {
-                    log.info("过滤文件夹:{};跳过文件夹读取,{}", filterFolderList, folderString);
-                    continue;
-                }
-                extracted(subfolder, folderString, filterFolderList, remindPersonnel, extractTime, endTime);
-            }
-        }
-        // 打开收件箱
-        folder.open(Folder.READ_ONLY);
-        Message[] totalMessages =  folder.getMessages();
-        log.info("打开收件箱完成,{}收件箱总计邮件数: {}", folderStr, totalMessages.length);
-        // 过滤时间,获取上次提取的时间 和 提取前一天的时间
-        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        Date extractDateTime = dateFormat.parse(extractTime);
-
-        Calendar calendar = Calendar.getInstance();
-        calendar.setTime(extractDateTime);
-        // 美国时区-12小时
-//        calendar.add(Calendar.HOUR_OF_DAY, -12);
-//        Date startTime = calendar.getTime();
-//        log.info("提取开始时间: {}", dateFormat.format(startTime));
-        calendar.add(Calendar.DAY_OF_MONTH, -1);
-        Date folderTime = calendar.getTime();
-        log.info("提取前一天时间: {}", dateFormat.format(folderTime));
-
-        // 获取上次提取前一天到现在的邮件
-        ReceivedDateTerm searchTerm = new ReceivedDateTerm(ComparisonTerm.GE, folderTime);
-        Message[] messages = folder.search(searchTerm);
-        log.info("上次提取前到现在收件箱邮件数: {}", messages.length);
-        if(messages.length <= 0) {
-            return;
-        }
-        // 遍历条件获取到的邮件
-        for (Message message : messages) {
-            // 处理查找到的邮件
-            String subject = message.getSubject();
-            log.info("处理邮件,MessageNumber:{},subject:{}", message.getMessageNumber(), subject);
-            if (StringUtils.isEmpty(subject)) {
-                log.warn("邮件主题为空,跳过");
-                continue;
-            }
-            // 过滤来自 @google.com 邮箱服务器
-            String from = EmailUtil.extractTargetEmail(message.getFrom()[0].toString());
-            log.info("发件人:{}", from);
-            if (from.contains("@google.com")) {
-                log.info("来自谷歌邮箱,跳过");
-                continue;
-            }
-            Date receivedDate = message.getReceivedDate();
-            // 再次过滤,因为上面的邮件搜索只能按天,这次过滤准确值
-            if (receivedDate == null || receivedDate.before(extractDateTime)) {
-                log.info("邮件时间早于上次提取时间,跳过;time:{}", receivedDate);
-                continue;
-            }
-            if (receivedDate.after(dateFormat.parse(endTime))) {
-                log.info("邮件时间晚于本次提取时间,跳过;time:{}", receivedDate);
-                continue;
-            }
-            /*log.info("过滤邮件主题: {}", subject);
-            // 过滤邮件主题 和 反馈类型
-            EmailSubjectEnum emailSubjectEnum = EmailSubjectEnum.getByLikeValue(subject);
-            ClientFeedbackEnum clientFeedbackEnum = ClientFeedbackEnum.getByLikeValue(subject);
-            if (emailSubjectEnum == null || clientFeedbackEnum == null) {
-                continue;
-            }*/
-            // @人员相关,根据产品类型判断
-            /*switch(emailSubjectEnum) {
-                case MAC_APP_STORE_FREE:
-                case UWP_FREE:
-                case IOS:
-                case MAC_APP_STORE_PAID:
-                case UWP_PAID:
-                    atPeople = "@dinglingui @suvi @wanjun @zhoujiesheng @chuge ";
-                    break;
-                case MAC_DMG:
-                case ANDROID:
-                    atPeople = "@dinglingui @suvi @wanjun @chuge ";
-                    break;
-                case WINDOWS:
-                    atPeople = "@dinglingui @suvi @zhoujiesheng @liyijie @chuge ";
-                    break;
-            }*/
-
-            // 创建 Mattermost 请求参数对象
-            MattermostCreatePost mattermostCreatePost = new MattermostCreatePost();
-            mattermostCreatePost.setChannel_id(channelId);
-            String content = "### 收到一封新邮件"
-                    + "\n**From: **" + from
-                    + "\n**邮件主题: **" + subject
-                    + "\n**收件时间: **" + receivedDate
-                    + "\n**收件箱: **" + folderStr
-                    + "\n**内容: **" + EmailUtil.getTextFromMessage(message)
-                    + "\n" + remindPersonnel;
-            mattermostCreatePost.setMessage(content);
-
-            // 图片 + 附件 查询
-            // 构建 MultiValueMap 以包含文件数据
-            MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
-            boolean fileFlag = false;
-            // 判断邮件中的附件和图片
-            List<File> attachmentFiles = new ArrayList<>();
-            EmailUtil.saveAttachmentFiles(message, attachmentFiles);
-            if (!CollectionUtils.isEmpty(attachmentFiles)) {
-                log.info("邮件正文包含图片");
-                fileFlag = true;
-                for (File imageFile : attachmentFiles) {
-                    body.add("files", new FileSystemResource(imageFile));
-                }
-            }
-            // 如果有附件就处理
-//            if (message.getContent() instanceof Multipart) {
-//                log.info("邮件包含附件");
-//                fileFlag = true;
-//                Multipart multipart = (Multipart) message.getContent();
-//                for (int i = 0; i < multipart.getCount(); i++) {
-//                    BodyPart bodyPart = multipart.getBodyPart(i);
-//                    if (Part.ATTACHMENT.equalsIgnoreCase(bodyPart.getDisposition())) {
-//                        File file = EmailUtil.saveAttachment(bodyPart);
-//                        body.add("files", new FileSystemResource(file));
-//                    }
-//                }
-//            }
-            if (fileFlag) {
-                List<String> fileIds = new ArrayList<>();
-                // 创建 HttpEntity 包含 headers 和 body
-                body.add("channel_id", channelId);
-                HttpHeaders headers = new HttpHeaders();
-                headers.setContentType(MediaType.MULTIPART_FORM_DATA);
-                headers.set(HttpHeaders.AUTHORIZATION, authorization);
-                HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(body, headers);
-                // 发送 POST 请求并获取响应
-                ResponseEntity<String> response = restTemplate.exchange(fileUrl, HttpMethod.POST, requestEntity, String.class);
-                log.info("上传文件Response Code: " + response.getStatusCodeValue());
-                if (response.getStatusCode().is2xxSuccessful()) {
-                    String responseBody = response.getBody();
-                    // 解析响应体,获取 file_ids
-                    JSONObject jsonObject = JSONUtil.parseObj(responseBody);
-                    JSONArray jsonArray = jsonObject.getJSONArray("file_infos");
-                    for (Object obj : jsonArray) {
-                        JSONObject fileInfo = (JSONObject) obj;
-                        String fileId = fileInfo.getStr("id");
-                        fileIds.add(fileId);
-                    }
-                }
-                mattermostCreatePost.setFile_ids(fileIds);
-            }
-
-            // 发送Mattermost信息
-            HttpHeaders headers = new HttpHeaders();
-            headers.setContentType(MediaType.APPLICATION_JSON);
-            headers.set(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE);
-            headers.set(HttpHeaders.AUTHORIZATION, authorization);
-            HttpEntity<String> request = new HttpEntity<>(JSONUtil.toJsonStr(mattermostCreatePost), headers);
-            try {
-                ResponseEntity<JSONObject> response = restTemplate
-                        .exchange(postUrl, HttpMethod.POST, request, JSONObject.class);
-                log.info("发送Mattermost信息Response Code: " + response.getStatusCodeValue());
-                log.info("发送Mattermost信息Response Body: " + response.getBody());
-            } catch (Exception e) {
-                log.error("发送Mattermost信息失败", e);
-            }
-        }
-        // 关闭文件夹和存储
-        folder.close(false);
-    }
-
-}

+ 0 - 18
src/main/java/cn/kdan/mapper/PersistentDataMapper.java

@@ -1,18 +0,0 @@
-package cn.kdan.mapper;
-
-import cn.kdan.entity.PersistentData;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-/**
-* @author kdan
-* @description 针对表【persistent_data】的数据库操作Mapper
-* @createDate 2024-08-07 11:30:25
-* @Entity cn.kdan.entity.PersistentData
-*/
-public interface PersistentDataMapper extends BaseMapper<PersistentData> {
-
-}
-
-
-
-

+ 0 - 16
src/main/java/cn/kdan/mapper/UsersMapper.java

@@ -1,16 +0,0 @@
-package cn.kdan.mapper;
-
-import cn.kdan.entity.Users;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-/**
-* @author kdan
-* @description 针对表【users(官网用户信息)】的数据库操作Mapper
-* @createDate 2024-06-13 16:56:05
-* @Entity cn.kdan.domain.Users
-*/
-public interface UsersMapper extends BaseMapper<Users> {
-
-    int updatebyEmail(Users users);
-
-}

+ 0 - 13
src/main/java/cn/kdan/service/PersistentDataService.java

@@ -1,13 +0,0 @@
-package cn.kdan.service;
-
-import cn.kdan.entity.PersistentData;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-/**
-* @author kdan
-* @description 针对表【persistent_data】的数据库操作Service
-* @createDate 2024-08-07 11:30:25
-*/
-public interface PersistentDataService extends IService<PersistentData> {
-
-}

+ 0 - 15
src/main/java/cn/kdan/service/UsersService.java

@@ -1,15 +0,0 @@
-package cn.kdan.service;
-
-import cn.hutool.json.JSONObject;
-import cn.kdan.entity.Users;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-/**
-* @author kdan
-* @description 针对表【users(官网用户信息)】的数据库操作Service
-* @createDate 2024-06-13
-*/
-public interface UsersService extends IService<Users> {
-
-    JSONObject checkInbox();
-}

+ 0 - 22
src/main/java/cn/kdan/service/impl/PersistentDataServiceImpl.java

@@ -1,22 +0,0 @@
-package cn.kdan.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import cn.kdan.entity.PersistentData;
-import cn.kdan.service.PersistentDataService;
-import cn.kdan.mapper.PersistentDataMapper;
-import org.springframework.stereotype.Service;
-
-/**
-* @author kdan
-* @description 针对表【persistent_data】的数据库操作Service实现
-* @createDate 2024-08-07 11:30:25
-*/
-@Service
-public class PersistentDataServiceImpl extends ServiceImpl<PersistentDataMapper, PersistentData>
-    implements PersistentDataService{
-
-}
-
-
-
-

+ 0 - 129
src/main/java/cn/kdan/service/impl/UsersServiceImpl.java

@@ -1,129 +0,0 @@
-package cn.kdan.service.impl;
-
-import cn.hutool.json.JSONObject;
-import cn.kdan.entity.Users;
-import cn.kdan.service.UsersService;
-import cn.kdan.mapper.UsersMapper;
-import cn.kdan.utils.EmailUtil;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-
-import javax.mail.*;
-import javax.mail.Store;
-import javax.mail.search.*;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-
-/**
-* @author kdan
-* @description 针对表【users(官网用户信息)】的数据库操作Service实现
-* @createDate 2024-06-13
-*/
-@Slf4j
-@Service
-public class UsersServiceImpl extends ServiceImpl<UsersMapper, Users> implements UsersService {
-
-    @Value("${workflow.newsletter.host}")
-    private String host;
-    @Value("${workflow.newsletter.port}")
-    private String port;
-    @Value("${workflow.newsletter.user}")
-    private String user;
-    @Value("${workflow.newsletter.appPassword}")
-    private String appPassword;
-    @Value("${workflow.newsletter.blockedStatus}")
-    private String blockedStatus;
-    @Value("${workflow.newsletter.notFoundStatus}")
-    private String notFoundStatus;
-    @Value("${workflow.newsletter.senderTermString}")
-    private String senderTermString;
-    @Value("${workflow.newsletter.subjectTermString}")
-    private String subjectTermString;
-
-    @Override
-    public JSONObject checkInbox() {
-        JSONObject jsonObject = new JSONObject();
-        List<String> blockedEmailList = new ArrayList<>();
-        List<String> notFoundEmailList = new ArrayList<>();
-
-        Properties properties = new Properties();
-        properties.put("mail.store.protocol", "imaps");
-        properties.put("mail.imap.host", host);
-        properties.put("mail.imap.port", port);
-        properties.put("mail.imap.starttls.enable", "true");
-        properties.put("mail.imap.ssl.trust", "*");
-        properties.put("mail.imap.ssl.enable", "true");
-        Session session = Session.getInstance(properties);
-        try {
-            // 调试模式
-//            session.setDebug(true);
-            // Connect to the store
-            Store store = session.getStore("imap");
-            // 使用应用专用密码
-            store.connect(user, appPassword);
-            // Open the inbox folder
-            Folder inbox = store.getFolder("INBOX");
-            inbox.open(Folder.READ_ONLY);
-            // Fetch messages from the inbox
-            Message[] messages = inbox.getMessages();
-            log.info("收件箱总计邮件数: {}", messages.length);
-
-            // 创建发件人和主题的搜索条件
-            SearchTerm senderTerm = new FromStringTerm(senderTermString);
-//            SearchTerm senderTerm = new FromStringTerm("liubo@kdanmobile.com");
-            SearchTerm subjectTerm = new SubjectTerm(subjectTermString);
-            SearchTerm searchTerm = new AndTerm(senderTerm, subjectTerm);
-            // 搜索匹配的邮件
-            Message[] inboxFailureMail = inbox.search(searchTerm);
-            System.out.println("邮件发送失败反馈邮件数: " + inboxFailureMail.length);
-            // 获取收件箱失败投递邮件
-            for (int i = 0; i < inboxFailureMail.length; i++) {
-                Message message = inboxFailureMail[i];
-                log.info("Email Number {}", (i + 1));
-                System.out.println("Subject: " + message.getSubject());
-                System.out.println("From: " + message.getFrom()[0]);
-                String body = EmailUtil.getTextFromMessage(message);
-                int status;
-                if (body.contains(blockedStatus)) {
-                    status = 1;
-                    body = body.substring(body.indexOf(blockedStatus));
-                } else if (body.contains(notFoundStatus)) {
-                    status = 2;
-                    body = body.substring(body.indexOf(notFoundStatus));
-                } else {
-                    log.warn("未知的失败邮件,邮件内容:{}", body);
-                    continue;
-                }
-                String targetEmail = EmailUtil.extractTargetEmail(body);
-                log.info("目标邮箱:{}", targetEmail);
-                if (status == 1) {
-                    blockedEmailList.add(targetEmail);
-                } else {
-                    notFoundEmailList.add(targetEmail);
-                }
-                // 更新数据库状态
-                Users users = new Users();
-                users.setEmail(targetEmail);
-                users.setEmailStatus(status);
-                int updateCount = this.baseMapper.updatebyEmail(users);
-                if (updateCount == 0) {
-                    log.warn("更新数据库状态失败,目标邮箱:{}", targetEmail);
-                } else {
-                    log.info("更新数据库状态成功,目标邮箱:{},状态:{}", targetEmail, status);
-                }
-            }
-            // Close the folder and store
-            inbox.close(false);
-            store.close();
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        jsonObject.set("已屏蔽的邮箱", blockedEmailList);
-        jsonObject.set("找不到的邮箱", notFoundEmailList);
-        return jsonObject;
-    }
-
-}

+ 0 - 237
src/main/java/cn/kdan/utils/EmailUtil.java

@@ -1,237 +0,0 @@
-package cn.kdan.utils;
-
-import lombok.extern.slf4j.Slf4j;
-
-import javax.mail.*;
-import java.io.*;
-import java.util.Base64;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * @author ComPDF-Bob 2024-06-11
- **/
-@Slf4j
-public class EmailUtil {
-
-    /**
-     * 获取邮件正文
-     * @param part 邮件信息
-     * @return 正文
-     * @throws MessagingException
-     * @throws IOException
-     */
-    public static String getTextFromMessage(Part part) throws MessagingException, IOException {
-        if (part.isMimeType("text/plain")) {
-            return (String) part.getContent();
-        } else if (part.isMimeType("text/html")) {
-            // 获取 HTML 内容并移除 HTML 标签
-            String html = (String) part.getContent();
-            return stripHtmlTags(html);
-        } else if (part.isMimeType("multipart/*")) {
-            Multipart multipart = (Multipart) part.getContent();
-            StringBuilder result = new StringBuilder();
-            // 遍历每个部分,确保只添加非空的内容
-            for (int i = 0; i < multipart.getCount(); i++) {
-                BodyPart bodyPart = multipart.getBodyPart(i);
-                result.append(getTextFromMessage(bodyPart));
-//                if (bodyPart.isMimeType("text/plain")) {
-//                    result.append(bodyPart.getContent());
-//                }
-            }
-            return result.toString();
-        }
-        return "";
-    }
-
-    // 移除 HTML 标签的方法
-    private static String stripHtmlTags(String html) {
-        return html.replaceAll("<[^>]*>", "");
-    }
-
-    /**
-     * 从邮件正文中提取目标邮箱地址
-     *
-     * @param body 邮件正文
-     * @return 目标邮箱地址
-     */
-    public static String extractTargetEmail(String body) {
-        Pattern pattern = Pattern.compile("([\\w.-]+@[\\w.-]+\\.[\\w]+)");
-        Matcher matcher = pattern.matcher(body);
-        if (matcher.find()) {
-            return matcher.group(1);
-        }
-        return "";
-    }
-
-    /**
-     * 获取附件
-     * @param bodyPart
-     * @return 文件
-     * @throws MessagingException
-     * @throws IOException
-     */
-    public static File saveAttachment(BodyPart bodyPart) throws MessagingException, IOException {
-        InputStream is = bodyPart.getInputStream();
-        File file = new File(System.currentTimeMillis() + bodyPart.getFileName());
-        try (FileOutputStream fos = new FileOutputStream(file)) {
-            byte[] buffer = new byte[4096];
-            int bytesRead;
-            while ((bytesRead = is.read(buffer)) != -1) {
-                fos.write(buffer, 0, bytesRead);
-            }
-        }
-        return file;
-    }
-
-    /**
-     * 保存邮件中的图片
-     * @param part 邮件信息
-     * @param files 保存图片的文件列表
-     * @throws MessagingException
-     * @throws IOException
-     */
-    public static void saveAttachmentFiles(Part part, List<File> files) throws MessagingException, IOException {
-        // 有附件或图片的邮件只需要保存一个
-        if (files.size() > 0) {
-            return;
-        }
-        if (part.isMimeType("multipart/*")) {
-            Multipart multipart = (Multipart) part.getContent();
-            for (int i = 0; i < multipart.getCount(); i++) {
-                BodyPart bodyPart = multipart.getBodyPart(i);
-                if (bodyPart.isMimeType("application/pkcs7-signature")) {
-                    // 跳过签名
-                    continue;
-                }
-                if (bodyPart.isMimeType("multipart/related") || bodyPart.isMimeType("multipart/MIXED")
-                || bodyPart.isMimeType("multipart/alternative") || bodyPart.isMimeType("multipart/signed")
-                || bodyPart.isMimeType("multipart/report")) {
-                    saveAttachmentFiles(bodyPart, files); // 递归处理嵌套的multipart/related
-                } else if (Part.ATTACHMENT.equalsIgnoreCase(bodyPart.getDisposition()) || Part.INLINE.equalsIgnoreCase(bodyPart.getDisposition()) || isInlineImage(bodyPart)) {
-                    saveFile(bodyPart, files);
-                }
-            }
-        }
-    }
-
-    /**
-     * 判断是否是内嵌图片
-     * @param bodyPart 图片信息
-     * @return
-     * @throws MessagingException
-     */
-    private static boolean isInlineImage(BodyPart bodyPart) throws MessagingException {
-        if ((bodyPart.isMimeType("image/*") || bodyPart.isMimeType("video/*")) && bodyPart.getFileName() == null) {
-//        if ((bodyPart.isMimeType("image/*")) && bodyPart.getFileName() != null) {
-            return true;
-        }
-        return false;
-    }
-
-    /*private static void saveAttachment(Part part, List<File> files) throws IOException, MessagingException {
-        String[] contentIdHeader = part.getHeader("Content-ID");
-        String contentId = (contentIdHeader != null && contentIdHeader.length > 0) ? contentIdHeader[0] : null;
-        if (contentId != null) {
-            contentId = contentId.replaceAll("[<>]", ""); // 移除尖括号
-        }
-        String fileName = part.getFileName();
-        if (fileName != null) {
-            InputStream is = part.getInputStream();
-            File file = new File((contentId != null ? contentId : "") + System.currentTimeMillis() + fileName);
-            OutputStream os = new FileOutputStream(file);
-            byte[] buffer = new byte[1024];
-            int bytesRead;
-            while ((bytesRead = is.read(buffer)) != -1) {
-                os.write(buffer, 0, bytesRead);
-            }
-            os.close();
-            is.close();
-            System.out.println("Attachment saved: " + file);
-            files.add(file);
-        }
-    }*/
-
-    /**
-     * 保存图片
-     * @param bodyPart 图片信息
-     * @param imageFiles 保存图片的文件列表
-     * @throws IOException
-     * @throws MessagingException
-     */
-    private static void saveFile(BodyPart bodyPart, List<File> imageFiles) throws IOException, MessagingException {
-        InputStream inputStream = bodyPart.getInputStream();
-        String fileName = getFileNameFromBodyPart(bodyPart);
-        File file = new File(fileName);
-        try (FileOutputStream outputStream = new FileOutputStream(file)) {
-            byte[] buffer = new byte[4096];
-            int bytesRead;
-            while ((bytesRead = inputStream.read(buffer)) != -1) {
-                // 有附件或图片的邮件只需要保存一个
-                if (imageFiles.size() > 0) {
-                    return;
-                }
-                outputStream.write(buffer, 0, bytesRead);
-            }
-            outputStream.close();
-            inputStream.close();
-        }
-        log.info("Saved File to {}", file.getAbsolutePath());
-        imageFiles.add(file);
-    }
-
-    /**
-     * 从BodyPart中获取文件名
-     * @param bodyPart BodyPart
-     * @return 文件名
-     * @throws MessagingException
-     */
-    private static String getFileNameFromBodyPart(BodyPart bodyPart) throws MessagingException, UnsupportedEncodingException {
-        String fileName = bodyPart.getFileName();
-        // 判断是否是base64编码
-        if (isMimeEncoded(fileName)) {
-            log.info("处理文件名base64编码");
-            fileName = decodeMimeEncodedFilename(fileName);
-        }
-        String[] contentIdHeader = bodyPart.getHeader("Content-ID");
-        String contentId = (contentIdHeader != null && contentIdHeader.length > 0) ? contentIdHeader[0] : null;
-        if (contentId != null) {
-            contentId = contentId.replaceAll("[<>]", ""); // 移除尖括号
-        }
-        return (contentId != null ? contentId : "") + System.currentTimeMillis() + fileName;
-    }
-
-    public static boolean isMimeEncoded(String str) {
-        // 正则表达式匹配 MIME 编码的开始和结束标记
-        Pattern pattern = Pattern.compile("^=\\?.+\\?.\\?.+\\?=$");
-        return pattern.matcher(str).matches();
-    }
-
-    public static String decodeMimeEncodedFilename(String encodedFilename) {
-        // 正则表达式匹配 MIME 编码的开始和结束标记
-        Pattern pattern = Pattern.compile("=\\?([^?]+)\\?([BbQq])\\?([^?]+)\\?=");
-
-        StringBuilder decodedFilenameBuilder = new StringBuilder();
-        Matcher matcher = pattern.matcher(encodedFilename);
-
-        while (matcher.find()) {
-            String charset = matcher.group(1); // 编码字符集
-            String encodingType = matcher.group(2); // 编码类型 (B 或 Q)
-            String encodedContent = matcher.group(3); // Base64 或 Quoted-Printable 编码的内容
-
-            // 只处理 Base64 编码的内容
-            if ("B".equalsIgnoreCase(encodingType)) {
-                try {
-                    byte[] decodedBytes = Base64.getDecoder().decode(encodedContent);
-                    String decodedPart = new String(decodedBytes, charset);
-                    decodedFilenameBuilder.append(decodedPart);
-                } catch (Exception e) {
-                    e.printStackTrace(); // 处理解码异常
-                }
-            }
-        }
-
-        return decodedFilenameBuilder.toString();
-    }
-}

+ 0 - 52
src/main/resources/application.yml

@@ -1,52 +0,0 @@
-server:
-  port: 8974
-spring:
-  application:
-    name: workflow_streamliner
-  jackson:
-    date-format: yyyy-MM-dd HH:mm:ss
-    time-zone: GMT+8
-  datasource:
-    driver-class-name: com.mysql.cj.jdbc.Driver
-    url: jdbc:mysql://${DB_URL:139.196.160.101:3306/ComPDF_test}?autoReconnect=true&&useSSL=false
-    username: ${DB_USERNAME:debian-sys-maint}
-    password: ${DB_PASSWORD:tRF4SWujyo6rZ4Qm}
-    hikari:
-      # 最小空闲连接,默认值10
-      minimum-idle: 10
-      # 最大连接数
-      maximum-pool-size: 20
-      # 空闲连接超时时间
-      idle-timeout: 500000
-      # 连接最大存活时间
-      max-lifetime: 540000
-      # 连接超时时间
-      connection-timeout: 60000
-
-mybatis-plus:
-  mapper-locations: classpath:/mapper/*.xml
-  type-aliases-package: cn.kdan
-  configuration:
-    map-underscore-to-camel-case: true
-
-workflow:
-  newsletter:
-    host: ${NEWSLETTER_HOST:imappro.zoho.com}
-    port: ${NEWSLETTER_PORT:993}
-    user: ${NEWSLETTER_USER:news@compdf.com}
-    appPassword: ${NEWSLETTER_APP_PASSWORD:T0H1HUA1BZHD}
-    blockedStatus: ${BLOCKED_STATUS:邮件已屏蔽}
-    notFoundStatus: ${NOT_FOUND_STATUS:找不到地址}
-    senderTermString: ${SENDER_TERM_STRING:mailer-daemon@googlemail.com}
-    subjectTermString: ${SUBJECT_TERM_STRING:Delivery Status Notification (Failure)}
-  customer_email:
-    host: ${CUSTOMER_EMAIL_HOST:imappro.zoho.com}
-    port: ${CUSTOMER_EMAIL_PORT:993}
-    user: ${CUSTOMER_EMAIL_USER:support@pdfreaderpro.com}
-    appPassword: ${CUSTOMER_EMAIL_APP_PASSWORD:8etrVHCSUBEt}
-    folder: ${CUSTOMER_EMAIL_FOLDER:用户反馈}
-    authorization: ${MATTERMOST_AUTHORIZATION:Bearer p5xyd6ne53nrtk5bnfsrwg6xww}
-    channelId: ${MATTERMOST_CHANNEL_ID:6ydsewxfnfnxbec6iqqji7yijo} #测试频道
-#    channelId: ${MATTERMOST_CHANNEL_ID:faq8k7gx5tfg9f6tkofbggtj5y}
-    fileUrl: ${MATTERMOST_FILE_URL:https://chat.kdan.cc/api/v4/files}
-    postUrl: ${MATTERMOST_POST_URL:https://chat.kdan.cc/api/v4/posts}

+ 0 - 85
src/main/resources/logback-spring.xml

@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<configuration scan="true" scanPeriod="60 seconds">
-    <!-- 引入spirng boot默认的logback配置文件 -->
-    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
-
-    <springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue=""/>
-    <!--日志存放路径-->
-    <property name="log.path" value="/home/kdan/logs/${spring.application.name}"/>
-    <property name="log.pattern"
-              value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %-4relative [%15.15(%thread)] %-40.40(%logger{40}) : %msg%n"/>
-    <!-- 控制台输出 -->
-    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder>
-            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
-        </encoder>
-    </appender>
-
-    <!--debug日志-->
-    <appender name="debug_log" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <!--日志文件路径和名称-->
-        <File>${log.path}/info.log</File>
-
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>ERROR</level>
-            <!-- 如果命中ERROR就不记录这条日志 -->
-            <onMatch>DENY</onMatch>
-            <!-- 如果没有命中记录 -->
-            <onMismatch>ACCEPT</onMismatch>
-        </filter>
-
-        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <fileNamePattern>${log.path}/info.%d.%i.log</fileNamePattern>
-            <!-- 每个日志文件到10mb的时候开始切分,最多保留30天,但最大到20GB,哪怕没到30天也要删除多余的日志 -->
-            <maxHistory>7</maxHistory>
-            <totalSizeCap>5GB</totalSizeCap>
-            <maxFileSize>10MB</maxFileSize>
-        </rollingPolicy>
-        <!--编码器-->
-        <encoder>
-            <!-- pattern节点,用来设置日志的输入格式 ps:日志文件中没有设置颜色,否则颜色部分会有ESC[0:39em等乱码-->
-            <pattern>${log.pattern}</pattern>
-            <!-- 记录日志的编码:此处设置字符集 - -->
-            <charset>UTF-8</charset>
-        </encoder>
-    </appender>
-
-    <!--错误日志-->
-    <appender name="error_log" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <!--日志文件路径和名称-->
-        <File>${log.path}/error.log</File>
-        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-            <!-- 低于ERROR级别的日志(debug,info)将被拒绝,等于或者高于ERROR的级别将相应NEUTRAL -->
-            <level>ERROR</level>
-        </filter>
-        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <!-- 每产生一个日志文件,该日志文件的保存期限为30天, ps:maxHistory的单位是根据fileNamePattern中的翻转策略自动推算出来的,例如上面选用了yyyy-MM-dd,则单位为天
-            如果上面选用了yyyy-MM,则单位为月,另外上面的单位默认为yyyy-MM-dd-->
-            <fileNamePattern>${log.path}/error.%d.%i.log</fileNamePattern>
-            <maxHistory>7</maxHistory>
-            <!-- 每个日志文件到10mb的时候开始切分,最多保留30天,但最大到20GB,哪怕没到30天也要删除多余的日志 -->
-            <totalSizeCap>5GB</totalSizeCap>
-            <!-- maxFileSize:这是活动文件的大小,默认值是10MB-->
-            <maxFileSize>10MB</maxFileSize>
-        </rollingPolicy>
-        <!--编码器-->
-        <encoder>
-            <pattern>${log.pattern}</pattern>
-            <charset>UTF-8</charset>
-        </encoder>
-    </appender>
-
-    <!-- 系统模块日志级别控制  -->
-    <logger name="cn.kdan.mapper" level="debug" additivity="false">
-        <appender-ref ref="console"/>
-        <appender-ref ref="debug_log"/>
-        <appender-ref ref="error_log"/>
-    </logger>
-
-    <root level="INFO">
-        <appender-ref ref="console"/>
-        <appender-ref ref="debug_log"/>
-        <appender-ref ref="error_log"/>
-    </root>
-
-</configuration>

+ 89 - 0
src/main/resources/mac/InstalledAppInfo(丁林圭).txt

@@ -0,0 +1,89 @@
+MacAddr:C8:89:F3:B3:10:4A
+AppName	AppSign	
+
+Filmage Player.app	AppStore
+Support Tool.app	WithSecure Oyj 
+uninstall.app	WithSecure Oyj 
+WithSecure Agent.app	WithSecure Oyj 
+Visual Studio Code.app	Microsoft Corporation 
+Xmind.app	AppStore
+PDF Editor.app	Apple iPhone OS Application Signing
+BBEdit.app	AppStore
+SourceTree.app	Atlassian Pty Ltd
+TeamViewer.app	TeamViewer GmbH 
+PDFgear.app	AppStore
+Switcheroo.app	AppStore
+PDFCover.app	其它渠道
+PDFpen.app	SmileOnMyMac, LLC 
+MacWk Installer.app	yunnan Xingting Network Technology Co., Ltd 
+Google Chrome.app	Google LLC 
+PDF Reader.app	Kdan Mobile Software LTD 
+wpsoffice.app	AppStore
+CleanMyMac-X.app	MacPaw Inc. 
+PDF Reader Pro.app	PDF Technologies, Inc. 
+Microsoft Communicator.app	其它渠道
+TestFlight.app	AppStore
+Numbers.app	AppStore
+HBuilderX.app	Digital Heaven 
+Visual Studio.app	Microsoft Corporation 
+OneDrive.app	Microsoft Corporation 
+Mattermost.app	Mattermost, Inc. 
+UPDF.app	AppStore
+易我录屏助手.app	其它渠道
+Axure RP 9.app	Axure Software Solutions, Inc. 
+Apple Configurator 2.app	AppStore
+PDFTech Editor.app	PDF Technologies, Inc. 
+Filmage Converter.app	AppStore
+微信.app	Tencent Mobile International Limited 
+MindSpace.app	AppStore
+Filmage Screen.app	AppStore
+Affinity Designer 2.app	Serif 
+PDFelementStd6.app	Wondershare Software Co., Ltd 
+Xamarin Profiler.app	Microsoft Corporation 
+有道云笔记.app	AppStore
+Safari.app	系统软件
+MindNode.app	AppStore
+PDFelement.app	Wondershare Technology Group Co.,LTD 
+NoteLedge.app	AppStore
+PDF Reader.app	AppStore
+Xnip.app	AppStore
+福昕编辑器.app	Apple iPhone OS Application Signing
+Newton.app	AppStore
+WeChat.app	AppStore
+WhatsApp.app	WhatsApp Inc. 
+PDFelement (1).app	Wondershare Software Co., Ltd 
+Reader Free.app	Apple iPhone OS Application Signing
+Downie 4.app	其它渠道
+Keynote.app	AppStore
+DevEco-Studio.app	Huawei Device Co,. LTD 
+Xcode.app	AppStore
+ShadowsocksX.app	Jongun Kim 
+企业微信.app	Tencent Technology 
+Transporter.app	AppStore
+GarageBand.app	AppStore
+Microsoft Edge.app	Microsoft Corporation 
+Pages.app	AppStore
+Skype.app	Skype Communications S.a.r.l 
+Install Visual Studio for Mac.app	Microsoft Corporation 
+UrPointer.app	3rd Party Mac Developer Application: UGREEN GROUP LIMITED 
+LiquidText.app	AppStore
+Typora.app	TNT
+PDFGuru.app	AppStore
+Packages.app	Stephane Sudre 
+Foxit Phantom.app	AppStore
+SignFlow.app	AppStore
+Record It.app	AppStore
+Cisdem PDFMaster.app	ENOL INTERNATIONAL CO., LIMITED 
+Gihosoft TubeGet.app	Chunyan Zhong 
+Android Studio.app	Google LLC 
+Microsoft PowerPoint.app	Microsoft Corporation 
+Apowersoft PDF Editor.app	Apowersoft Limited 
+NeteaseMusic.app	Hangzhou Netease Cloud Music Technology Co., Ltd. 
+Tencent Lemon.app	Tencent Technology 
+PDF Expert.app	Readdle Technologies Limited 
+Skim.app	Christiaan Hofman 
+QQ.app	AppStore
+网易有道词典.app	AppStore
+Xcode14.app	系统软件
+MarkText.app	其它渠道
+ClashX.app	Fuzhou West2Online Internet Inc. 

+ 101 - 0
src/main/resources/mac/InstalledAppInfo(万军).txt

@@ -0,0 +1,101 @@
+MacAddr:F8:4D:89:69:CF:C1
+AppName	AppSign	
+
+Macwk VideoPlayer.app	其它渠道
+Swiftify for Xcode.app	AppStore
+BaiduNetdisk.app	AppStore
+magnetX.app	其它渠道
+iTools.app	Shenzhen Thinksky Technology Co.,Ltd 
+Adobe Acrobat Reader.app	Adobe Inc. 
+Figma.app	Figma, Inc. 
+SourceTree.app	Atlassian Pty Ltd
+XMind.app	XMind Ltd. 
+UlyssesMac.app	AppStore
+Mattermost.app	AppStore
+Google Chrome.app	Google LLC 
+Keka.app	Jorge Garcia Armero 
+DingTalk.app	AppStore
+wpsoffice.app	Zhuhai Kingsoft Office Software Co.,Ltd 
+QQ 2.app	Tencent Technology 
+PDF Reader Pro.app	PDF Technologies, Inc. 
+喜马拉雅.app	AppStore
+TestFlight.app	AppStore
+Zinnia.app	AppStore
+Fast PDF Converter.app	AppStore
+PDF Professional.app	AppStore
+MagicCollageLite.app	AppStore
+UPDF.app	AppStore
+Apple Configurator 2.app	AppStore
+Mail for Gmail.app	AppStore
+OnyX.app	Joel BARRIERE 
+PDF Reader Pro.app	TestFlight
+VIPVideo.app	其它渠道
+Thunder.app	Xunlei Computer LTD 
+QQMusic.app	Tencent Technology 
+Filmage Screen.app	AppStore
+Playgrounds.app	AppStore
+Google Drive.app	Google LLC 
+Xamarin Profiler.app	Microsoft Corporation 
+LynxPDF Editor.app	PDF Technologies, Inc. 
+Charles.app	XK72 Limited 
+Safari.app	系统软件
+有道云笔记.app	AppStore
+Microsoft Word.app	Microsoft Corporation 
+PDFelement.app	Wondershare Software Co., Ltd 
+Dropover.app	AppStore
+Feedback Assistant.app	系统软件
+Adobe Flash Player Install Manager.app	Adobe Inc. 
+DevCleaner.app	AppStore
+Filmage Editor.app	AppStore
+ChatGPT.app	OpenAI, L.L.C. 
+Microsoft Excel.app	Microsoft Corporation 
+WeChat.app	AppStore
+PDFelement (1).app	Wondershare Technology Group Co.,LTD 
+百度文库.app	Beijing Baidu Netcom Science & Technology Co.,Ltd 
+MarginNote 3.app	AppStore
+Google Docs.app	Google LLC 
+Cakebrew.app	Bruno P R Silva 
+IDLE.app	其它渠道
+Python Launcher.app	Ned Deily 
+Bear.app	AppStore
+Google Sheets.app	Google LLC 
+Prodrafts.app	AppStore
+Xcode.app	AppStore
+Google Slides.app	Google LLC 
+企业微信.app	Tencent Technology 
+Long Image Maker.app	AppStore
+Picsee.app	AppStore
+VideoFusion-macOS.app	AppStore
+The Unarchiver.app	AppStore
+AppTrans.app	iMobie Inc. 
+Keynote.app	AppStore
+ClashX.app	Fuzhou West2Online Internet Inc. 
+iTerm.app	GEORGE NACHMAN 
+Skype.app	Skype Communications S.a.r.l 
+UrPointer.app	3rd Party Mac Developer Application: UGREEN GROUP LIMITED 
+Zoho Mail - Desktop.app	Zoho Corporation 
+Support Tool.app	F-Secure Corporation 
+uninstall.app	F-Secure Corporation 
+F-Secure Mac Protection.app	F-Secure Corporation 
+GoodNotes.app	AppStore
+QQBrowserLite.app	AppStore
+Notability.app	AppStore
+Packages.app	Stephane Sudre 
+LiquidText.app	AppStore
+Pages.app	AppStore
+SignFlow.app	AppStore
+Gomoku-desktop.app	AppStore
+Foxit Phantom.app	AppStore
+Record It.app	AppStore
+KdanSign.app	Kdan Mobile Software LTD 
+Tencent Lemon.app	Tencent Technology 
+PDF Expert.app	Readdle Technologies Limited 
+Acrobat Distiller.app	Adobe Systems, Inc. 
+Adobe Acrobat.app	Adobe Systems, Inc. 
+SF Symbols.app	系统软件
+PhotoScapeX.app	AppStore
+AnyDesk.app	philandro Software GmbH 
+Foxit PDF Editor.app	Foxit Corporation 
+QQ.app	AppStore
+Sublime Text.app	Sublime HQ Pty Ltd 
+网易有道词典.app	Beijing NetEase Youdao Computer System Co.,Ltd 

+ 47 - 0
src/main/resources/mac/InstalledAppInfo(倪滤波).txt

@@ -0,0 +1,47 @@
+MacAddr:3C:22:FB:95:51:BD
+AppName	AppSign	
+
+Calliper.app	Beijing Paoding technology Co., LTD. 
+uninstall.app	WithSecure Oyj 
+Support Tool.app	WithSecure Oyj 
+WithSecure Agent.app	WithSecure Oyj 
+Mattermost.app	AppStore
+QQBrowser.app	Tencent Technology 
+Xmind.app	AppStore
+sogou_mac_614c.app	Beijing Sogou Technology Development Co.,Ltd. 
+Google Chrome.app	Google LLC 
+PDF Master.app	PDF Technologies, Inc. 
+PDF Reader Pro.app	AppStore
+LocalSend.app	AppStore
+wpsoffice.app	Zhuhai Kingsoft Office Software Co.,Ltd 
+TestFlight.app	AppStore
+QQMusic.app	AppStore
+Navicat Premium.app	PremiumSoft CyberTech Ltd. 
+有道云笔记.app	AppStore
+Safari.app	系统软件
+PDFelement.app	Wondershare Technology Group Co.,LTD 
+Microsoft Word.app	AppStore
+Apifox.app	Rayfox, Inc. 
+WeChat.app	AppStore
+Microsoft Excel.app	AppStore
+CacheRemove.app	PDF Technologies, Inc. 
+万兴PDF1.app	AppStore
+i4tools.app	其它渠道
+Cisdem PDFMaster.app	jun wan 
+企业微信.app	AppStore
+MySQLWorkbench.app	Oracle America, Inc. 
+PDFull.app	jun wan 
+PDF Master DMG.app	zhu dongyong 
+PDF Reader Pro 2.app	PDF Technologies, Inc. 
+PDFlux.app	Beijing Paoding technology Co., LTD. 
+SignFlow.app	AppStore
+印象笔记.app	AppStore
+NeteaseMusic.app	Hangzhou Netease Cloud Music Technology Co., Ltd. 
+Tencent Lemon.app	Tencent Technology 
+Adobe Acrobat.app	TEAM HCiSO 
+Microsoft PowerPoint.app	AppStore
+网易有道翻译.app	AppStore
+XiYou.app	yongzhi bao 
+QQ.app	AppStore
+Aurora.app	其它渠道
+Xcode.app	AppStore

+ 40 - 0
src/main/resources/mac/InstalledAppInfo(刘佳杰).txt

@@ -0,0 +1,40 @@
+MacAddr:90:9C:4A:B6:9F:E3
+AppName	AppSign	
+
+uninstall.app	WithSecure Oyj 
+Support Tool.app	WithSecure Oyj 
+WithSecure Agent.app	WithSecure Oyj 
+Mattermost.app	AppStore
+Google Chrome.app	Google LLC 
+Sourcetree.app	Atlassian Pty Ltd 
+TestFlight.app	AppStore
+wpsoffice.app	AppStore
+PDF Professional.app	AppStore
+OneDrive.app	Microsoft Corporation 
+UPDF.app	AppStore
+Zeplin.app	Zeplin, Inc. 
+Safari.app	系统软件
+LogiCapture Uninstaller.app	Logitech Inc. 
+Microsoft Excel.app	Microsoft Corporation 
+Microsoft Word.app	Microsoft Corporation 
+Numbers.app	AppStore
+BaiduNetdisk_mac.app	Baidu 
+WeChat.app	AppStore
+i4tools.app	其它渠道
+迅捷流程图.app	yun li 
+企业微信.app	Tencent Technology 
+Microsoft OneNote.app	Microsoft Corporation 
+Skype.app	Skype Communications S.a.r.l 
+Filmage Screen Pro.app	zhu dongyong 
+戴铭的开发小册子.app	其它渠道
+Android Studio.app	Google LLC 
+Acrobat Distiller.app	Adobe Inc. 
+Adobe Acrobat.app	Adobe Inc. 
+Microsoft PowerPoint.app	Microsoft Corporation 
+Clash for Windows.app	其它渠道
+Xcode.app	AppStore
+Webex.app	Cisco 
+Microsoft Teams.app	Microsoft Corporation 
+QQ.app	AppStore
+Tencent Lemon.app	Tencent Technology 
+ClashX.app	Fuzhou West2Online Internet Inc. 

+ 47 - 0
src/main/resources/mac/InstalledAppInfo(刘小龙).txt

@@ -0,0 +1,47 @@
+MacAddr:A0:78:17:A4:DF:51
+AppName	AppSign	
+
+Clash Verge.app	won fen 
+Support Tool.app	WithSecure Oyj 
+uninstall.app	WithSecure Oyj 
+WithSecure Agent.app	WithSecure Oyj 
+OpenMTP.app	Ganesh Rathinavel 
+iPic.app	AppStore
+Mattermost.app	AppStore
+Sourcetree.app	Atlassian Pty Ltd 
+Xmind.app	AppStore
+PDF Master.app	AppStore
+Google Chrome.app	Google LLC 
+LocalSend.app	AppStore
+PDF Reader Pro.app	PDF Technologies, Inc. 
+360加固助手.app	Beijing Qihoo Technology Co Ltd 
+wpsoffice.app	AppStore
+Beyond Compare.app	Scooter Software Inc. 
+PDFTech Editor.app	PDF Technologies, Inc. 
+Safari.app	系统软件
+GPG Keychain.app	GPGTools GmbH 
+legutools.app	Tencent Technology 
+ChatGPT.app	OpenAI, L.L.C. 
+DevEco-Studio.app	Huawei Device Co,. LTD 
+WeChat.app	AppStore
+Apifox.app	Rayfox, Inc. 
+WhatsApp.app	WhatsApp Inc. 
+i4tools.app	其它渠道
+GitHub Desktop.app	GitHub 
+万兴PDF.app	AppStore
+Microsoft To Do.app	AppStore
+ClashX.app	Fuzhou West2Online Internet Inc. 
+Skype.app	Skype Communications S.a.r.l 
+企业微信.app	AppStore
+Surge.app	Surge Networks Inc. 
+Android Studio.app	Google LLC 
+Typora.app	Abner Lee 
+LiquidText.app	AppStore
+印象笔记.app	AppStore
+Tencent Lemon Lite.app	AppStore
+Stats.app	Serhiy Mytrovtsiy 
+hisuite.app	AppStore
+Adobe Acrobat.app	Adobe Inc. 
+Android Studio 2.app	Google LLC 
+QQ.app	Tencent Technology 
+Xcode.app	AppStore

+ 33 - 0
src/main/resources/mac/InstalledAppInfo(吴祯琳).txt

@@ -0,0 +1,33 @@
+MacAddr:C4:91:0C:B3:22:79
+AppName	AppSign	
+
+Support Tool.app	WithSecure Oyj 
+uninstall.app	WithSecure Oyj 
+WithSecure Agent.app	WithSecure Oyj 
+WebViewer.app	其它渠道
+Mattermost.app	AppStore
+Visual Studio Code.app	Microsoft Corporation 
+Sourcetree.app	Atlassian Pty Ltd 
+Xmind.app	AppStore
+Google Chrome.app	Google LLC 
+PDF Reader Pro.app	PDF Technologies, Inc. 
+DingTalk.app	Taobao 
+Clash for Windows.app	其它渠道
+Snipaste.app	Le Liu 
+wpsoffice.app	Zhuhai Kingsoft Office Software Co.,Ltd 
+PDFTech Editor.app	PDF Technologies, Inc. 
+iTerm 2.app	GEORGE NACHMAN 
+FileZilla 2.app	Tim Kosse 
+SwitchHosts.app	Yingjie Wu 
+QQMusic.app	AppStore
+Filmage Screen.app	AppStore
+Safari.app	系统软件
+Microsoft Edge.app	Microsoft Corporation 
+企业微信.app	Tencent Technology 
+Joplin.app	Laurent Cozic 
+iTerm.app	GEORGE NACHMAN 
+Firefox.app	Mozilla Corporation 
+MarkText.app	其它渠道
+Apifox.app	Rayfox, Inc. 
+XiYou.app	DENG LONGGAN 
+Xcode.app	AppStore

+ 46 - 0
src/main/resources/mac/InstalledAppInfo(唐祥安).txt

@@ -0,0 +1,46 @@
+MacAddr:BC:D0:74:F1:59:89
+AppName	AppSign	
+
+Microsoft Teams classic.app	Microsoft Corporation 
+uninstall.app	WithSecure Oyj 
+Support Tool.app	WithSecure Oyj 
+WithSecure Agent.app	WithSecure Oyj 
+oss-browser.app	其它渠道
+Mattermost.app	AppStore
+JProfiler.app	ej-technologies GmbH 
+Xmind.app	XMind Ltd. 
+Steam.app	Valve Corporation 
+Google Chrome.app	Google LLC 
+完蛋!我被美女包围了!.app	其它渠道
+DingTalk.app	AppStore
+Another Redis Desktop Manager.app	其它渠道
+Microsoft Remote Desktop.app	Microsoft Corporation 
+PDFTech Editor.app	PDF Technologies, Inc. 
+Axure RP 9.app	Axure Software Solutions, Inc. 
+wpsoffice.app	AppStore
+aDrive.app	ALIBABA 
+Safari.app	系统软件
+QQMusic.app	AppStore
+Apifox.app	Rayfox, Inc. 
+Transmit.app	TNT
+WeChat.app	AppStore
+BaiduNetdisk_mac.app	Baidu 
+Dynamic Wallpaper.app	AppStore
+IntelliJ IDEA.app	JetBrains s.r.o. 
+The Unarchiver.app	AppStore
+ClashX.app	Fuzhou West2Online Internet Inc. 
+企业微信.app	AppStore
+Skype.app	Skype Communications S.a.r.l 
+iTerm.app	GEORGE NACHMAN 
+Docker.app	Docker Inc 
+iShot.app	AppStore
+Typora.app	TNT
+UrPointer.app	3rd Party Mac Developer Application: UGREEN GROUP LIMITED 
+lghub.app	Logitech Inc. 
+Postman.app	Postdot Technologies, Inc 
+RubyMine.app	JetBrains s.r.o. 
+PicGo.app	其它渠道
+DataGrip.app	JetBrains s.r.o. 
+QQ.app	AppStore
+CLion.app	JetBrains s.r.o. 
+Pages.app	AppStore

+ 67 - 0
src/main/resources/mac/InstalledAppInfo(崔鳯鸣).txt

@@ -0,0 +1,67 @@
+MacAddr:74:8F:3C:BB:B8:B8
+AppName	AppSign	
+
+FontForge.app	其它渠道
+Visual Studio Code.app	Microsoft Corporation 
+BBEdit.app	Bare Bones Software, Inc. 
+Sourcetree.app	Atlassian Pty Ltd 
+Mattermost.app	Mattermost, Inc. 
+Xmind.app	XMind Ltd. 
+Google Chrome.app	Google LLC 
+DingTalk.app	AppStore
+PDF Reader Pro.app	PDF Technologies, Inc. 
+wpsoffice.app	Zhuhai Kingsoft Office Software Co.,Ltd 
+VMware Fusion.app	VMware, Inc. 
+PDF Professional.app	AppStore
+Clash for Windows.app	其它渠道
+PDFelementStd6.app	AppStore
+禅道.app	Apple iPhone OS Application Signing
+PDFTech Editor.app	PDF Technologies, Inc. 
+StrongVPN.app	Strong Technology, LLC 
+ShadowsocksX.app	AppStore
+Zentao Pro.app	Apple iPhone OS Application Signing
+有道云笔记.app	AppStore
+Safari.app	系统软件
+PDFelement.app	Wondershare Software Co., Ltd 
+Microsoft Word.app	AppStore
+AdobeGCClient.app	Adobe Inc. 
+AdobeCleanUpUtility.app	Adobe Inc. 
+Logi Bolt Uninstaller.app	Logitech Inc. 
+CCXProcess.app	Adobe Systems, Inc. 
+ACCFinderBundleLoader.app	Adobe Systems, Inc. 
+Core Sync.app	Adobe Systems, Inc. 
+AdobeIPCBroker.app	Adobe Systems, Inc. 
+LogiMgr Uninstaller.app	Logitech Inc. 
+PDF Viewer.app	jun wan 
+WeChat.app	Tencent Mobile International Limited 
+PDFelement (1).app	Wondershare Technology Group Co.,LTD 
+Refined GitHub.app	AppStore
+BaiduNetdisk_mac.app	Baidu 
+企业微信.app	Tencent Technology 
+Wayback Machine.app	AppStore
+The Unarchiver.app	AppStore
+PDF Professional Suite.app	AppStore
+ClashX.app	Fuzhou West2Online Internet Inc. 
+iTerm.app	GEORGE NACHMAN 
+Skype.app	Skype Communications S.a.r.l 
+Mos.app	其它渠道
+StrongVPN Client.app	Strong Technology, LLC 
+F-Secure Mac Protection.app	F-Secure Corporation 
+uninstall.app	F-Secure Corporation 
+Support Tool.app	F-Secure Corporation 
+PDFGuru.app	AppStore
+Tencent Lemon.app	Tencent Technology 
+PDF Expert.app	Readdle Technologies Limited 
+Acrobat Distiller.app	Adobe Systems, Inc. 
+Adobe Acrobat.app	Adobe Systems, Inc. 
+Pages.app	AppStore
+Foxit PDF Reader.app	AppStore
+福昕阅读器.app	Apple iPhone OS Application Signing
+CMake.app	Kitware Inc. 
+万兴PDF专家.app	AppStore
+Foxit PDF Editor.app	Foxit Corporation 
+QQ.app	Tencent Technology 
+Sublime Text.app	Sublime HQ Pty Ltd 
+网易有道词典.app	AppStore
+Xcode.app	系统软件
+Xcode-13.2.1.app	系统软件

+ 26 - 0
src/main/resources/mac/InstalledAppInfo(廖双).txt

@@ -0,0 +1,26 @@
+MacAddr:C8:89:F3:EB:64:EA
+AppName	AppSign	
+
+Mattermost.app	AppStore
+Figma+汉化+EX.app	Figma, Inc. 
+Google Chrome.app	Google LLC 
+Xmind.app	XMind Ltd. 
+wpsoffice.app	AppStore
+UPDF.app	Superace Software Technology Co., Ltd. 
+LynxPDF Editor.app	PDF Technologies, Inc. 
+PDF Reader Pro.app	PDF Technologies, Inc. 
+Safari.app	系统软件
+AdobeCleanUpUtility.app	Adobe Inc. 
+AdobeGCClient.app	Adobe Inc. 
+PDFelement.app	Wondershare Technology Group Co.,LTD 
+BaiduNetdisk_mac.app	Baidu 
+Kdan Cloud.app	Apple iPhone OS Application Signing
+WeChat.app	Tencent Mobile International Limited 
+企业微信.app	AppStore
+Blender.app	Stichting Blender Foundation 
+NeteaseMusic.app	Hangzhou Netease Cloud Music Technology Co., Ltd. 
+VideoFusion-macOS.app	AppStore
+Acrobat Distiller.app	Adobe Inc. 
+Adobe Acrobat.app	Adobe Inc. 
+网易有道翻译.app	AppStore
+Foxit PDF Reader.app	Foxit Corporation 

+ 20 - 0
src/main/resources/mac/InstalledAppInfo(彭胜).txt

@@ -0,0 +1,20 @@
+MacAddr:A4:83:E7:C0:A7:F6
+AppName	AppSign	
+
+uninstall.app	WithSecure Oyj 
+Support Tool.app	WithSecure Oyj 
+WithSecure Agent.app	WithSecure Oyj 
+Google Chrome.app	Google LLC 
+Termius.app	Termius Corporation 
+PyCharm.app	JetBrains s.r.o. 
+Safari.app	系统软件
+ChatGPT.app	OpenAI, L.L.C. 
+ClashX Pro.app	Fuzhou West2Online Internet Inc. 
+WeChat.app	Tencent Mobile International Limited 
+UrPointer.app	3rd Party Mac Developer Application: UGREEN GROUP LIMITED 
+Tencent Lemon.app	Tencent Technology 
+企业微信.app	Tencent Technology 
+CMake.app	Kitware Inc. 
+CLion.app	JetBrains s.r.o. 
+Numbers.app	AppStore
+Xcode.app	AppStore

+ 63 - 0
src/main/resources/mac/InstalledAppInfo(易思特).txt

@@ -0,0 +1,63 @@
+MacAddr:3C:22:FB:95:D3:E7
+AppName	AppSign	
+
+Mattermost.app	AppStore
+DeepL.app	Linguee GmbH 
+XMind.app	AppStore
+Google Chrome.app	Google LLC 
+讯飞听见同传.app	鹏鹏 骆 
+PDF Reader Pro.app	AppStore
+wpsoffice.app	Zhuhai Kingsoft Office Software Co.,Ltd 
+TestFlight.app	AppStore
+Grammarly Desktop.app	Grammarly, Inc 
+Axure RP 10.app	Axure Software Solutions, Inc. 
+PDF Professional.app	AppStore
+PDF Master.app	PDF Technologies, Inc. 
+Wondershare PDFelement 7.app	Wondershare Software Co., Ltd 
+PDF Reader Pro 标准版.app	PDF Technologies, Inc. 
+iMovie.app	AppStore
+PDFTech Editor.app	PDF Technologies, Inc. 
+PDFelement (2).app	Wondershare Technology Group Co.,LTD 
+PDFelement 6 std.app	Wondershare Software Co., Ltd 
+UPDF.app	Superace Software Technology Co., Ltd. 
+PDF Expert v3.0.app	Readdle Technologies Limited 
+Grammarly for Safari.app	AppStore
+Safari.app	系统软件
+ShadowsocksX.app	Jongun Kim 
+PDFelement.app	Wondershare Software Co., Ltd 
+Adobe Premiere Pro 2020.app	Adobe Systems, Inc. 
+Microsoft Word.app	Microsoft Corporation 
+WeChat.app	AppStore
+Microsoft Excel.app	Microsoft Corporation 
+PDFelement (1).app	Wondershare Software Co., Ltd 
+Microsoft Outlook.app	Microsoft Corporation 
+企业微信.app	Tencent Technology 
+Microsoft To Do.app	AppStore
+GarageBand.app	AppStore
+Filmage Screen.app	PDF Technologies, Inc. 
+PDFelementPro6.app	Wondershare Software Co., Ltd 
+Wondershare PDFelement 9.app	Wondershare Software Co., Ltd 
+VideoFusion-macOS.app	Shenzhen Lianmeng Technology Co.Ltd. 
+Skype.app	Skype Communications S.a.r.l 
+Filmage Editor.app	PDF Technologies, Inc. 
+Zoho Mail - Desktop.app	Zoho Corporation 
+UrPointer.app	3rd Party Mac Developer Application: UGREEN GROUP LIMITED 
+Support Tool.app	F-Secure Corporation 
+uninstall.app	F-Secure Corporation 
+F-Secure Mac Protection.app	F-Secure Corporation 
+Firefox.app	Mozilla Corporation 
+PDF Reader Pro 2.app	PDF Technologies, Inc. 
+SignFlow.app	AppStore
+Wondershare PDFelement 8.app	Wondershare Software Co., Ltd 
+Microsoft PowerPoint.app	Microsoft Corporation 
+PDF Reader Pro 3.app	PDF Technologies, Inc. 
+NeteaseMusic.app	Hangzhou Netease Cloud Music Technology Co., Ltd. 
+Tencent Lemon.app	Tencent Technology 
+XiYou.app	DENG LONGGAN 
+PDF Expert.app	Readdle Technologies Limited 
+PDF Reader Pro 4.app	PDF Technologies, Inc. 
+SunloginClient.app	Shanghai best oray information s&t co.,ltd 
+Foxit PDF Editor.app	Foxit Corporation 
+PDF Reader Pro 5.app	PDF Technologies, Inc. 
+CCtalk.app	Shanghai Xianghu Network Technology Co., Ltd. 
+Xcode.app	AppStore

+ 79 - 0
src/main/resources/mac/InstalledAppInfo(曾宏).txt

@@ -0,0 +1,79 @@
+MacAddr:E2:98:91:61:B0:2E
+AppName	AppSign	
+
+uninstall.app	WithSecure Oyj 
+Support Tool.app	WithSecure Oyj 
+WithSecure Agent.app	WithSecure Oyj 
+KugouMusic.app	AppStore
+暴风影音.app	AppStore
+Sourcetree.app	Atlassian Pty Ltd 
+Xmind.app	AppStore
+PDFgear.app	AppStore
+Figma.app	Figma, Inc. 
+Cisco Webex Meetings.app	Cisco 
+Mattermost.app	AppStore
+PDF Master.app	AppStore
+SanDisk Security Uninstaller.app	Western Digital Corporation Branded Products Group 
+DingTalk.app	AppStore
+Google Chrome.app	Google LLC 
+TestFlight.app	AppStore
+PDF Professional.app	AppStore
+豆果美食.app	AppStore
+UPDF.app	AppStore
+wpsoffice.app	Zhuhai Kingsoft Office Software Co.,Ltd 
+PDFTech Editor.app	PDF Technologies, Inc. 
+iLovePDF.app	AppStore
+Filmage Converter.app	AppStore
+KuwoMusic.app	AppStore
+XLPlayer.app	Xunlei Computer LTD 
+Thunder.app	Xunlei Computer LTD 
+QQMusic.app	AppStore
+Write-on Video.app	AppStore
+Zeplin.app	Zeplin, Inc. 
+有道云笔记.app	AppStore
+Microsoft Word.app	AppStore
+TencentMeeting.app	AppStore
+Safari.app	系统软件
+PDFelement.app	Wondershare Technology Group Co.,LTD 
+NoteLedge.app	AppStore
+Feedback Assistant.app	系统软件
+zoom.us.app	Zoom Video Communications, Inc. 
+Xcode.app	AppStore
+WeChat.app	AppStore
+虎牙直播.app	AppStore
+Microsoft Excel.app	AppStore
+迅捷流程图.app	yun li 
+Animation Desk Classic.app	AppStore
+SanDisk Security.app	Western Digital Corporation Branded Products Group 
+万兴PDF.app	AppStore
+i4tools.app	其它渠道
+企业微信.app	Tencent Technology 
+Markup - Web Markups & Highlighter.app	AppStore
+Animation Ult.app	其它渠道
+Microsoft Edge.app	Microsoft Corporation 
+The Unarchiver.app	MacPaw Inc. 
+高德地图.app	AppStore
+ClashX.app	Fuzhou West2Online Internet Inc. 
+BaiduNetdisk_mac.app	Baidu 
+Skype.app	Skype Communications S.a.r.l 
+QQLive.app	AppStore
+UrPointer.app	3rd Party Mac Developer Application: UGREEN GROUP LIMITED 
+Typora.app	Abner Lee 
+Live Wallpaper.app	AppStore
+PDF Reader.app	Kdan Mobile Software LTD 
+Foxit Phantom.app	AppStore
+Record It.app	AppStore
+Firefox.app	Mozilla Corporation 
+Microsoft PowerPoint.app	AppStore
+NeteaseMusic.app	Hangzhou Netease Cloud Music Technology Co., Ltd. 
+Tencent Lemon.app	Tencent Technology 
+XiYou.app	DENG LONGGAN 
+PDF Reader Pro.app	PDF Technologies, Inc. 
+Webex.app	Cisco 
+Foxit PDF Reader.app	AppStore
+爱奇艺.app	AppStore
+ApowerMirror.app	AppStore
+QQ.app	AppStore
+Motrix.app	Xian Gen Wu 
+戴铭的开发小册子.app	其它渠道
+Ryujinx.app	其它渠道

File diff suppressed because it is too large
+ 1818 - 0
src/main/resources/mac/InstalledAppInfo(李佰).txt


+ 82 - 0
src/main/resources/mac/InstalledAppInfo(李哲).txt

@@ -0,0 +1,82 @@
+MacAddr:F8:4D:89:67:18:14
+AppName	AppSign	
+
+Clash Verge.app	其它渠道
+BaiduNetdisk.app	AppStore
+PDF Reader.app	Apple iPhone OS Application Signing
+Visual Studio Code.app	Microsoft Corporation 
+TeamViewer.app	TeamViewer GmbH 
+KugouMusic.app	AppStore
+BestZip.app	AppStore
+Sourcetree.app	Atlassian Pty Ltd 
+抖音.app	AppStore
+iMyFone Filme.app	Shenzhen imyfone Technology Co.Ltd. 
+Google Chrome.app	Google LLC 
+Mattermost.app	Mattermost, Inc. 
+XMind ZEN.app	XMind Ltd. 
+PDF Reader Pro.app	PDF Technologies, Inc. 
+wpsoffice.app	Zhuhai Kingsoft Office Software Co.,Ltd 
+Numbers.app	AppStore
+TestFlight.app	AppStore
+PDF Professional.app	AppStore
+UPDF.app	Superace Software Technology Co., Ltd. 
+FastZip.app	AppStore
+IINA.app	HeChen LI 
+Telegram.app	TELEGRAM MESSENGER LLP 
+Axure RP 9.app	Axure Software Solutions, Inc. 
+Filmage Converter.app	AppStore
+XLPlayer.app	Xunlei Computer LTD 
+同花顺.app	AppStore
+V2rayU.app	Mac Developer: yanue@outlook.com 
+Xcode.app	AppStore
+Automatic Duck.app	Adobe Systems, Inc. 
+DaVinci Resolve Panels Setup.app	Blackmagic Design Inc 
+DaVinci Resolve Project Server.app	Blackmagic Design Inc 
+DaVinci Resolve.app	其它渠道
+TencentMeeting.app	Tencent Technology 
+Xamarin Profiler.app	Microsoft Corporation 
+Safari.app	系统软件
+有道云笔记.app	NetEase Youdao 
+NoteLedge.app	AppStore
+PDFelement.app	Wondershare Technology Group Co.,LTD 
+Thunder.app	Xunlei Computer LTD 
+Microsoft Excel.app	Microsoft Corporation 
+Feedback Assistant.app	系统软件
+AdobeCleanUpUtility.app	Adobe Inc. 
+AdobeGCClient.app	Adobe Inc. 
+CCXProcess.app	Adobe Systems, Inc. 
+ACCFinderBundleLoader.app	Adobe Systems, Inc. 
+WeChat.app	AppStore
+ChatGPT.app	OpenAI, L.L.C. 
+迅捷流程图.app	yun li 
+PDF Reader.app	AppStore
+BaiduNetdisk_mac.app	Baidu 
+VideoFusion-macOS.app	AppStore
+企业微信.app	Tencent Technology 
+Skype.app	Skype Communications S.a.r.l 
+QQLive.app	AppStore
+iTools Pro.app	其它渠道
+YoudaoNote.app	AppStore
+UrPointer.app	3rd Party Mac Developer Application: UGREEN GROUP LIMITED 
+Support Tool.app	F-Secure Corporation 
+F-Secure Mac Protection.app	F-Secure Corporation 
+uninstall.app	F-Secure Corporation 
+Developer.app	AppStore
+Typora.app	TNT
+Android Studio.app	Google LLC 
+Keynote.app	AppStore
+Pages.app	AppStore
+Foxit Phantom.app	Fuzhou Foxit Network Technology Co., Ltd. 
+My2oneCloud.app	其它渠道
+印象笔记.app	Beijing Yinxiang Biji Technologies Co., Ltd. 
+NeteaseMusic.app	AppStore
+PDF Expert.app	TNT
+Movavi Video Editor Plus 2021.app	Movavi Software Inc 
+Acrobat Distiller.app	Adobe Inc. 
+Tencent Lemon.app	Tencent Technology 
+Postman.app	Postdot Technologies, Inc 
+Wondershare Filmora X.app	AppStore
+网易有道翻译.app	AppStore
+QQ.app	AppStore
+Wondershare Filmora9.app	Wondershare Software Co., Ltd 
+Wondershare Filmora.app	Wondershare Software Co., Ltd 

+ 55 - 0
src/main/resources/mac/InstalledAppInfo(杨丽).txt

@@ -0,0 +1,55 @@
+MacAddr:38:F9:D3:70:64:41
+AppName	AppSign	
+
+Microsoft Teams classic.app	Microsoft Corporation 
+uninstall.app	WithSecure Oyj 
+Support Tool.app	WithSecure Oyj 
+WithSecure Agent.app	WithSecure Oyj 
+Adobe Acrobat Reader.app	Adobe Inc. 
+Mattermost.app	AppStore
+Google Chrome.app	Google LLC 
+HP Smart.app	AppStore
+PDF Reader.app	AppStore
+Grammarly Desktop.app	Grammarly, Inc 
+PDF Reader Pro.app	PDF Technologies, Inc. 
+PDFlux 2.app	Beijing Paoding technology Co., LTD. 
+DingTalk.app	AppStore
+PDFTech Editor.app	PDF Technologies, Inc. 
+PDF Professional.app	AppStore
+wpsoffice.app	AppStore
+Filmage Converter.app	PDF Technologies, Inc. 
+Video Converter Movavi.app	AppStore
+TencentMeeting.app	AppStore
+Wondershare DemoCreator.app	Wondershare Software Co., Ltd 
+FonePaw Screen Recorder.app	FonePaw Technology Limited 
+PDF Reader.app	AppStore
+Safari.app	系统软件
+PDFelement.app	Wondershare Software Co., Ltd 
+Filmage Editor.app	AppStore
+美图秀秀.app	AppStore
+zoom.us.app	Zoom Video Communications, Inc. 
+WeChat.app	AppStore
+WhatsApp.app	AppStore
+Microsoft Word.app	Microsoft Corporation 
+VirtualBox.app	Oracle America, Inc. 
+Microsoft Excel.app	Microsoft Corporation 
+企业微信.app	AppStore
+Movavi Screen Recorder 23.app	Movavi Software Inc 
+VideoFusion-macOS.app	AppStore
+Skype.app	Skype Communications S.a.r.l 
+Zoho Mail - Desktop.app	Zoho Corporation 
+Capto.app	Global Delight Technologies Pvt. Ltd 
+PDFlux.app	Beijing Paoding technology Co., LTD. 
+UrPointer.app	3rd Party Mac Developer Application: UGREEN GROUP LIMITED 
+OBS.app	Wizards of OBS LLC 
+Sejda PDF Desktop.app	Eduard Weissmann 
+XiYou.app	DENG LONGGAN 
+Microsoft PowerPoint.app	Microsoft Corporation 
+Tencent Lemon.app	Tencent Technology 
+PDF Expert.app	Readdle Technologies Limited 
+Microsoft Teams.app	Microsoft Corporation 
+Foxit PDF Reader.app	AppStore
+网易有道翻译.app	Beijing NetEase Youdao Computer System Co.,Ltd 
+Foxit PDF Editor.app	Foxit Corporation 
+Record It.app	Build to Connect, Inc. 
+Filmage Screen.app	PDF Technologies, Inc. 

+ 24 - 0
src/main/resources/mac/InstalledAppInfo(杨杨).txt

@@ -0,0 +1,24 @@
+MacAddr:50:ED:3C:4F:00:E0
+AppName	AppSign
+
+Support Tool.app	WithSecure Oyj
+uninstall.app	WithSecure Oyj
+WithSecure Agent.app	WithSecure Oyj
+Grammarly Desktop.app	Grammarly, Inc
+Google Chrome.app	Google LLC
+Mattermost.app	AppStore
+OneDrive.app	AppStore
+Install macOS Sonoma.app	系统软件
+PDF Reader Pro官网.app	PDF Technologies, Inc.
+Filmage Screen.app	PDF Technologies, Inc.
+Safari.app	系统软件
+照片的副本.app	系统软件
+Filmage Editor.app	PDF Technologies, Inc.
+wpsoffice.app	AppStore
+Prodrafts.app	AppStore
+GitHub Desktop.app	GitHub
+SignFlow.app	AppStore
+VideoFusion-macOS.app	AppStore
+Foxit Phantom.app	AppStore
+企业微信.app	AppStore
+AnyDesk.app	philandro Software GmbH

+ 102 - 0
src/main/resources/mac/InstalledAppInfo(杨柳华).txt

@@ -0,0 +1,102 @@
+MacAddr:14:7D:DA:17:CD:4F
+AppName	AppSign	
+
+Support Tool.app	WithSecure Oyj 
+uninstall.app	WithSecure Oyj 
+WithSecure Agent.app	WithSecure Oyj 
+Visual Studio Code.app	Microsoft Corporation 
+VLC.app	VideoLAN 
+XMind.app	AppStore
+Alfred.app	AppStore
+BBEdit.app	AppStore
+PDF Edit Pro.app	AppStore
+PDF Reader.app	AppStore
+Todoist.app	AppStore
+Sourcetree.app	Atlassian Pty Ltd 
+网络调试助手.app	AppStore
+SketchBook.app	AppStore
+Google Chrome.app	Google LLC 
+PDF Reader Pro.app	AppStore
+Android File Transfer.app	Google, Inc. 
+Mattermost.app	Mattermost, Inc. 
+imhex.app	其它渠道
+System Designer.app	AppStore
+DrUnarchiver.app	其它渠道
+wpsoffice.app	Zhuhai Kingsoft Office Software Co.,Ltd 
+zentaoclient.app	其它渠道
+Visual Studio.app	Microsoft Corporation 
+Spotify.app	Spotify 
+Longshot.app	AppStore
+PyCharm.app	JetBrains s.r.o. 
+MindNode.app	AppStore
+Clash Verge.app	won fen 
+QQ-NT.app	Tencent Technology 
+Xcode.app	AppStore
+Xamarin Profiler.app	Microsoft Corporation 
+Beyond Compare 2.app	Scooter Software Inc. 
+Microsoft Word.app	Microsoft Corporation 
+Zeplin.app	Zeplin, Inc. 
+PDF Converter Pro by Flyingbee.app	AppStore
+TencentMeeting.app	Tencent Technology 
+Safari.app	系统软件
+V2rayU.app	yanue@outlook.com 
+aDrive.app	ALIBABA 
+PDFelement.app	TNT
+Charles.app	XK72 Limited 
+Tiled.app	其它渠道
+Microsoft Excel.app	AppStore
+XQuartz.app	其它渠道
+Uninstall Razer Synapse.app	Razer USA Ltd.
+Adobe Flash Player Install Manager.app	Adobe Inc. 
+CCXProcess.app	Adobe Systems, Inc. 
+ACCFinderBundleLoader.app	Adobe Systems, Inc. 
+Core Sync.app	Adobe Systems, Inc. 
+ExtendScript Toolkit.app	Adobe Systems, Inc.
+OpenSC Notify.app	其它渠道
+zoom.us.app	Zoom Video Communications, Inc. 
+WeChat.app	Tencent Mobile International Limited 
+WhatsApp.app	WhatsApp Inc. 
+U.app	其它渠道
+GitHub Desktop.app	GitHub 
+MarginNote 3.app	AppStore
+Trim Enabler.app	Oskar Groth 
+PDFTech Editor.app	PDF Technologies, Inc. 
+BaiduNetdisk_mac.app	Baidu 
+企业微信.app	Tencent Technology 
+krita.app	K Desktop Environment e.V. 
+1Password 7.app	AgileBits Inc. 
+Microsoft To Do.app	AppStore
+DiffMerge.app	其它渠道
+PDFelementPro6.app	AppStore
+Microsoft Edge.app	Microsoft Corporation 
+ToDesk.app	Hainan Youqu Technology Co., Ltd. 
+亿图图示.app	AppStore
+IntelliJ IDEA CE.app	JetBrains s.r.o. 
+Skype.app	Skype Communications S.a.r.l 
+Ridill SQLIte.app	AppStore
+FileZilla.app	Tim Kosse 
+PDFlux.app	Beijing Paoding technology Co., LTD. 
+Mos.app	其它渠道
+Developer.app	AppStore
+TeamViewerQJ.app	TeamViewer GmbH 
+PP助手.app	其它渠道
+Android Studio.app	Google LLC 
+Typora.app	TNT
+PyCharm CE.app	JetBrains s.r.o. 
+SignFlow.app	AppStore
+Apowersoft PDF Editor.app	Apowersoft Limited 
+Bandizip.app	TEAM HCiSO 
+Tencent Lemon.app	Tencent Technology 
+Microsoft PowerPoint.app	AppStore
+PDF Expert.app	Readdle Technologies Limited 
+Reflector.app	Napkin Studio, LLC
+Acrobat Distiller.app	Adobe Systems, Inc. 
+Adobe Acrobat.app	Adobe Systems, Inc. 
+CLion.app	JetBrains s.r.o. 
+Fabric.app	Crashlytics, Inc. 
+Foxit PDF Reader.app	AppStore
+CalendarTask.app	AppStore
+Sublime Text.app	Sublime HQ Pty Ltd 
+网易有道词典.app	AppStore
+印象笔记.app	Beijing Yinxiang Biji Technologies Co., Ltd. 
+iTools Pro.app	Shenzhen Thinksky Technology Co.,Ltd 

+ 62 - 0
src/main/resources/mac/InstalledAppInfo(楚格).txt

@@ -0,0 +1,62 @@
+MacAddr:C4:91:0C:AE:6D:5D
+AppName	AppSign	
+
+Hysteria.app	其它渠道
+Support Tool.app	WithSecure Oyj 
+uninstall.app	WithSecure Oyj 
+WithSecure Agent.app	WithSecure Oyj 
+Adobe Acrobat Reader.app	Adobe Inc. 
+OmniConverter.app	AppStore
+XMind.app	XMind Ltd. 
+Figma.app	Figma, Inc. 
+Mattermost.app	AppStore
+WindTerm.app	其它渠道
+Microsoft Defender Shim.app	Microsoft Corporation 
+Visual Studio Code.app	Microsoft Corporation 
+Sourcetree.app	Atlassian Pty Ltd 
+Google Chrome.app	Google LLC 
+Dropbox.app	Dropbox, Inc. 
+TestFlight.app	AppStore
+PDF Reader Pro.app	jun wan 
+PDF Professional.app	AppStore
+OneDrive.app	Microsoft Corporation 
+UPDF.app	Superace Software Technology Co., Ltd. 
+Numbers.app	AppStore
+PyCharm.app	JetBrains s.r.o. 
+Navicat Premium.app	PremiumSoft CyberTech Ltd. 
+Microsoft Word.app	Microsoft Corporation 
+FTPServer.app	AppStore
+Safari.app	系统软件
+PDFelement.app	Wondershare Software Co., Ltd 
+Apifox.app	Rayfox, Inc. 
+PDF Master.app	PDF Technologies, Inc. 
+Microsoft Excel.app	Microsoft Corporation 
+Charles.app	XK72 Limited 
+CC Troubleshooter.app	Adobe Inc. 
+CCXProcess.app	Adobe Systems, Inc. 
+IDLE.app	其它渠道
+Python Launcher.app	Python Software Foundation 
+WeChat.app	Tencent Mobile International Limited 
+TencentMeeting.app	Tencent Technology 
+Xmind 2.app	XMind Ltd. 
+Microsoft Outlook.app	Microsoft Corporation 
+i4tools.app	其它渠道
+企业微信.app	Tencent Technology 
+BaiduNetdisk_mac.app	Baidu 
+Skype.app	Skype Communications S.a.r.l 
+iShot.app	AppStore
+Microsoft OneNote.app	Microsoft Corporation 
+UrPointer.app	3rd Party Mac Developer Application: UGREEN GROUP LIMITED 
+Record It Pro.app	AppStore
+Postman.app	Postdot Technologies, Inc 
+Microsoft PowerPoint.app	Microsoft Corporation 
+NeteaseMusic.app	Hangzhou Netease Cloud Music Technology Co., Ltd. 
+Xcode.app	系统软件
+XiYou.app	DENG LONGGAN 
+CacheRemove.app	PDF Technologies, Inc. 
+QQ.app	Tencent Technology 
+Firefox.app	Mozilla Corporation 
+Tencent Lemon.app	Tencent Technology 
+ClashX Pro.app	Fuzhou West2Online Internet Inc. 
+网易有道词典.app	Beijing NetEase Youdao Computer System Co.,Ltd 
+网易有道翻译.app	Beijing NetEase Youdao Computer System Co.,Ltd 

+ 19 - 0
src/main/resources/mac/InstalledAppInfo(汤超).txt

@@ -0,0 +1,19 @@
+MacAddr:A0:78:17:62:5F:9A
+AppName	AppSign	
+
+uninstall.app	WithSecure Oyj 
+Support Tool.app	WithSecure Oyj 
+WithSecure Agent.app	WithSecure Oyj 
+Google Chrome.app	Google LLC 
+PDF Master.app	AppStore
+PDF Reader Pro.app	AppStore
+Sourcetree.app	Atlassian Pty Ltd 
+UPDF.app	AppStore
+Safari.app	系统软件
+万兴PDF.app	AppStore
+Microsoft Edge.app	Microsoft Corporation 
+UrPointer.app	3rd Party Mac Developer Application: UGREEN GROUP LIMITED 
+企业微信.app	Tencent Technology 
+Mattermost.app	Mattermost, Inc. 
+Tencent Lemon.app	Tencent Technology 
+Xcode.app	系统软件

+ 26 - 0
src/main/resources/mac/InstalledAppInfo(王峥).txt

@@ -0,0 +1,26 @@
+MacAddr:78:4F:43:6D:95:B8
+AppName	AppSign	
+
+uninstall.app	WithSecure Oyj 
+Support Tool.app	WithSecure Oyj 
+WithSecure Agent.app	WithSecure Oyj 
+Mattermost.app	AppStore
+iRightMouse.app	AppStore
+Google Chrome.app	Google LLC 
+Xmind.app	AppStore
+LynxPDF Editor.app	PDF Technologies, Inc. 
+Safari.app	系统软件
+wpsoffice.app	AppStore
+WhatsApp.app	WhatsApp Inc. 
+WeChat.app	AppStore
+万兴PDF.app	AppStore
+企业微信.app	AppStore
+微信的副本.app	AppStore
+Skype.app	Skype Communications S.a.r.l 
+UrPointer.app	3rd Party Mac Developer Application: UGREEN GROUP LIMITED 
+Zoho Mail - Desktop.app	Zoho Corporation 
+PDF Reader Pro.app	PDF Technologies, Inc. 
+AnyDesk.app	philandro Software GmbH 
+PDFTech Editor.app	PDF Technologies, Inc. 
+PDFTech Editor 2.app	PDF Technologies, Inc. 
+XiYou.app	yongzhi bao 

+ 61 - 0
src/main/resources/mac/InstalledAppInfo(王帅).txt

@@ -0,0 +1,61 @@
+MacAddr:14:7D:DA:79:68:20
+AppName	AppSign	
+
+Support Tool.app	WithSecure Oyj 
+uninstall.app	WithSecure Oyj 
+WithSecure Agent.app	WithSecure Oyj 
+ABBYY FineReader PDF.app	ABBYY USA Software House Inc 
+BBEdit.app	AppStore
+Lantern.app	Innovate Labs LLC 
+Sourcetree.app	Atlassian Pty Ltd 
+PDF Master.app	AppStore
+Google Chrome.app	Google LLC 
+PDF Reader Pro.app	PDF Technologies, Inc. 
+PDF Reader Pro Lite.app	AppStore
+wpsoffice.app	Zhuhai Kingsoft Office Software Co.,Ltd 
+VMware Fusion.app	VMware, Inc. 
+OnyX.app	Joel BARRIERE 
+OneDrive.app	Microsoft Corporation 
+MindNode.app	AppStore
+QQMusic.app	Tencent Technology 
+Mattermost.app	Mattermost, Inc. 
+CamScanner.app	INTSIG Information Co.,Ltd 
+Microsoft Word.app	Microsoft Corporation 
+TencentMeeting.app	Tencent Technology 
+Safari.app	系统软件
+PDFelement.app	TNT
+Docker.app	Docker Inc 
+Locklizard Safeguard Viewer.app	LockLizard Limited 
+XQuartz.app	Apple Inc. - XQuartz 
+LINE.app	AppStore
+zoom.us.app	Zoom Video Communications, Inc. 
+WeChat.app	AppStore
+Microsoft Excel.app	Microsoft Corporation 
+PDF Viewer.app	AppStore
+WhatsApp.app	AppStore
+ShadowsocksX.app	Jongun Kim 
+App Cleaner 7.app	TNT
+BaiduNetdisk_mac.app	Baidu 
+The Unarchiver.app	AppStore
+企业微信.app	AppStore
+Skype.app	Skype Communications S.a.r.l 
+PDFlux.app	Beijing Paoding technology Co., LTD. 
+UrPointer.app	3rd Party Mac Developer Application: UGREEN GROUP LIMITED 
+Typora.app	TNT
+EasyConnect.app	SANGFOR Technologies Company Limited 
+Android Studio.app	Google LLC 
+SangforVDIClient.app	SANGFOR Technologies Company Limited 
+SignFlow.app	AppStore
+印象笔记.app	AppStore
+Postman.app	Postdot Technologies, Inc 
+NeteaseMusic.app	AppStore
+PDF Expert.app	Readdle Inc. 
+Adobe Acrobat.app	其它渠道
+Microsoft Teams.app	Microsoft Corporation 
+Tencent Lemon.app	Tencent Technology 
+Microsoft PowerPoint.app	Microsoft Corporation 
+网易有道词典.app	AppStore
+QQ.app	AppStore
+Slack.app	Slack Technologies, Inc. 
+FontLab 7.app	TNT
+Xcode.app	AppStore

+ 44 - 0
src/main/resources/mac/InstalledAppInfo(王晓).txt

@@ -0,0 +1,44 @@
+MacAddr:A4:83:E7:4B:D7:95
+AppName	AppSign	
+
+Mattermost.app	AppStore
+Google Chrome.app	Google LLC 
+wpsoffice.app	Zhuhai Kingsoft Office Software Co.,Ltd 
+Xmind.app	XMind Ltd. 
+Creative Cloud UI Helper.app	Adobe Inc. 
+LogTransport.app	Adobe Inc. 
+Adobe Crash Processor.app	Adobe Inc. 
+Adobe Crash Reporter.app	Adobe Inc. 
+LogTransport.app	Adobe Inc. 
+Adobe Crash Processor.app	Adobe Inc. 
+Adobe Crash Reporter.app	Adobe Inc. 
+Creative Cloud UI Helper (Renderer).app	Adobe Inc. 
+Creative Cloud UI Helper (GPU).app	Adobe Inc. 
+Safari.app	系统软件
+Markdown Editor.app	AppStore
+PDF Reader Pro.app	PDF Technologies, Inc. 
+AdobeCleanUpUtility.app	Adobe Inc. 
+AdobeGCClient.app	Adobe Inc. 
+Creative Cloud Desktop App.app	Adobe Inc. 
+Creative Cloud Installer.app	Adobe Inc. 
+Creative Cloud Uninstaller.app	Adobe Inc. 
+Adobe Creative Cloud Diagnostics.app	Adobe Inc. 
+Creative Cloud Helper.app	Adobe Inc. 
+Creative Cloud.app	Adobe Inc. 
+CCXProcess.app	Adobe Inc. 
+Core Sync.app	Adobe Inc. 
+AdobeIPCBroker.app	Adobe Systems, Inc. 
+GitHub Desktop.app	GitHub 
+Trojanx.app	其它渠道
+VideoFusion-macOS.app	AppStore
+企业微信.app	Tencent Technology 
+One Markdown.app	AppStore
+Adobe Photoshop 2024.app	Adobe Inc. 
+Zoho Mail - Desktop.app	Zoho Corporation 
+Support Tool.app	F-Secure Corporation 
+F-Secure Mac Protection.app	F-Secure Corporation 
+uninstall.app	F-Secure Corporation 
+Filmage Screen.app	PDF Technologies, Inc. 
+QQ.app	Tencent Technology 
+QQMusic.app	Tencent Technology 
+WeChat.app	Tencent Mobile International Limited 

+ 26 - 0
src/main/resources/mac/InstalledAppInfo(王玉婷).txt

@@ -0,0 +1,26 @@
+MacAddr:18:3E:EF:E7:A6:A8
+AppName	AppSign	
+
+Google Chrome.app	Google LLC 
+LocalSend.app	AppStore
+PDF Reader Pro.app	jun wan 
+XMind.app	XMind Ltd. 
+Mattermost.app	Mattermost, Inc. 
+V2rayU.app	Mac Developer: yanue@outlook.com 
+Hysteria.app	其它渠道
+Safari.app	系统软件
+QQMusic.app	AppStore
+Filmage Screen.app	PDF Technologies, Inc. 
+i4tools.app	其它渠道
+Apifox.app	Rayfox, Inc. 
+万兴PDF.app	AppStore
+Navicat Premium.app	PremiumSoft CyberTech Ltd. 
+WeChat.app	Tencent Mobile International Limited 
+iShot.app	AppStore
+企业微信.app	Tencent Technology 
+QQBrowserLite.app	AppStore
+Postman.app	Postdot Technologies, Inc 
+XiYou.app	DENG LONGGAN 
+Tencent Lemon.app	Tencent Technology 
+PyCharm CE.app	JetBrains s.r.o. 
+QQ.app	AppStore

+ 106 - 0
src/main/resources/mac/InstalledAppInfo(王超).txt

@@ -0,0 +1,106 @@
+MacAddr:C8:89:F3:B7:97:6A
+AppName	AppSign	
+
+Hysteria.app	其它渠道
+uninstall.app	WithSecure Oyj 
+Support Tool.app	WithSecure Oyj 
+WithSecure Agent.app	WithSecure Oyj 
+Adobe Acrobat Reader.app	Adobe Inc. 
+HBuilderX.app	Digital Heaven 
+Visual Studio Code.app	Microsoft Corporation 
+VLC.app	VideoLAN 
+SourceTree.app	Atlassian Pty Ltd 
+Alfred.app	AppStore
+CleverPDF.app	AppStore
+BBEdit.app	AppStore
+citra-qt.app	其它渠道
+maintenancetool.app	其它渠道
+Xmind.app	AppStore
+Steam.app	Valve Corporation 
+网络调试助手.app	AppStore
+PDF Reader.app	AppStore
+wpsoffice.app	AppStore
+Google Chrome.app	Google LLC 
+PDF Reader Pro.app	PDF Technologies, Inc. 
+Android File Transfer.app	Google, Inc. 
+Numbers.app	AppStore
+Mattermost.app	Mattermost, Inc. 
+ComPDFKit_Conversion_OCRDemo.app	其它渠道
+System Designer.app	AppStore
+UPDF.app	Superace Software Technology Co., Ltd. 
+Visual Studio.app	Microsoft Corporation 
+iMovie.app	AppStore
+iLovePDF.app	AppStore
+MindNode.app	AppStore
+PDFTech Editor.app	PDF Technologies, Inc. 
+wechatwebdevtools.app	Tencent Technology 
+Microsoft Word.app	AppStore
+Thunder.app	Xunlei Computer LTD 
+QQMusic.app	Tencent Technology 
+PixelStyle Photo Editor.app	AppStore
+Docker.app	Docker Inc 
+Cursor.app	Hilary Stout 
+PDF Converter Pro by Flyingbee.app	AppStore
+TencentMeeting.app	AppStore
+Charles.app	XK72 Limited 
+Safari.app	系统软件
+喜马拉雅.app	Xi Da 
+PDFelement.app	Wondershare Technology Group Co.,LTD 
+XQuartz.app	其它渠道
+Uninstall Razer Synapse.app	Razer USA Ltd.
+Adobe Flash Player Install Manager.app	Adobe Inc. 
+Microsoft Excel.app	AppStore
+OpenSC Notify.app	其它渠道
+Lantern.app	Innovate Labs LLC 
+WeChat.app	AppStore
+SamsungPortableSSD_1.0.app	Samsung Electronics 
+PDF Viewer.app	AppStore
+U.app	其它渠道
+Tiled.app	其它渠道
+Keynote.app	AppStore
+MarginNote 3.app	AppStore
+SMS-Activate.app	其它渠道
+V2RayX.app	其它渠道
+CopyLess 2.app	AppStore
+Trim Enabler.app	Oskar Groth 
+DiffMerge.app	其它渠道
+DeSmuME.app	其它渠道
+万兴PDF.app	AppStore
+TeamViewerQJ.app	TeamViewer GmbH 
+Pages.app	AppStore
+企业微信.app	Tencent Technology 
+Microsoft To Do.app	AppStore
+GarageBand.app	AppStore
+Tabby.app	Syslink GmbH 
+ToDesk.app	Hainan Youqu Technology Co., Ltd. 
+RemotePlay.app	Sony Interactive Entertainment Inc. 
+The Unarchiver.app	AppStore
+One Markdown.app	AppStore
+Skype.app	Skype Communications S.a.r.l 
+Ridill SQLIte.app	AppStore
+IntelliJ IDEA CE.app	JetBrains s.r.o. 
+PDFlux.app	Beijing Paoding technology Co., LTD. 
+印象笔记.app	AppStore
+Android Studio.app	Google LLC 
+SignFlow.app	AppStore
+PyCharm CE.app	JetBrains s.r.o. 
+Evernote.app	Evernote
+Microsoft PowerPoint.app	AppStore
+BaiduNetdisk_mac.app	Baidu 
+NeteaseMusic.app	Hangzhou Netease Cloud Music Technology Co., Ltd. 
+Tencent Lemon.app	Tencent Technology 
+Reflector.app	Napkin Studio, LLC
+PDF Expert.app	Readdle Inc. 
+Acrobat Distiller.app	Adobe Inc. 
+Adobe Acrobat.app	Adobe Inc. 
+Slack.app	AppStore
+Foxit PDF Reader.app	AppStore
+Fabric.app	Crashlytics, Inc. 
+Taio.app	AppStore
+CalendarTask.app	AppStore
+QQ.app	Tencent Technology 
+Sublime Text.app	Sublime HQ Pty Ltd 
+Xcode.app	AppStore
+PP助手.app	其它渠道
+CLion.app	JetBrains s.r.o. 
+XiYou.app	yongzhi bao 

+ 183 - 0
src/main/resources/mac/InstalledAppInfo(罗婉珠).txt

@@ -0,0 +1,183 @@
+MacAddr:A0:78:17:5E:AA:D9
+AppName	AppSign	
+
+SF Symbols beta.app	系统软件
+MockingBot.app	Yuanyi Zhang 
+UPDF(1).app	Superace Software Technology Co., Ltd. 
+HelloFont.app	Beijing Hanyi Keyin Information Technology Co.,Ltd 
+uninstall.app	WithSecure Oyj 
+Support Tool.app	WithSecure Oyj 
+WithSecure Agent.app	WithSecure Oyj 
+Adobe Acrobat Reader.app	Adobe Inc. 
+石墨文档.app	ChuXin Tec Co., Ltd. 
+Able2Extract Professional.app	其它渠道
+SourceTree.app	Atlassian Pty Ltd 
+Xmind.app	AppStore
+MokupFrames.app	Maksym Hryniv 
+PDF Connoisseur.app	AppStore
+GanttProject.app	BarD Software s.r.o 
+PDFgear.app	AppStore
+Figma.app	Figma, Inc. 
+EVAVEdit.app	Apple Distribution: zhenyu hu 
+Eagle.app	YiHao Chen 
+PDF Squeezer.app	TNT
+Mattermost.app	AppStore
+讯飞听见同传.app	鹏鹏 骆 
+Google Chrome.app	Google LLC 
+The Audio Converter.app	AppStore
+LICEcap.app	Cockos Incorporated 
+Craft.app	AppStore
+wpsoffice.app	AppStore
+Install WD Discovery.app	Western Digital Corporation Branded Products Group 
+Cutterman.app	Qianglong  Zheng 
+Solid Converter Mac.app	其它渠道
+RecordIt.app	AppStore
+BeeCut.app	Apowersoft Limited 
+Archiver.app	TNT
+Numbers.app	AppStore
+TextWrangler.app	3rd Party Mac Developer Application: Bare Bones Software, Inc.
+Notion.app	Notion Labs, Incorporated 
+Axure RP 10 Beta.app	Axure Software Solutions, Inc. 
+LogTransport.app	Adobe Inc. 
+AdobeCRDaemon.app	Adobe Inc. 
+Adobe Crash Reporter.app	Adobe Inc. 
+Adobe Crash Reporter.app	Adobe Inc. 
+LogTransport.app	Adobe Inc. 
+AdobeCRDaemon.app	Adobe Inc. 
+Adobe CEF Helper (GPU).app	Adobe Inc. 
+Adobe CEF Helper.app	Adobe Inc. 
+Adobe CEF Helper (Renderer).app	Adobe Inc. 
+Fast PDF Converter.app	AppStore
+PDF Professional.app	AppStore
+OneDrive.app	Microsoft Corporation 
+Blackmagic RAW Player.app	Blackmagic Design Inc 
+Blackmagic RAW Speed Test.app	Blackmagic Design Inc 
+Smart Converter.app	AppStore
+Axure RP 9.app	Axure Software Solutions, Inc. 
+UPDF.app	AppStore
+Adobe Photoshop 2021.app	Adobe Systems, Inc. 
+PDF Reader Pro.app	PDF Technologies, Inc. 
+Apple Configurator 2.app	AppStore
+iMovie.app	AppStore
+Filmage Converter Lite.app	AppStore
+喜马拉雅.app	tianchao zhang 
+EaseUS RecExperts.app	CHENGDU Yiwo Tech Development Co., Ltd 
+VN.app	AppStore
+Icon Slate.app	AppStore
+Movavi Screen Capture Pro 5.app	GOLDEN SOFTWARE INC. 
+Microsoft Word.app	Microsoft Corporation 
+Apowersoft Unlimited.app	Mac Developer: 李 Joni 
+Lingvanex Translator.app	AppStore
+Uninstall Resolve.app	Blackmagic Design Inc 
+DaVinci Resolve Panels Setup.app	Blackmagic Design Inc 
+DaVinci Resolve Project Server.app	Blackmagic Design Inc 
+DaVinci Resolve.app	Blackmagic Design Inc 
+虾米音乐.app	AppStore
+Gifox.app	TNT
+OmniFocus.app	AppStore
+Polarr Photo Editor.app	AppStore
+ShadowsocksX.app	Zhu Botao 
+Total Video Converter Pro.app	etinysoft Inc. 
+Adobe After Effects Render Engine.app	Adobe Systems, Inc. 
+Adobe After Effects 2021.app	Adobe Systems, Inc. 
+ApowerEdit.app	Apowersoft Limited 
+Write-on Video.app	AppStore
+TickTick.app	AppStore
+Wondershare Filmora Scrn.app	Wondershare Software Co., Ltd 
+1-Click Video Converter.app	AppStore
+TencentMeeting.app	AppStore
+Safari.app	系统软件
+PDFelement.app	Wondershare Technology Group Co.,LTD 
+Apowersoft Screen Recorder.app	AppStore
+MindNode 3.app	AppStore
+V2rayU.app	Mac Developer: yanue@outlook.com 
+Microsoft Excel.app	Microsoft Corporation 
+Xcode.app	AppStore
+蓝湖设计规范云.app	Beijing Boxuezhizhi Information Technology Co., Ltd. 
+Paste.app	TNT
+Kofax Power PDF for Mac.app	Kofax, Inc. 
+Feedback Assistant.app	系统软件
+AdobeCleanUpUtility.app	Adobe Inc. 
+AdobeGCClient.app	Adobe Inc. 
+Creative Cloud Desktop App.app	Adobe Inc. 
+CC Troubleshooter.app	Adobe Inc. 
+Creative Cloud Uninstaller.app	Adobe Inc. 
+Creative Cloud Installer.app	Adobe Inc. 
+Creative Cloud.app	Adobe Inc. 
+Creative Cloud Helper.app	Adobe Inc. 
+CCXProcess.app	Adobe Inc. 
+ACCFinderBundleLoader.app	Adobe Inc. 
+Core Sync.app	Adobe Inc. 
+PDF Viewer.app	AppStore
+PDF Viewer.app	AppStore
+PDFelement (1).app	Wondershare Software Co., Ltd 
+WeChat.app	AppStore
+Microsoft Outlook.app	Microsoft Corporation 
+Adobe Premiere Pro 2021.app	Adobe Systems, Inc. 
+嗨格式录屏大师.app	AppStore
+Bear.app	AppStore
+BaiduNetdisk_mac.app	AppStore
+Keynote.app	AppStore
+Wacom Tablet Utility.app	Wacom Technology Corp. 
+Wacom Display Settings.app	Wacom Technology Corp. 
+Wacom Desktop Center.app	Wacom Technology Corp. 
+Android File Transfer.app	Google Inc.
+Uninstall WD Discovery.app	Western Digital Corporation Branded Products Group 
+万兴PDF.app	Apple iPhone OS Application Signing
+GarageBand.app	AppStore
+Pages.app	AppStore
+天翼云盘.app	21CN Corporation Limited 
+企业微信.app	Tencent Technology 
+Microsoft To Do.app	AppStore
+PDFelementPro6.app	Wondershare Software Co., Ltd 
+VideoFusion-macOS.app	AppStore
+Microsoft Edge.app	Microsoft Corporation 
+Microsoft OneNote.app	Microsoft Corporation 
+InVision Studio.app	InVisionApp Inc. 
+PDF Professional Suite.app	其它渠道
+Sejda PDF Desktop.app	Eduard Weissmann 
+Elmedia Video Player.app	AppStore
+Macro.app	COPARSE, INC. 
+Cisdem PDFMaster.app	ENOL INTERNATIONAL CO., LIMITED 
+UniConverter.app	Wondershare Software Co., Ltd 
+Skype.app	Skype Communications S.a.r.l 
+YoudaoNote.app	AppStore
+BetterZip.app	Robert Rezabek 
+UrPointer.app	3rd Party Mac Developer Application: UGREEN GROUP LIMITED 
+Apowersoft Video Converter Studio.app	Mac Developer: 邱 Fred 
+LiquidText.app	AppStore
+Final Cut Pro.app	其它渠道
+Shottr.app	Max Kovalenko 
+PDFGuru.app	AppStore
+Principle.app	Daniel Hooper 
+SignFlow.app	AppStore
+Foxit Phantom.app	AppStore
+Record It.app	AppStore
+Uninstall ApowerREC.app	Mac Developer: li ying 
+ApowerREC.app	Apowersoft Limited 
+GIPHY CAPTURE.app	AppStore
+Movavi Video Editor Plus 2021.app	TNT
+NeteaseMusic.app	AppStore
+Tencent Lemon.app	Tencent Technology 
+Microsoft PowerPoint.app	Microsoft Corporation 
+PDF Expert.app	TNT
+Acrobat Distiller.app	TEAM HCiSO 
+Adobe Acrobat.app	TEAM HCiSO 
+XiYou.app	DENG LONGGAN 
+MKPlayer.app	AppStore
+SideNotes.app	TNT
+蓝湖 Axure.app	Beijing Jinwei Zhiguang Information Technology Co., Ltd. 
+Screen Record Lite-HD Recorder.app	AppStore
+Adobe Premiere Rush.app	Adobe Systems, Inc. 
+万兴PDF.app	AppStore
+Gifski.app	AppStore
+Discord.app	其它渠道
+Foxit PDF Editor.app	Foxit Corporation 
+网易有道翻译.app	AppStore
+Microsoft Messenger.app	其它渠道
+PDFelement Express.app	Wondershare Software Co., Ltd 
+Wondershare Filmora.app	Wondershare Software Co., Ltd 
+QQ.app	AppStore
+PDF Reader Pro copy.app	jun wan 
+EdrawProject.app	Edraw Software Co., Ltd 
+Wondershare Filmora9.app	Wondershare Software Co., Ltd 

+ 68 - 0
src/main/resources/mac/InstalledAppInfo(罗志鹏).txt

@@ -0,0 +1,68 @@
+MacAddr:90:9C:4A:BA:4B:B4
+AppName	AppSign	
+
+Z-Library.app	其它渠道
+PDF Reader.app	AppStore
+uninstall.app	其它渠道
+ida64.app	其它渠道
+Visual Studio Code.app	Microsoft Corporation 
+Sourcetree.app	Atlassian Pty Ltd 
+TeamViewer.app	TeamViewer Germany GmbH 
+Mattermost.app	AppStore
+XMind.app	XMind Ltd. 
+Google Chrome.app	Google LLC 
+PDF Reader Pro.app	PDF Technologies, Inc. 
+wpsoffice.app	Zhuhai Kingsoft Office Software Co.,Ltd 
+Numbers.app	AppStore
+Solver.app	其它渠道
+FlipClock.app	AppStore
+Beyond Compare.app	其它渠道
+TinyCal.app	其它渠道
+TencentDocs.app	Tencent Technology 
+VMware Fusion.app	VMware, Inc. 
+PyCharm.app	JetBrains s.r.o. 
+Dark Mode for Safari.app	AppStore
+ShadowsocksX.app	Jongun Kim 
+LynxPDF Editor.app	PDF Technologies, Inc. 
+Docker.app	Docker Inc 
+Movist Pro.app	Chul Joo 
+AdBlock.app	AppStore
+有道云笔记.app	NetEase Youdao 
+Safari.app	系统软件
+BestZip Pro.app	其它渠道
+Mate Translate.app	AppStore
+Xnip.app	AppStore
+Logi Options+ Driver Installer.app	Logitech Inc. 
+WeChat.app	Tencent Mobile International Limited 
+ChatGPT.app	OpenAI, L.L.C. 
+Microsoft Word.app	Microsoft Corporation 
+IntelliJ IDEA.app	JetBrains s.r.o. 
+MacDown.app	其它渠道
+tomatobell.app	AppStore
+Microsoft Excel.app	Microsoft Corporation 
+Dark Reader for Safari.app	AppStore
+Tab Space.app	AppStore
+Microsoft Outlook.app	Microsoft Corporation 
+The Unarchiver.app	MacPaw Inc. 
+ToDesk.app	Hainan Youqu Technology Co., Ltd. 
+企业微信.app	Tencent Technology 
+Skype.app	Skype Communications S.a.r.l 
+QQLive.app	AppStore
+Alfred 4.app	TNT
+Microsoft OneNote.app	Microsoft Corporation 
+Android Studio.app	Google LLC 
+Zoho Mail - Desktop.app	Zoho Corporation 
+Typora.app	TNT
+Messenger.app	Meta Platforms, Inc. 
+印象笔记.app	AppStore
+NeteaseMusic.app	AppStore
+Tencent Lemon.app	Tencent Technology 
+Acrobat Distiller.app	Adobe Inc. 
+Adobe Acrobat.app	Adobe Inc. 
+Microsoft PowerPoint.app	Microsoft Corporation 
+CLion.app	JetBrains s.r.o. 
+Foxit PDF Reader.app	Foxit Corporation 
+CMake.app	Kitware Inc. 
+Sublime Text.app	Sublime HQ Pty Ltd 
+QQ.app	AppStore
+Xcode.app	AppStore

+ 56 - 0
src/main/resources/mac/InstalledAppInfo(罗毅).txt

@@ -0,0 +1,56 @@
+MacAddr:F0:18:98:79:F4:71
+AppName	AppSign	
+
+Hysteria.app	其它渠道
+uninstall.app	WithSecure Oyj 
+Support Tool.app	WithSecure Oyj 
+WithSecure Agent.app	WithSecure Oyj 
+1Password.app	AgileBits Inc. 
+PDF Reader.app	AppStore
+Visual Studio Code.app	Microsoft Corporation 
+Termius.app	AppStore
+Sourcetree.app	Atlassian Pty Ltd 
+Xmind.app	AppStore
+Mattermost.app	AppStore
+Keka.app	Jorge Garcia Armero 
+Google Chrome.app	Google LLC 
+PDF Reader Pro.app	AppStore
+OneDrive.app	AppStore
+Inkscape.app	Rene de Hesselle 
+Wondershare Filmora X.app	AppStore
+Filmage Screen.app	PDF Technologies, Inc. 
+Xamarin Profiler.app	Microsoft Corporation 
+Safari.app	系统软件
+Filmage Editor.app	AppStore
+WeChat.app	AppStore
+Microsoft Word.app	AppStore
+KdanAuto.app	其它渠道
+Microsoft Excel.app	AppStore
+Numbers.app	AppStore
+Microsoft Outlook.app	AppStore
+1Password for Safari.app	AppStore
+MacDown.app	其它渠道
+pgAdmin 4.app	EnterpriseDB Corporation 
+Microsoft To Do.app	AppStore
+Transporter.app	AppStore
+企业微信.app	AppStore
+Microsoft Edge.app	Microsoft Corporation 
+The Unarchiver.app	AppStore
+One Markdown.app	AppStore
+Developer.app	AppStore
+Microsoft OneNote.app	AppStore
+Postman.app	Postdot Technologies, Inc 
+Record It.app	AppStore
+Rider.app	JetBrains s.r.o. 
+Xcode.app	AppStore
+KdanSign.app	zhu dongyong 
+NeteaseMusic.app	AppStore
+Microsoft PowerPoint.app	AppStore
+Keynote.app	AppStore
+Symbols Explorer.app	AppStore
+Pages.app	AppStore
+网易有道翻译.app	AppStore
+QQ.app	AppStore
+CMake.app	Kitware Inc. 
+XiYou.app	yongzhi bao 
+CLion.app	JetBrains s.r.o. 

+ 56 - 0
src/main/resources/mac/InstalledAppInfo(胡慧敏).txt

@@ -0,0 +1,56 @@
+MacAddr:8C:85:90:CF:36:96
+AppName	AppSign	
+
+uninstall.app	WithSecure Oyj 
+Support Tool.app	WithSecure Oyj 
+WithSecure Agent.app	WithSecure Oyj 
+Google Chrome.app	Google LLC 
+XMind.app	AppStore
+LocalSend.app	AppStore
+TestFlight.app	AppStore
+Clash Verge.app	其它渠道
+Creative Cloud UI Helper.app	Adobe Inc. 
+LogTransport.app	Adobe Inc. 
+Adobe Crash Processor.app	Adobe Inc. 
+Adobe Crash Reporter.app	Adobe Inc. 
+LogTransport.app	Adobe Inc. 
+Adobe Crash Processor.app	Adobe Inc. 
+Adobe Crash Reporter.app	Adobe Inc. 
+Creative Cloud UI Helper (Renderer).app	Adobe Inc. 
+Creative Cloud UI Helper (GPU).app	Adobe Inc. 
+wpsoffice.app	Zhuhai Kingsoft Office Software Co.,Ltd 
+Mattermost.app	Mattermost, Inc. 
+PDF Reader Pro.app	jun wan 
+OneDrive.app	Microsoft Corporation 
+QQMusic.app	AppStore
+Microsoft Word.app	AppStore
+Safari.app	系统软件
+LynxPDF Editor.app	PDF Technologies, Inc. 
+Microsoft Excel.app	Microsoft Corporation 
+Apifox.app	Rayfox, Inc. 
+Feedback Assistant.app	系统软件
+Creative Cloud Desktop App.app	Adobe Inc. 
+Creative Cloud Uninstaller.app	Adobe Inc. 
+Creative Cloud Installer.app	Adobe Inc. 
+Adobe Creative Cloud Diagnostics.app	Adobe Inc. 
+Creative Cloud.app	Adobe Inc. 
+Creative Cloud Helper.app	Adobe Inc. 
+CCXProcess.app	Adobe Inc. 
+Core Sync.app	Adobe Inc. 
+AdobeIPCBroker.app	Adobe Systems, Inc. 
+万兴PDF.app	AppStore
+WeChat.app	AppStore
+企业微信.app	Tencent Technology 
+Microsoft Edge.app	Microsoft Corporation 
+iShot.app	AppStore
+ToDesk.app	其它渠道
+Microsoft OneNote.app	Microsoft Corporation 
+Firefox.app	Mozilla Corporation 
+Foxit Phantom.app	AppStore
+Acrobat Distiller.app	Adobe Inc. 
+Adobe Acrobat.app	Adobe Inc. 
+Microsoft PowerPoint.app	Microsoft Corporation 
+QQ.app	AppStore
+BaiduNetdisk_mac.app	Baidu 
+Tencent Lemon.app	Tencent Technology 
+i4tools.app	其它渠道

+ 39 - 0
src/main/resources/mac/InstalledAppInfo(陈轺).txt

@@ -0,0 +1,39 @@
+MacAddr:BC:D0:74:1C:9C:A3
+AppName	AppSign	
+
+uninstall.app	WithSecure Oyj 
+Support Tool.app	WithSecure Oyj 
+WithSecure Agent.app	WithSecure Oyj 
+Mattermost.app	AppStore
+Figma.app	Figma, Inc. 
+PDFgear.app	AppStore
+PDF Master.app	PDF Technologies, Inc. 
+Xmind.app	XMind Ltd. 
+讯飞听见同传.app	鹏鹏 骆 
+Google Chrome.app	Google LLC 
+UPDF.app	Superace Software Technology Co., Ltd. 
+PDF Reader Pro.app	PDF Technologies, Inc. 
+wpsoffice.app	KINGSOFT OFFICE SOFTWARE CORPORATION LIMITED 
+Magnet.app	AppStore
+LynxPDF Editor.app	PDF Technologies, Inc. 
+Filmage Screen.app	PDF Technologies, Inc. 
+Safari.app	系统软件
+Spline.app	Alejandro Perez 
+PDFelement.app	Wondershare Technology Group Co.,LTD 
+不背单词.app	Apple iPhone OS Application Signing
+PDFConvert.app	AppStore
+WeChat.app	Tencent Mobile International Limited 
+PDF Viewer.app	jun wan 
+wpsoffice.app	AppStore
+Skype.app	Skype Communications S.a.r.l 
+VideoFusion-macOS.app	AppStore
+企业微信.app	Tencent Technology 
+Adobe Acrobat.app	TEAM HCiSO 
+UrPointer.app	3rd Party Mac Developer Application: UGREEN GROUP LIMITED 
+LynxPDF Editor_副本.app	jun wan 
+SignFlow.app	zhu dongyong 
+Sketch.app	AppStore
+PDF Expert.app	Readdle Technologies Limited 
+Foxit PDF Reader.app	Foxit Corporation 
+网易有道翻译.app	AppStore
+XiYou.app	yongzhi bao 

+ 58 - 0
src/main/resources/mac/InstalledAppInfo(陶源).txt

@@ -0,0 +1,58 @@
+MacAddr:F8:4D:89:5E:16:71
+AppName	AppSign	
+
+Mattermost.app	Mattermost, Inc. 
+PDF Reader.app	AppStore
+BBEdit.app	Bare Bones Software, Inc. 
+Sourcetree.app	Atlassian Pty Ltd 
+XMind.app	AppStore
+Google Chrome.app	Google LLC 
+Multipass.app	Canonical Group Limited 
+PDF Reader Pro.app	PDF Technologies, Inc. 
+敲木鱼.app	AppStore
+wpsoffice.app	AppStore
+PDF Professional.app	AppStore
+PDFelementStd6.app	AppStore
+Google Chrome 2.app	Google, Inc. 
+禅道.app	Apple iPhone OS Application Signing
+PDFTech Editor.app	PDF Technologies, Inc. 
+LynxPDF Editor.app	PDF Technologies, Inc. 
+PDFelement.app	Wondershare Software Co., Ltd 
+Safari.app	系统软件
+Logi Bolt Uninstaller.app	Logitech Inc. 
+CCXProcess.app	Adobe Systems, Inc. 
+ACCFinderBundleLoader.app	Adobe Systems, Inc. 
+Core Sync.app	Adobe Systems, Inc. 
+AdobeIPCBroker.app	Adobe Systems, Inc. 
+LogiMgr Uninstaller.app	Logitech Inc. 
+FreeMind.app	其它渠道
+Dynamic Wallpaper.app	AppStore
+BaiduNetdisk_mac.app	Baidu 
+WeChat.app	Tencent Mobile International Limited 
+万兴PDF.app	AppStore
+Prodrafts.app	AppStore
+知网研学(原E-Study).app	Tongfang Knowledge Network Digital Publishing Technology Co.,Ltd. 
+ToDesk.app	Hainan Youqu Technology Co., Ltd. 
+企业微信.app	Tencent Technology 
+The Unarchiver.app	AppStore
+ClashX.app	Fuzhou West2Online Internet Inc. 
+Pages.app	AppStore
+AppIcon.app	其它渠道
+AppIcon.app	其它渠道
+AppIcon.app	其它渠道
+AppIcon.app	其它渠道
+PDFGuru.app	AppStore
+Skype.app	Skype Communications S.a.r.l 
+Apowersoft PDF Editor.app	Apowersoft Limited 
+Anaconda-Navigator.app	其它渠道
+Typora.app	Abner Lee 
+PDF Expert.app	AppStore
+Acrobat Distiller.app	Adobe Inc. 
+Adobe Acrobat.app	Adobe Inc. 
+Foxit PDF Reader.app	AppStore
+QQ.app	Tencent Technology 
+CMake.app	Kitware Inc. 
+Sublime Text.app	Sublime HQ Pty Ltd 
+CLion.app	JetBrains s.r.o. 
+网易有道词典.app	AppStore
+Xcode.app	AppStore

+ 28 - 0
src/main/resources/mac/InstalledAppInfo(黄雅晴).txt

@@ -0,0 +1,28 @@
+MacAddr:8C:85:90:95:4B:AE
+AppName	AppSign	
+
+Support Tool.app	WithSecure Oyj 
+uninstall.app	WithSecure Oyj 
+WithSecure Agent.app	WithSecure Oyj 
+Mattermost.app	AppStore
+Grammarly Installer.app	Grammarly, Inc 
+Google Chrome.app	Google LLC 
+Grammarly Desktop.app	Grammarly, Inc 
+wpsoffice.app	KINGSOFT OFFICE SOFTWARE CORPORATION LIMITED 
+OneDrive.app	Microsoft Corporation 
+Safari.app	系统软件
+Filmage Screen.app	AppStore
+Microsoft Excel.app	Microsoft Corporation 
+Microsoft Word.app	Microsoft Corporation 
+CacheRemove.app	PDF Technologies, Inc. 
+BaiduNetdisk_mac.app	Baidu 
+Skype.app	Skype Communications S.a.r.l 
+Zoho Mail - Desktop.app	Zoho Corporation 
+PDF Reader Pro.app	PDF Technologies, Inc. 
+Microsoft PowerPoint.app	Microsoft Corporation 
+LynxPDF Editor.app	PDF Technologies, Inc. 
+QQ.app	AppStore
+Tencent Lemon.app	Tencent Technology 
+XiYou.app	yongzhi bao 
+WeChat.app	Tencent Mobile International Limited 
+企业微信.app	Tencent Technology 

+ 0 - 16
src/main/resources/mapper/PersistentDataMapper.xml

@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper
-        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="cn.kdan.mapper.PersistentDataMapper">
-
-    <resultMap id="BaseResultMap" type="cn.kdan.entity.PersistentData">
-            <id property="id" column="id" jdbcType="INTEGER"/>
-            <result property="dataKey" column="data_key" jdbcType="VARCHAR"/>
-            <result property="dataValue" column="data_value" jdbcType="VARCHAR"/>
-    </resultMap>
-
-    <sql id="Base_Column_List">
-        id,key,value
-    </sql>
-</mapper>

+ 0 - 37
src/main/resources/mapper/UsersMapper.xml

@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
-<mapper namespace="cn.kdan.mapper.UsersMapper">
-
-    <resultMap id="BaseResultMap" type="cn.kdan.entity.Users">
-        <id property="id" column="id" jdbcType="INTEGER"/>
-        <result property="fullName" column="full_name" jdbcType="VARCHAR"/>
-        <result property="email" column="email" jdbcType="VARCHAR"/>
-        <result property="flag" column="flag" jdbcType="TINYINT"/>
-        <result property="type" column="type" jdbcType="TINYINT"/>
-        <result property="password" column="password" jdbcType="VARCHAR"/>
-        <result property="orderNum" column="order_num" jdbcType="INTEGER"/>
-        <result property="orderAmount" column="order_amount" jdbcType="DECIMAL"/>
-        <result property="loginTimes" column="login_times" jdbcType="INTEGER"/>
-        <result property="source" column="source" jdbcType="TINYINT"/>
-        <result property="isVerify" column="is_verify" jdbcType="TINYINT"/>
-        <result property="hasSeenManual" column="has_seen_manual" jdbcType="TINYINT"/>
-        <result property="isDeleted" column="is_deleted" jdbcType="TINYINT"/>
-        <result property="createdAt" column="created_at" jdbcType="TIMESTAMP"/>
-        <result property="updatedAt" column="updated_at" jdbcType="TIMESTAMP"/>
-        <result property="emailStatus" column="email_status" jdbcType="TIMESTAMP"/>
-    </resultMap>
-
-    <sql id="Base_Column_List">
-        id,full_name,email,
-        flag,type,password,
-        order_num,order_amount,login_times,
-        source,is_verify,has_seen_manual,
-        is_deleted,created_at,updated_at,email_status
-    </sql>
-
-    <update id="updatebyEmail">
-        update users set email_status = #{emailStatus}
-        where email = #{email}
-    </update>
-</mapper>

BIN
src/main/resources/长沙 - 资产管理(2024.9).xlsx