diff --git a/mailbox-lan/pom.xml b/mailbox-lan/pom.xml
index 34579cb..ad5fa77 100644
--- a/mailbox-lan/pom.xml
+++ b/mailbox-lan/pom.xml
@@ -115,6 +115,11 @@
easyexcel
3.3.3
+
+ junit
+ junit
+ test
+
diff --git a/mailbox-lan/src/test/java/com/biutag/lan/DeptTreeTreeBuild.java b/mailbox-lan/src/test/java/com/biutag/lan/DeptTreeTreeBuild.java
new file mode 100644
index 0000000..5659e2e
--- /dev/null
+++ b/mailbox-lan/src/test/java/com/biutag/lan/DeptTreeTreeBuild.java
@@ -0,0 +1,141 @@
+package com.biutag.lan;
+
+
+import com.alibaba.excel.EasyExcel;
+import com.biutag.lan.entity.DeptTree;
+import com.biutag.lan.entity.DeptNode;
+import com.biutag.lan.mapper.DeptTreeMapper;
+import jakarta.annotation.Resource;
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@SpringBootTest
+public class DeptTreeTreeBuild {
+ @Resource
+ private DeptTreeMapper deptTreeMapper;
+
+ private List processedNodes = new ArrayList<>();
+
+ public List tree() {
+ List list = deptTreeMapper.selectList(null);
+ return buildTree(list);
+ }
+
+ private List buildTree(List list) {
+ List threeNode = list.stream()
+ .filter(item -> item.getLevel() == 3)
+ .map(item -> new DeptNode()
+ .setCategory(item.getCategory())
+ .setLevel(3)
+ .setId(item.getId())
+ .setPid(item.getPid())
+ .setName(item.getName())
+ .setFullName(item.getFullName())
+ )
+ .collect(Collectors.toList());
+ // 二级
+ List secondNode = list.stream()
+ .filter(item -> item.getLevel() == 2)
+ .map(item -> new DeptNode()
+ .setCategory(item.getCategory())
+ .setLevel(2)
+ .setId(item.getId())
+ .setPid(item.getPid())
+ .setName(item.getName())
+ .setFullName(item.getFullName())
+ .setChildren(threeNode.stream().filter(node -> item.getId().equals(node.getPid())).collect(Collectors.toList()))
+ )
+ .collect(Collectors.toList());
+ // 跟节点
+ return list.stream()
+ .filter(item -> item.getLevel() == 1)
+ .map(item -> new DeptNode()
+ .setCategory(item.getCategory())
+ .setLevel(1)
+ .setId(item.getId())
+ .setPid(item.getPid())
+ .setName(item.getName())
+ .setFullName(item.getFullName())
+ .setChildren(secondNode.stream().filter(node -> item.getId().equals(node.getPid())).collect(Collectors.toList()))
+ )
+ .collect(Collectors.toList());
+ }
+
+
+ public void processTree(DeptNode root) {
+ // 调用辅助方法进行递归遍历
+ traverseTree(root, "", 0);
+ }
+
+ // 递归遍历树结构的辅助方法
+ private void traverseTree(DeptNode node, String path, int depth) {
+ if (node == null) {
+ return;
+ }
+
+ // 构建当前节点的路径跟踪信息
+ // 如果是根节点,不添加 "->"
+ String currentPath = (depth == 0) ? Integer.toString(node.getId()) : path + "," + node.getId();
+
+ // 处理当前节点,比如创建一个CustomObject,并添加到列表中
+ processedNodes.add(new DeptTree().setId(node.getId()).setPid(node.getPid()).setName(node.getName())
+ .setUuid("/").setMobile("1").setSort(node.getId()).setIsStop(0).setIsDelete(0)
+ .setCreateTime(System.currentTimeMillis() / 1000)
+ .setUpdateTime(System.currentTimeMillis() / 1000)
+ .setDeleteTime(0L)
+ .setFullName(node.getFullName()).setCategory(handleCategory(node.getCategory())).setLevel(node.getLevel())
+ .setPathTrace(currentPath));
+
+
+ // 递归处理每个子节点
+ for (DeptNode child : node.getChildren()) {
+ traverseTree(child, currentPath, depth + 1);
+ }
+ }
+
+ private String handleCategory(String category) {
+ switch (category) {
+ case "分区县市局":
+ return "2";
+ case "支队":
+ return "3";
+ case "部、委、组、警校":
+ return "4";
+ default:
+ return category;
+ }
+ }
+
+ // 获取处理后的CustomObject列表
+ public List getProcessedNodes() {
+ return processedNodes;
+ }
+
+ // 寻找根节点,假设根节点的pid为null
+ public static DeptNode findRootNode(List list) {
+ for (DeptNode node : list) {
+ if (node.getPid() == 0) {
+ return node;
+ }
+ }
+ return null; // 如果没有找到根节点,可能树的数据结构有问题。
+ }
+
+
+ @Test
+ public void getResult() {
+ List tree = tree();
+ processTree(findRootNode(tree));
+ List result = getProcessedNodes();
+
+ String fileName = "data_dept.xlsx";
+ EasyExcel.write(fileName, DeptTree.class).sheet("sheet").doWrite(result);
+ }
+
+}
diff --git a/mailbox-lan/src/test/java/com/biutag/lan/SmsTest.java b/mailbox-lan/src/test/java/com/biutag/lan/SmsTest.java
index ac3983e..89c2c2f 100644
--- a/mailbox-lan/src/test/java/com/biutag/lan/SmsTest.java
+++ b/mailbox-lan/src/test/java/com/biutag/lan/SmsTest.java
@@ -1,41 +1,69 @@
package com.biutag.lan;
-
import org.junit.jupiter.api.Test;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
import java.util.Base64;
+
public class SmsTest {
- private static final String ALGORITHM = "AES/ECB/pkcs5padding";
- private static final String CHARSET = "UTF8";
+ private static final String SENDURL = "AES/ECB/PKCS5PADDING";
+ private static final String USERID = "UTF8";
// AES密钥(长度应为16个字节)
- private static final String SECRET_KEY = "fzzd12345678dxpt";
+ private static final String PWD = "fzzd12345678dxpt";
@Test
- public void encrypt() throws Exception {
- String input = "{\"timeStamp\":\"1709210345\",\"orderNo\":\"TEST001\",\"mobiles\":\"11111111111\",\"appendID\":\"\",\"validTime\":\"\",\"content\":\"123\",\"sendTime\":\"\"}";
- String key = "fzzd12345678dxpt";
- String result = "dk0vL%2FHI%2FMgeyko9w%2F2buOQSLLv%2FWd4xfDWUgVC%2FQt0tf8P%2Fr%2F7iP9srgLBRnrignGZCXWeaZ8cf%0D%0AqexHGp4GO7LTM0tEg9IwOEOJdMJIbuHaFvDY8SvORhT%2BZanP8UvHUevoO6fcNoZ0yBOHceS8zZ%2Ba%0D%0Ak8fQtrgakYQV7KszrVOz%2B9EcGPFGLfWmFCsFwK1P8hPqywvtpZprdXSj4d2NrnhWCbt%2BZVt9GX2u%0D%0AAPRkQuYQAmNFFGZM1iF0Jx2vt%2BoN";
+ public void solve() throws Exception {
+ try {
+
+ String jsonStr = "{\"timeStamp\":\"1709210345\",\"orderNo\":\"TEST001\",\"mobiles\":\"11111111111\",\"appendID\":\"\",\"validTime\":\"\",\"content\":\"123\",\"sendTime\":\"\"}";
+ String result = "dk0vL%2FHI%2FMgeyko9w%2F2buOQSLLv%2FWd4xfDWUgVC%2FQt0tf8P%2Fr%2F7iP9srgLBRnrignGZCXWeaZ8cf%0D%0AqexHGp4GO7LTM0tEg9IwOEOJdMJIbuHaFvDY8SvORhT%2BZanP8UvHUevoO6fcNoZ0yBOHceS8zZ%2Ba%0D%0Ak8fQtrgakYQV7KszrVOz%2B9EcGPFGLfWmFCsFwK1P8hPqywvtpZprdXSj4d2NrnhWCbt%2BZVt9GX2u%0D%0AAPRkQuYQAmNFFGZM1iF0Jx2vt%2BoN";
+
+
+
+ //System.out.println("jsonStr:"+jsonStr);
+ String key = encrypt(jsonStr, PWD);
+ //System.out.println("key:"+key);
+ key = URLEncoder.encode(key, "UTF-8");
+ System.out.println("key:" + key);
+ System.out.println(result.equals(key));
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
- // Base64编码
- String base64Data = Base64.getEncoder().encodeToString(input.getBytes(CHARSET));
- // AES加密
- Cipher cipher = Cipher.getInstance(ALGORITHM);
- SecretKeySpec secretKeySpec = new SecretKeySpec(SECRET_KEY.getBytes(CHARSET), "AES");
- cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
- byte[] encryptedBytes = cipher.doFinal(base64Data.getBytes(CHARSET));
+ }
+
+
+ /**
+ * AES加密
+ *
+ * @param input 明文
+ * @param key 秘钥
+ * @return 加密后的BASE64编码的字符串
+ * @throws Exception
+ */
+ public static String encrypt(String input, String key) throws Exception {
+ // 创建一个AES密钥
+ SecretKeySpec skey = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "AES");
- // 将加密后的数据转换为Base64编码
- String encryptedBase64 = Base64.getEncoder().encodeToString(encryptedBytes);
+ // 创建Cipher实例
+ Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
+ cipher.init(Cipher.ENCRYPT_MODE, skey);
- System.out.println(encryptedBase64);
- System.out.println(result.equals(encryptedBase64));
+ // 执行加密操作
+ byte[] crypted = cipher.doFinal(input.getBytes(StandardCharsets.UTF_8));
+
+ // 使用Base64进行编码
+ return Base64.getEncoder().encodeToString(crypted);
}
+
+
}
diff --git a/mailbox-lan/src/test/java/com/biutag/lan/entity/DeptNode.java b/mailbox-lan/src/test/java/com/biutag/lan/entity/DeptNode.java
new file mode 100644
index 0000000..5707aa5
--- /dev/null
+++ b/mailbox-lan/src/test/java/com/biutag/lan/entity/DeptNode.java
@@ -0,0 +1,29 @@
+package com.biutag.lan.entity;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.Collections;
+import java.util.List;
+
+@Accessors(chain = true)
+@Data
+public class DeptNode {
+ private Integer id;
+ private Integer pid;
+ private String name;
+ private String fullName;
+ private Integer level;
+
+ private String category;
+
+ private List children;
+
+ public List getChildren() {
+ if (children == null) {
+ return Collections.emptyList(); // 返回一个空列表而不是null
+ }
+ return children;
+ }
+
+}
diff --git a/mailbox-lan/src/test/java/com/biutag/lan/entity/DeptTree.java b/mailbox-lan/src/test/java/com/biutag/lan/entity/DeptTree.java
new file mode 100644
index 0000000..f4cd649
--- /dev/null
+++ b/mailbox-lan/src/test/java/com/biutag/lan/entity/DeptTree.java
@@ -0,0 +1,60 @@
+package com.biutag.lan.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Accessors(chain = true)
+@Data
+@TableName("dept_copy1")
+public class DeptTree {
+
+ @ApiModelProperty("ID")
+ private Integer id;
+
+ @ApiModelProperty("上级部门")
+ private Integer pid;
+
+ @ApiModelProperty("部门名称")
+ private String name;
+
+
+ @ApiModelProperty("部门全称")
+ private String fullName;
+
+ @ApiModelProperty("唯一id")
+ private String uuid;
+
+ @ApiModelProperty("联系电话")
+ private String mobile;
+
+ @ApiModelProperty("排序编号")
+ private Integer sort;
+
+
+ @ApiModelProperty("类别")
+ private String category;
+
+ @ApiModelProperty("层级")
+ private Integer level;
+
+ @ApiModelProperty("部门路径")
+ private String pathTrace;
+
+ @ApiModelProperty("是否禁用: [0=否, 1=是]")
+ private Integer isStop;
+
+ @ApiModelProperty("是否删除: [0=否, 1=是]")
+ private Integer isDelete;
+
+ @ApiModelProperty("创建时间")
+ private Long createTime;
+
+ @ApiModelProperty("更新时间")
+ private Long updateTime;
+
+ @ApiModelProperty("删除时间")
+ private Long deleteTime;
+
+}
diff --git a/mailbox-lan/src/test/java/com/biutag/lan/entity/TmpDept.java b/mailbox-lan/src/test/java/com/biutag/lan/entity/TmpDept.java
new file mode 100644
index 0000000..58b7032
--- /dev/null
+++ b/mailbox-lan/src/test/java/com/biutag/lan/entity/TmpDept.java
@@ -0,0 +1,18 @@
+package com.biutag.lan.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+@TableName("tmp_dept")
+public class TmpDept {
+ private Integer id;
+ private Integer pid;
+ private Integer level;
+ private String name;
+ private String deptFullName;
+ private String deptType;
+ private String first;
+ private String second;
+ private String third;
+}
diff --git a/mailbox-lan/src/test/java/com/biutag/lan/mapper/DeptTreeMapper.java b/mailbox-lan/src/test/java/com/biutag/lan/mapper/DeptTreeMapper.java
new file mode 100644
index 0000000..3956a4b
--- /dev/null
+++ b/mailbox-lan/src/test/java/com/biutag/lan/mapper/DeptTreeMapper.java
@@ -0,0 +1,10 @@
+package com.biutag.lan.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.biutag.lan.entity.DeptTree;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DeptTreeMapper extends BaseMapper {
+}
diff --git a/mailbox-lan/src/test/java/com/biutag/lan/mapper/TmpDeptMapper.java b/mailbox-lan/src/test/java/com/biutag/lan/mapper/TmpDeptMapper.java
new file mode 100644
index 0000000..3cb9cd4
--- /dev/null
+++ b/mailbox-lan/src/test/java/com/biutag/lan/mapper/TmpDeptMapper.java
@@ -0,0 +1,7 @@
+package com.biutag.lan.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.biutag.lan.entity.TmpDept;
+
+public interface TmpDeptMapper extends BaseMapper {
+}