Browse Source

fix: 公司邮箱配置分页问题修复

chenjianhua 7 months ago
parent
commit
74f52c8a19

+ 9 - 4
service-base/src/main/java/com/simuwang/base/mapper/CompanyEmailSendHistoryMapper.java

@@ -1,5 +1,8 @@
 package com.simuwang.base.mapper;
 
+import com.simuwang.base.pojo.dos.CompanyEmailSendHistoryDO;
+import com.simuwang.base.pojo.dto.query.CompanyEmailHistoryPageQuery;
+import com.simuwang.base.pojo.dto.query.CompanyEmailPageQuery;
 import com.simuwang.base.pojo.vo.CompanyEmailConfigVO;
 import com.simuwang.base.pojo.vo.CompanyEmailSendHistoryVO;
 import org.apache.ibatis.annotations.Mapper;
@@ -15,13 +18,15 @@ import java.util.List;
  */
 @Mapper
 public interface CompanyEmailSendHistoryMapper {
-    public List<CompanyEmailSendHistoryVO> searchCompanyEmailList(@Param("companyName") String companyName,
-                                                                  @Param("email") String email,
-                                                                  @Param("sendStatus") Integer sendStatus);
+    public List<CompanyEmailSendHistoryDO> searchCompanyEmailList(CompanyEmailPageQuery companyEmailPageQuery);
 
-    List<CompanyEmailSendHistoryVO> searchEmailHistory(@Param("companyId") String companyId);
+    List<CompanyEmailSendHistoryDO> searchEmailHistory(CompanyEmailHistoryPageQuery companyEmailHistoryPageQuery);
 
     void deleteEmailHistory(@Param("emailList")List<String> email);
 
     void deleteEmailHistoryByIds(@Param("ids") List<Integer> idList);
+
+    long countCompanyEmailList(CompanyEmailPageQuery companyEmailPageQuery);
+
+    long countCompanyEmailhistory(CompanyEmailHistoryPageQuery companyEmailHistoryPageQuery);
 }

+ 23 - 12
service-base/src/main/java/com/simuwang/base/pojo/dos/CompanyEmailSendHistoryDO.java

@@ -4,6 +4,8 @@ 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 com.simuwang.base.pojo.vo.CompanyEmailConfigVO;
+import com.simuwang.base.pojo.vo.CompanyEmailSendHistoryVO;
 import lombok.Data;
 
 import java.util.Date;
@@ -15,56 +17,65 @@ import java.util.Date;
  * Description: ${DESCRIPTION}
  */
 @Data
-@TableName("company_email_send_history")
 public class CompanyEmailSendHistoryDO {
     /**
      * 主键Id
      */
-    @TableId(value = "id",type = IdType.AUTO)
     private Integer id;
     /**
+     * 公司名称
+     */
+    private String companyName;
+    /**
+     * 公司ID
+     */
+    private String companyId;
+    /**
      * 邮箱地址
      */
-    @TableField(value = "email")
     private String email;
     /**
      * 邮箱地址
      */
-    @TableField(value = "send_status")
     private Integer sendStatus;
     /**
      * 发送时间
      */
-    @TableField(value = "send_time")
-    private Date sendTime;
+    private String sendTime;
     /**
      * 发送备注
      */
-    @TableField(value = "send_remark")
     private String sendRemark;
     /**
      * 记录的有效性;1-有效;0-无效;
      */
-    @TableField(value = "isvalid")
     private Integer isvalid;
     /**
      * 创建者Id;第一次创建时与Creator值相同,修改时与修改人值相同
      */
-    @TableField(value = "creatorid")
     private Integer creatorId;
     /**
      * 修改者Id;第一次创建时与Creator值相同,修改时与修改人值相同
      */
-    @TableField(value = "updaterid")
     private Integer updaterId;
     /**
      * 创建时间,默认第一次创建的getdate()时间
      */
-    @TableField(value = "createtime")
     private Date createTime;
     /**
      * 修改时间;第一次创建时与CreatTime值相同,修改时与修改时间相同
      */
-    @TableField(value = "updatetime")
     private Date updateTime;
+
+    public CompanyEmailSendHistoryVO toVo() {
+        CompanyEmailSendHistoryVO vo = new CompanyEmailSendHistoryVO();
+        vo.setCompanyId(this.getCompanyId());
+        vo.setEmail(this.getEmail());
+        vo.setId(this.getId());
+        vo.setSendRemark(this.getSendRemark());
+        vo.setSendStatus(this.getSendStatus());
+        vo.setCompanyName(this.getCompanyName());
+        vo.setSendTime(this.getSendTime());
+        return vo;
+    }
 }

+ 17 - 0
service-base/src/main/java/com/simuwang/base/pojo/dto/query/CompanyEmailHistoryPageQuery.java

@@ -0,0 +1,17 @@
+package com.simuwang.base.pojo.dto.query;
+
+import com.simuwang.base.common.support.PageQuery;
+
+/**
+ * @author wangzaijun
+ * @date 2024/9/13 13:38
+ * @description 角色用户关联的分页接口请求参数
+ */
+public class CompanyEmailHistoryPageQuery extends PageQuery {
+
+    /**
+     * 公司ID
+     */
+    private String companyId;
+
+}

+ 48 - 0
service-base/src/main/java/com/simuwang/base/pojo/dto/query/CompanyEmailPageQuery.java

@@ -0,0 +1,48 @@
+package com.simuwang.base.pojo.dto.query;
+
+import com.simuwang.base.common.support.PageQuery;
+
+/**
+ * @author wangzaijun
+ * @date 2024/9/13 13:38
+ * @description 角色用户关联的分页接口请求参数
+ */
+public class CompanyEmailPageQuery extends PageQuery {
+
+    /**
+     * 公司名称
+     */
+    private String companyName;
+    /**
+     * 邮箱地址
+     */
+    private String email;
+    /**
+     * 发送状态
+     */
+    private Integer sendStatus;
+
+    public String getCompanyName() {
+        return companyName;
+    }
+
+    public void setCompanyName(String companyName) {
+        this.companyName = companyName;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public Integer getSendStatus() {
+        return sendStatus;
+    }
+
+    public void setSendStatus(Integer sendStatus) {
+        this.sendStatus = sendStatus;
+    }
+}

+ 57 - 6
service-base/src/main/resources/mapper/CompanyEmailHistoryMapper.xml

@@ -1,7 +1,7 @@
 <?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.simuwang.base.mapper.CompanyEmailSendHistoryMapper">
-    <resultMap id="BaseResultMap" type="com.simuwang.base.pojo.vo.CompanyEmailSendHistoryVO">
+    <resultMap id="BaseResultMap" type="com.simuwang.base.pojo.dos.CompanyEmailSendHistoryDO">
         <id column="id" property="id"/>
         <result column="company_id" property="companyId"/>
         <result column="company_name" property="companyName"/>
@@ -9,6 +9,11 @@
         <result column="send_status" property="sendStatus"/>
         <result column="send_time" property="sendTime"/>
         <result column="send_remark" property="sendRemark"/>
+        <result column="isvalid" property="isvalid"/>
+        <result column="createtime" property="createTime"/>
+        <result column="updatetime" property="updateTime"/>
+        <result column="creatorid" property="creatorId"/>
+        <result column="updaterid" property="updaterId"/>
     </resultMap>
     <update id="deleteEmailHistory">
         update PPW_EMAIL.company_email_send_history set isvalid =0,updatetime=sysdate() where email in
@@ -39,7 +44,7 @@
         LEFT JOIN PPW_EMAIL.company_email_send_history cesh
         ON cec.email = cesh.email AND cesh.isvalid = 1
         LEFT JOIN (select me.email as email,max(me.send_time) as send_time from PPW_EMAIL.company_email_send_history me where isvalid =1 group by me.email) maxce
-        ON cec.email = maxce.email
+        ON cesh.email = maxce.email
         WHERE cec.isvalid = 1 and c.isvalid=1
         <if test="companyName != null and companyName !=''">
             and (c.company_name like concat('',#{companyName},'') or c.company_short_name like concat('',#{companyName},''))
@@ -51,26 +56,72 @@
             and cesh.send_status=#{sendStatus}
         </if>
         group by cec.company_id
+        limit #{offset},#{pageSize}
     </select>
-    <select id="searchEmailHistory" resultMap="BaseResultMap">
+
+    <select id="countCompanyEmailList" resultType="java.lang.Long"
+            parameterType="com.simuwang.base.pojo.dto.query.CompanyEmailPageQuery">
+        select count(*) from (
         SELECT
-            cec.id,
+        count(cec.company_id)
+        FROM
+        PPW_EMAIL.company_email_config cec
+        JOIN PPW_EMAIL.pvn_company_info c
+        ON cec.company_id = c.company_id
+        LEFT JOIN PPW_EMAIL.company_email_send_history cesh
+        ON cec.email = cesh.email AND cesh.isvalid = 1
+        LEFT JOIN (select me.email as email,max(me.send_time) as send_time from PPW_EMAIL.company_email_send_history me where isvalid =1 group by me.email) maxce
+        ON cesh.email = maxce.email
+        WHERE cec.isvalid = 1 and c.isvalid=1
+        <if test="companyName != null and companyName !=''">
+            and (c.company_name like concat('',#{companyName},'') or c.company_short_name like concat('',#{companyName},''))
+        </if>
+        <if test="email != null and email !=''">
+            and cec.email like concat('',#{email},'')
+        </if>
+        <if test="sendStatus != null">
+            and cesh.send_status=#{sendStatus}
+        </if>
+        group by cec.company_id) a
+    </select>
+
+    <select id="searchEmailHistory" resultMap="BaseResultMap">
+        SELECT distinct
+        cesh.id,
             cec.company_id,
             c.company_name,
-            cec.email,
+            cesh.email,
             cesh.send_time,
             cesh.send_remark,
             cesh.send_status
         FROM
             PPW_EMAIL.company_email_send_history cesh
             JOIN PPW_EMAIL.company_email_config cec
+            ON cec.email = cesh.email
             JOIN PPW_EMAIL.pvn_company_info c
             ON cec.company_id = c.company_id
-            ON cec.email = cesh.email
+        WHERE cec.isvalid = 1
+        AND cesh.isvalid = 1 and c.isvalid =1
+        <if test="companyId != null and companyId !=''">
+            and c.company_id=#{companyId}
+        </if>
+        limit #{offset},#{pageSize}
+    </select>
+    <select id="countCompanyEmailhistory" resultType="java.lang.Long"
+            parameterType="com.simuwang.base.pojo.dto.query.CompanyEmailHistoryPageQuery">
+        SELECT
+        count(distinct cesh.id)
+        FROM
+        PPW_EMAIL.company_email_send_history cesh
+        JOIN PPW_EMAIL.company_email_config cec
+        ON cec.email = cesh.email
+        JOIN PPW_EMAIL.pvn_company_info c
+        ON cec.company_id = c.company_id
         WHERE cec.isvalid = 1
         AND cesh.isvalid = 1 and c.isvalid =1
         <if test="companyId != null and companyId !=''">
             and c.company_id=#{companyId}
         </if>
     </select>
+
 </mapper>

+ 13 - 13
service-manage/src/main/java/com/simuwang/manage/api/company/CompanyEmailSendHistoryController.java

@@ -2,9 +2,13 @@ package com.simuwang.manage.api.company;
 
 
 import com.simuwang.base.common.page.TableDataInfo;
+import com.simuwang.base.common.support.MybatisPage;
+import com.simuwang.base.pojo.dto.query.CompanyEmailHistoryPageQuery;
+import com.simuwang.base.pojo.dto.query.CompanyEmailPageQuery;
 import com.simuwang.base.pojo.vo.CompanyEmailConfigVO;
 import com.simuwang.base.pojo.vo.CompanyEmailSendHistoryVO;
 import com.simuwang.base.pojo.vo.IdVO;
+import com.simuwang.base.pojo.vo.sys.SysRoleUserVO;
 import com.simuwang.manage.api.base.BaseController;
 import com.simuwang.manage.service.CompanyEmailConfigService;
 import com.simuwang.manage.service.CompanyEmailSendHistoryService;
@@ -33,28 +37,24 @@ public class CompanyEmailSendHistoryController extends BaseController {
 
     /**
      * 公司邮箱页面展示查询
-     * @param companyName 公司名称
-     * @param email 邮箱地址
-     * @param sendStatus 发送状态,0-失败,1-成功,-1未发送
+     * @param companyEmailPageQuery
      * @return
      */
     @RequestMapping("search-company-email")
-    public TableDataInfo searchCompanyEmail(@RequestParam(value = "companyName",required = false)String companyName,
-                                            @RequestParam(value = "email",required = false)String email,
-                                            @RequestParam(value = "sendStatus",required = false)Integer sendStatus){
-        List<CompanyEmailSendHistoryVO> result = companyEmailSendHistoryService.searchCompanyEmail(companyName,email,sendStatus);
-        return getDataTable(result);
+    public MybatisPage<CompanyEmailSendHistoryVO> searchCompanyEmail(CompanyEmailPageQuery companyEmailPageQuery){
+        MybatisPage<CompanyEmailSendHistoryVO> result = companyEmailSendHistoryService.searchCompanyEmail(companyEmailPageQuery);
+        return result;
     }
 
     /**
-     * 查询邮箱发送历史
-     * @param companyId 公司ID
+     * 根据公司ID查询邮箱发送历史
+     * @param  companyEmailHistoryPageQuery
      * @return
      */
     @RequestMapping("search-email-history")
-    public TableDataInfo searchEmailHistory(@RequestParam(value = "companyId")String companyId){
-        List<CompanyEmailSendHistoryVO> result = companyEmailSendHistoryService.searchEmailHistory(companyId);
-        return getDataTable(result);
+    public MybatisPage<CompanyEmailSendHistoryVO> searchEmailHistory(CompanyEmailHistoryPageQuery companyEmailHistoryPageQuery){
+        MybatisPage<CompanyEmailSendHistoryVO> result = companyEmailSendHistoryService.searchEmailHistory(companyEmailHistoryPageQuery);
+        return result;
     }
 
 

+ 5 - 2
service-manage/src/main/java/com/simuwang/manage/service/CompanyEmailSendHistoryService.java

@@ -1,5 +1,8 @@
 package com.simuwang.manage.service;
 
+import com.simuwang.base.common.support.MybatisPage;
+import com.simuwang.base.pojo.dto.query.CompanyEmailHistoryPageQuery;
+import com.simuwang.base.pojo.dto.query.CompanyEmailPageQuery;
 import com.simuwang.base.pojo.vo.CompanyEmailConfigVO;
 import com.simuwang.base.pojo.vo.CompanyEmailSendHistoryVO;
 
@@ -12,8 +15,8 @@ import java.util.List;
  * Description: ${DESCRIPTION}
  */
 public interface CompanyEmailSendHistoryService {
-    List<CompanyEmailSendHistoryVO> searchCompanyEmail(String companyName, String email, Integer sendStatus);
-    List<CompanyEmailSendHistoryVO> searchEmailHistory(String companyId);
+    MybatisPage<CompanyEmailSendHistoryVO> searchCompanyEmail(CompanyEmailPageQuery companyEmailPageQuery);
+    MybatisPage<CompanyEmailSendHistoryVO> searchEmailHistory(CompanyEmailHistoryPageQuery companyEmailHistoryPageQuery);
 
     void deleteEmail(String email);
 

+ 16 - 4
service-manage/src/main/java/com/simuwang/manage/service/impl/CompanyEmailSendHistoryServiceImpl.java

@@ -1,7 +1,12 @@
 package com.simuwang.manage.service.impl;
 
+import com.simuwang.base.common.support.MybatisPage;
 import com.simuwang.base.mapper.CompanyEmailConfigMapper;
 import com.simuwang.base.mapper.CompanyEmailSendHistoryMapper;
+import com.simuwang.base.pojo.dos.CompanyEmailSendHistoryDO;
+import com.simuwang.base.pojo.dos.sys.SysRoleUserDO;
+import com.simuwang.base.pojo.dto.query.CompanyEmailHistoryPageQuery;
+import com.simuwang.base.pojo.dto.query.CompanyEmailPageQuery;
 import com.simuwang.base.pojo.vo.CompanyEmailConfigVO;
 import com.simuwang.base.pojo.vo.CompanyEmailSendHistoryVO;
 import com.simuwang.manage.service.CompanyEmailSendHistoryService;
@@ -10,6 +15,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * FileName: CompanyEmailSendHistoryServiceImpl
@@ -25,13 +31,19 @@ public class CompanyEmailSendHistoryServiceImpl implements CompanyEmailSendHisto
     @Autowired
     private CompanyEmailConfigMapper companyEmailConfigMapper;
     @Override
-    public List<CompanyEmailSendHistoryVO> searchCompanyEmail(String companyName, String email, Integer sendStatus) {
-        return companyEmailSendHistoryMapper.searchCompanyEmailList(companyName,email,sendStatus);
+    public MybatisPage<CompanyEmailSendHistoryVO> searchCompanyEmail(CompanyEmailPageQuery companyEmailPageQuery) {
+        List<CompanyEmailSendHistoryDO> dataList = companyEmailSendHistoryMapper.searchCompanyEmailList(companyEmailPageQuery);
+        List<CompanyEmailSendHistoryVO> voList = dataList.stream().map(CompanyEmailSendHistoryDO::toVo).collect(Collectors.toList());
+        long total = companyEmailSendHistoryMapper.countCompanyEmailList(companyEmailPageQuery);
+        return MybatisPage.of(total, voList);
     }
 
     @Override
-    public List<CompanyEmailSendHistoryVO> searchEmailHistory(String companyId) {
-        return companyEmailSendHistoryMapper.searchEmailHistory(companyId);
+    public MybatisPage<CompanyEmailSendHistoryVO> searchEmailHistory(CompanyEmailHistoryPageQuery companyEmailHistoryPageQuery) {
+        List<CompanyEmailSendHistoryDO> dataList = companyEmailSendHistoryMapper.searchEmailHistory(companyEmailHistoryPageQuery);
+        List<CompanyEmailSendHistoryVO> voList = dataList.stream().map(CompanyEmailSendHistoryDO::toVo).collect(Collectors.toList());
+        long total = companyEmailSendHistoryMapper.countCompanyEmailhistory(companyEmailHistoryPageQuery);
+        return MybatisPage.of(total, voList);
     }
 
     @Override