24282 2 years ago
parent
commit
ff85572744

+ 23 - 3
src/main/java/com/fjhx/controller/EmailMailboxController.java

@@ -1,5 +1,6 @@
 package com.fjhx.controller;
 
+import com.alibaba.fastjson.JSONObject;
 import com.fjhx.base.R;
 import com.fjhx.entity.EmailMailbox;
 import com.fjhx.service.IEmailMailboxService;
@@ -27,18 +28,37 @@ public class EmailMailboxController {
      * 获取邮箱文件夹列表
      */
     @GetMapping("/list")
-    public R list(EmailMailbox emailMailbox) {
-        List<EmailMailbox> emailMailboxList = emailMailboxService.getList(emailMailbox);
+    public R list(@RequestParam("email") String email) {
+        List<JSONObject> emailMailboxList = emailMailboxService.getList(email);
         return R.ok(emailMailboxList);
     }
 
     /**
      * 编辑文件夹
      */
+    @PostMapping("/add")
+    public R add(@RequestBody EmailMailbox emailMailbox) {
+        emailMailboxService.add(emailMailbox);
+        return R.ok();
+    }
+
+    /**
+     * 编辑文件夹
+     */
     @PostMapping("/edit")
     public R edit(@RequestBody EmailMailbox emailMailbox) {
-        emailMailboxService.updateById(emailMailbox);
+        emailMailboxService.edit(emailMailbox);
         return R.ok();
     }
 
+    /**
+     * 删除文件夹
+     */
+    @GetMapping("/delete")
+    public R delete(@RequestParam("emailMailboxId") Long emailMailboxId) {
+        emailMailboxService.delete(emailMailboxId);
+        return R.ok();
+    }
+
+
 }

+ 3 - 13
src/main/java/com/fjhx/entity/EmailMailbox.java

@@ -21,9 +21,9 @@ import lombok.Setter;
 public class EmailMailbox extends BaseEntity {
 
     /**
-     * 电子邮件id
+     * 父级id
      */
-    private Long emailInfoId;
+    private Long parentId;
 
     /**
      * 电子邮件
@@ -31,23 +31,13 @@ public class EmailMailbox extends BaseEntity {
     private String email;
 
     /**
-     * 文件夹路径
-     */
-    private String path;
-
-    /**
      * 文件夹名称
      */
     private String name;
 
     /**
-     * 是否展示(1是 0否)
+     * 是否展示
      */
     private Boolean isShow;
 
-    /**
-     * 初始化是否完成 1是 0否
-     */
-    private Boolean initialize;
-
 }

+ 11 - 4
src/main/java/com/fjhx/service/IEmailMailboxService.java

@@ -1,20 +1,27 @@
 package com.fjhx.service;
 
-import com.baomidou.mybatisplus.extension.service.IService;
+import com.alibaba.fastjson.JSONObject;
+import com.fjhx.base.BaseService;
 import com.fjhx.entity.EmailMailbox;
 
 import java.util.List;
 
 /**
  * <p>
- *  服务类
+ * 服务类
  * </p>
  *
  * @author zlj
  * @since 2022-12-20
  */
-public interface IEmailMailboxService extends IService<EmailMailbox> {
+public interface IEmailMailboxService extends BaseService<EmailMailbox> {
 
-    List<EmailMailbox> getList(EmailMailbox emailMailbox);
+    List<JSONObject> getList(String email);
+
+    void add(EmailMailbox emailMailbox);
+
+    void edit(EmailMailbox emailMailbox);
+
+    void delete(Long emailMailboxId);
 
 }

+ 27 - 12
src/main/java/com/fjhx/service/impl/EmailMailboxServiceImpl.java

@@ -1,11 +1,13 @@
 package com.fjhx.service.impl;
 
-import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.base.BaseEntity;
 import com.fjhx.entity.EmailMailbox;
 import com.fjhx.mapper.EmailMailboxMapper;
 import com.fjhx.service.IEmailMailboxService;
+import com.fjhx.utils.TreeUtil;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -22,17 +24,30 @@ import java.util.List;
 public class EmailMailboxServiceImpl extends ServiceImpl<EmailMailboxMapper, EmailMailbox> implements IEmailMailboxService {
 
     @Override
-    public List<EmailMailbox> getList(EmailMailbox emailMailbox) {
-        Long emailInfoId = emailMailbox.getEmailInfoId();
-        String email = emailMailbox.getEmail();
-        Boolean isShow = emailMailbox.getIsShow();
-
-        List<EmailMailbox> list = list(Wrappers.<EmailMailbox>lambdaQuery()
-                .eq(ObjectUtils.isNotEmpty(emailInfoId), EmailMailbox::getEmailInfoId, emailInfoId)
-                .eq(ObjectUtils.isNotEmpty(email), EmailMailbox::getEmail, email)
-                .eq(ObjectUtils.isNotEmpty(isShow), EmailMailbox::getIsShow, isShow)
+    public List<JSONObject> getList(String email) {
+        List<EmailMailbox> list = list(q -> q
+                .select(BaseEntity::getId, EmailMailbox::getParentId, EmailMailbox::getName)
+                .eq(EmailMailbox::getEmail, email)
+                .eq(EmailMailbox::getIsShow, true)
         );
 
-        return list;
+        return TreeUtil.buildTree("name", list);
     }
+
+    @Override
+    public void add(EmailMailbox emailMailbox) {
+        emailMailbox.setParentId(ObjectUtil.defaultIfNull(emailMailbox.getParentId(), 0L));
+        save(emailMailbox);
+    }
+
+    @Override
+    public void edit(EmailMailbox emailMailbox) {
+        updateById(emailMailbox);
+    }
+
+    @Override
+    public void delete(Long emailMailboxId) {
+        update(q -> q.eq(BaseEntity::getId, emailMailboxId).set(EmailMailbox::getIsShow, false));
+    }
+
 }

+ 109 - 0
src/main/java/com/fjhx/utils/TreeUtil.java

@@ -0,0 +1,109 @@
+package com.fjhx.utils;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+public class TreeUtil {
+
+    /**
+     * 节点ID名称
+     */
+    public static final String ID_NAME = "id";
+
+    /**
+     * 节点名称
+     */
+    public static final String LABEL_NAME = "label";
+
+    /**
+     * 子节点名称
+     */
+    public static final String CHILDREN_NAME = "children";
+
+    /**
+     * 父id名称
+     */
+    private static final String PARENT_ID_NAME = "parentId";
+
+    /**
+     * 构建树形列表
+     *
+     * @param labelName 需要构建的节点名称
+     * @param list      需要构建的数组
+     * @return 树形map
+     */
+    public static List<JSONObject> buildTree(String labelName, List<?> list) {
+        return buildTree(ID_NAME, labelName, PARENT_ID_NAME, list);
+    }
+
+    /**
+     * 构建树形列表
+     *
+     * @param idName       需要构建的节点ID名称
+     * @param labelName    需要构建的节点名称
+     * @param parentIdName 需要构建的节点父节点名称
+     * @param list         需要构建的数组
+     * @return 树形map
+     */
+    public static List<JSONObject> buildTree(String idName, String labelName, String parentIdName, List<?> list) {
+        List<JSONObject> collect = list.stream().map(item -> {
+            JSONObject data = JSON.parseObject(JSONObject.toJSONString(item));
+
+            JSONObject jsonObject = new JSONObject();
+            jsonObject.put(ID_NAME, data.get(idName));
+            jsonObject.put(PARENT_ID_NAME, data.get(parentIdName));
+            jsonObject.put(LABEL_NAME, data.get(labelName));
+
+            return jsonObject;
+        }).collect(Collectors.toList());
+        return buildTreeObj(collect);
+    }
+
+    public static List<JSONObject> buildTreeObj(List<?> list) {
+        return buildTreeObj(ID_NAME, PARENT_ID_NAME, CHILDREN_NAME, list);
+    }
+
+    public static List<JSONObject> buildTreeObj(String idName, String parentName, String childrenName, List<?> list) {
+
+        // 将数据转为map形式
+        List<JSONObject> dataList = JSONArray.parseArray(JSONObject.toJSONString(list), JSONObject.class);
+
+        // 通过id作为key,转为map
+        Map<String, JSONObject> idDataMap = dataList.stream().collect(Collectors.toMap(
+                item -> item.getString(idName),
+                item -> item,
+                (v1, v2) -> v1
+        ));
+
+        // 封装树形
+        return dataList.stream()
+                .filter(data -> null == idDataMap.get(data.getString(parentName)))
+                .peek(data -> {
+                    // 递归找出子级节点
+                    List<JSONObject> childNodes = findChildNodes(dataList, idName, parentName, childrenName, data.getString(idName));
+                    if (childNodes.size() > 0) {
+                        data.put(childrenName, childNodes);
+                    }
+                })
+                .collect(Collectors.toList());
+    }
+
+    private static List<JSONObject> findChildNodes(List<JSONObject> dataList, String idName, String parentName, String childrenName, String id) {
+        return dataList.stream()
+                .filter(data -> ObjectUtil.equals(data.getString(parentName), id))
+                .peek(data -> {
+                    List<JSONObject> childNodes = findChildNodes(dataList, idName, parentName, childrenName, data.getString(idName));
+                    if (childNodes.size() > 0) {
+                        data.put(childrenName, childNodes);
+                    }
+                })
+                .collect(Collectors.toList());
+    }
+
+}