Răsfoiți Sursa

邮件列表添加搜索功能

yzc 1 an în urmă
părinte
comite
903695e11d

+ 10 - 3
hx-mail/src/main/java/com/fjhx/mail/controller/message/MailController.java

@@ -1,9 +1,11 @@
 package com.fjhx.mail.controller.message;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.http.HttpUtil;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import com.fjhx.mail.config.MailServiceConfig;
+import com.fjhx.mail.entity.dto.GetMessagePageDto;
 import com.fjhx.mail.entity.message.dto.DeleteBatchMailDto;
 import com.fjhx.mail.entity.message.dto.DeleteMailDto;
 import com.fjhx.mail.entity.message.dto.SendDto;
@@ -39,9 +41,14 @@ public class MailController {
      */
     @NonInterception
     @PostMapping("/getMessagePage")
-    public Object getMessagePage(@RequestBody JSONObject dto) {
-        String post = HttpUtil.post(MailServiceConfig.urlPrefix + "getMessagePage", dto.toJSONString());
-        return JSON.parseObject(post);
+    public Object getMessagePage(@RequestBody JSONObject dtoJson) {
+        dtoJson.remove("id");//解决前端传的字符串id
+        GetMessagePageDto dto = BeanUtil.copyProperties(dtoJson, GetMessagePageDto.class);
+        return infoService.getMessagePage(dto);
+
+
+//        String post = HttpUtil.post(MailServiceConfig.urlPrefix + "getMessagePage", JSONObject.toJSONString(dto));
+//        return JSON.parseObject(post);
     }
 
     /**

+ 28 - 0
hx-mail/src/main/java/com/fjhx/mail/entity/dto/GetMessagePageDto.java

@@ -0,0 +1,28 @@
+package com.fjhx.mail.entity.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class GetMessagePageDto extends BaseSelectDto {
+
+    /**
+     * 文件夹id
+     */
+    private Long folderId;
+
+    /**
+     * 类型
+     * 1、个人邮箱
+     * 2、企业邮箱
+     */
+    private Integer type;
+
+    /**
+     * 邮件id
+     */
+    private Long messageId;
+
+}

+ 9 - 2
hx-mail/src/main/java/com/fjhx/mail/mapper/enterprise/EnterpriseMessageMapper.java

@@ -1,7 +1,11 @@
 package com.fjhx.mail.mapper.enterprise;
 
-import com.fjhx.mail.entity.enterprise.po.EnterpriseMessage;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.mail.entity.enterprise.po.EnterpriseMessage;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 
 /**
@@ -9,9 +13,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * 企业邮件 Mapper 接口
  * </p>
  *
- * @author 
+ * @author
  * @since 2023-05-29
  */
+@Mapper
 public interface EnterpriseMessageMapper extends BaseMapper<EnterpriseMessage> {
 
+    Page<EnterpriseMessage> getPage(@Param("page") Page<EnterpriseMessage> page, @Param("ew") QueryWrapper<EnterpriseMessage> wrapper);
+
 }

+ 9 - 2
hx-mail/src/main/java/com/fjhx/mail/mapper/personal/PersonalMessageMapper.java

@@ -1,7 +1,11 @@
 package com.fjhx.mail.mapper.personal;
 
-import com.fjhx.mail.entity.personal.po.PersonalMessage;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.mail.entity.personal.po.PersonalMessage;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 
 /**
@@ -9,9 +13,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * 个人邮件 Mapper 接口
  * </p>
  *
- * @author 
+ * @author
  * @since 2023-05-29
  */
+@Mapper
 public interface PersonalMessageMapper extends BaseMapper<PersonalMessage> {
 
+    Page<PersonalMessage> getPage(@Param("page") Page<PersonalMessage> page, @Param("ew") QueryWrapper<PersonalMessage> wrapper);
+
 }

+ 3 - 0
hx-mail/src/main/java/com/fjhx/mail/service/message/InfoService.java

@@ -1,6 +1,7 @@
 package com.fjhx.mail.service.message;
 
 import com.alibaba.fastjson2.JSONObject;
+import com.fjhx.mail.entity.dto.GetMessagePageDto;
 import com.fjhx.mail.entity.message.dto.DeleteBatchMailDto;
 import com.fjhx.mail.entity.message.dto.DeleteMailDto;
 import com.fjhx.mail.entity.message.dto.SendDto;
@@ -41,4 +42,6 @@ public interface InfoService {
      */
     JSONObject setSeen(SetSeenDto dto);
 
+    Object getMessagePage(GetMessagePageDto dto);
+
 }

+ 85 - 0
hx-mail/src/main/java/com/fjhx/mail/service/message/impl/InfoServiceImpl.java

@@ -5,25 +5,38 @@ import cn.hutool.http.HttpUtil;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.mail.config.MailServiceConfig;
+import com.fjhx.mail.entity.dto.GetMessagePageDto;
 import com.fjhx.mail.entity.enterprise.po.EnterpriseDomain;
+import com.fjhx.mail.entity.enterprise.po.EnterpriseFolder;
 import com.fjhx.mail.entity.enterprise.po.EnterpriseMailbox;
+import com.fjhx.mail.entity.enterprise.po.EnterpriseMessage;
 import com.fjhx.mail.entity.message.dto.DeleteBatchMailDto;
 import com.fjhx.mail.entity.message.dto.DeleteMailDto;
 import com.fjhx.mail.entity.message.dto.SendDto;
 import com.fjhx.mail.entity.message.dto.SetSeenDto;
+import com.fjhx.mail.entity.my.vo.MessageVo;
+import com.fjhx.mail.entity.personal.po.PersonalFolder;
 import com.fjhx.mail.entity.personal.po.PersonalMailbox;
+import com.fjhx.mail.entity.personal.po.PersonalMessage;
+import com.fjhx.mail.mapper.enterprise.EnterpriseMessageMapper;
+import com.fjhx.mail.mapper.personal.PersonalMessageMapper;
 import com.fjhx.mail.service.enterprise.EnterpriseDomainService;
+import com.fjhx.mail.service.enterprise.EnterpriseFolderService;
 import com.fjhx.mail.service.enterprise.EnterpriseMailboxService;
 import com.fjhx.mail.service.enterprise.EnterpriseMessageService;
 import com.fjhx.mail.service.message.InfoService;
+import com.fjhx.mail.service.personal.PersonalFolderService;
 import com.fjhx.mail.service.personal.PersonalMailboxService;
 import com.fjhx.mail.service.personal.PersonalMessageService;
 import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.PageWrapper;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.system.service.ISysDeptService;
 import com.ruoyi.system.service.ISysUserService;
@@ -57,6 +70,16 @@ public class InfoServiceImpl implements InfoService {
     @Autowired
     private PersonalMessageService personalMessageService;
 
+    @Autowired
+    private PersonalFolderService personalFolderService;
+    @Autowired
+    private EnterpriseFolderService enterpriseFolderService;
+
+    @Autowired
+    private EnterpriseMessageMapper enterpriseMessageMapper;
+    @Autowired
+    private PersonalMessageMapper personalMessageMapper;
+
     @Override
     public List<SysUser> getUserList() {
 
@@ -210,4 +233,66 @@ public class InfoServiceImpl implements InfoService {
     }
 
 
+    @Override
+    public Object getMessagePage(GetMessagePageDto dto) {
+        PageWrapper<MessageVo> pageWrapper;
+
+        // 个人邮箱
+        if (dto.getType().equals(1)) {
+            QueryWrapper<PersonalMessage> wrapper = Wrappers.query();
+            wrapper.eq("pm.folder_id", dto.getFolderId());
+            wrapper.and(ObjectUtil.isNotEmpty(dto.getKeyword()), q1 -> q1
+                    .like("pm.from_email", dto.getKeyword())
+                    .or().like("pm.subject", dto.getKeyword())
+                    .or().like("pmc.content", dto.getKeyword())
+                    .or().like("c.name", dto.getKeyword())
+                    .or().like("cu.name", dto.getKeyword())
+                    .or().like("pm.from_personal_name", dto.getKeyword())
+            );
+            wrapper.orderByDesc("pm.send_date");
+            Page<PersonalMessage> page = personalMessageMapper.getPage(dto.getPage(), wrapper);
+
+            pageWrapper = new PageWrapper<>(page, MessageVo.class);
+
+            if (page.getSize() == 0) {
+                return pageWrapper;
+            }
+
+            PersonalFolder personalFolder = personalFolderService.getById(dto.getFolderId());
+            if (personalFolder == null) {
+                throw new ServiceException("文件夹已被删除");
+            }
+
+        }
+        // 企业邮箱
+        else {
+            QueryWrapper<EnterpriseMessage> wrapper = Wrappers.query();
+            wrapper.eq("em.folder_id", dto.getFolderId());
+            wrapper.and(ObjectUtil.isNotEmpty(dto.getKeyword()), q1 -> q1
+                    .like("em.from_email", dto.getKeyword())
+                    .or().like("em.subject", dto.getKeyword())
+                    .or().like("emc.content", dto.getKeyword())
+                    .or().like("c.name", dto.getKeyword())
+                    .or().like("cu.name", dto.getKeyword())
+                    .or().like("em.from_personal_name", dto.getKeyword())
+            );
+            wrapper.orderByDesc("em.send_date");
+            Page<EnterpriseMessage> page = enterpriseMessageMapper.getPage(dto.getPage(), wrapper);
+
+
+            pageWrapper = new PageWrapper<>(page, MessageVo.class);
+
+            if (page.getSize() == 0) {
+                return pageWrapper;
+            }
+
+            EnterpriseFolder enterpriseFolder = enterpriseFolderService.getById(dto.getFolderId());
+            if (enterpriseFolder == null) {
+                throw new ServiceException("文件夹已被删除");
+            }
+        }
+        return pageWrapper;
+    }
+
+
 }

+ 12 - 0
hx-mail/src/main/resources/mapper/enterprise/EnterpriseMessageMapper.xml

@@ -1,4 +1,16 @@
 <?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="com.fjhx.mail.mapper.enterprise.EnterpriseMessageMapper">
+    <select id="getPage" resultType="com.fjhx.mail.entity.enterprise.po.EnterpriseMessage">
+        SELECT em.*,
+               emc.content,
+               emc.mime_type,
+               cu.customer_id
+        FROM enterprise_message em
+                 LEFT OUTER JOIN enterprise_message_content emc ON emc.message_id = em.id
+                 LEFT JOIN bytesailing_customer.customer_user cu
+                           ON (em.from_email = cu.email OR FIND_IN_SET(cu.email, em.recipients)) and cu.del_flag = 0
+                 LEFT JOIN bytesailing_customer.customer c ON cu.customer_id = c.id and c.del_flag = 0
+            ${ew.customSqlSegment}
+    </select>
 </mapper>

+ 12 - 0
hx-mail/src/main/resources/mapper/personal/PersonalMessageMapper.xml

@@ -1,4 +1,16 @@
 <?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="com.fjhx.mail.mapper.personal.PersonalMessageMapper">
+    <select id="getPage" resultType="com.fjhx.mail.entity.personal.po.PersonalMessage">
+        SELECT pm.*,
+               pmc.content,
+               pmc.mime_type,
+               cu.customer_id
+        FROM personal_message pm
+                 LEFT OUTER JOIN personal_message_content pmc ON pmc.message_id = pm.id
+                 LEFT JOIN bytesailing_customer.customer_user cu
+                           ON (pm.from_email = cu.email OR FIND_IN_SET(cu.email, pm.recipients)) and cu.del_flag = 0
+                 LEFT JOIN bytesailing_customer.customer c ON cu.customer_id = c.id and c.del_flag = 0
+            ${ew.customSqlSegment}
+    </select>
 </mapper>