瀏覽代碼

feat:邮件解析区分渠道展示

chenjianhua 1 月之前
父節點
當前提交
4c39695427

+ 1 - 1
service-base/src/main/java/com/simuwang/base/mapper/daq/EmailParseInfoMapper.java

@@ -23,7 +23,7 @@ public interface EmailParseInfoMapper {
 
     EmailParseInfoDO searchEmailById(@Param("id") Integer id);
 
-    Integer searchEmailCount(@Param("startDate") String startDate,@Param("endDate") String endDate, @Param("parseStatus")Integer parseStatus);
+    Integer searchEmailCount(@Param("startDate") String startDate,@Param("endDate") String endDate, @Param("parseStatus")Integer parseStatus,@Param("channelEmailList")List<String> channelEmailList);
 
     EmailParseInfoDO queryById(@Param("id") Integer id);
 

+ 3 - 1
service-base/src/main/java/com/simuwang/base/mapper/daq/UserChannelMappingMapper.java

@@ -13,5 +13,7 @@ public interface UserChannelMappingMapper extends BaseMapper<UserChannelMappingD
 
     void removeUserChannel(@Param("userId") Integer userId, @Param("loginUserId")Integer loginUserId);
 
-    List<Integer> getUserChannelId(Integer userId);
+    List<Integer> getUserChannelId(@Param("userId")Integer userId);
+
+    List<String> selectChannelEmailByUserId(@Param("userId") Integer userId);
 }

+ 13 - 0
service-base/src/main/java/com/simuwang/base/pojo/dto/query/EmailParseQuery.java

@@ -4,6 +4,8 @@ package com.simuwang.base.pojo.dto.query;
 import com.simuwang.base.common.support.query.PageQuery;
 import com.smppw.common.pojo.enums.TimeRange;
 
+import java.util.List;
+
 /**
  * @author wangzaijun
  * @date 2024/9/13 13:38
@@ -69,6 +71,17 @@ public class EmailParseQuery extends PageQuery {
      */
     private Integer isHosted;
 
+    //用户渠道绑定的邮箱
+    private List<String> channelEmailList;
+
+    public List<String> getChannelEmailList() {
+        return channelEmailList;
+    }
+
+    public void setChannelEmailList(List<String> channelEmailList) {
+        this.channelEmailList = channelEmailList;
+    }
+
     public Integer getIsHosted() {
         return isHosted;
     }

+ 1 - 1
service-base/src/main/resources/mapper/daq/ContactInformationMapper.xml

@@ -77,7 +77,7 @@
              contact_remark, file_id, creatorid, createtime, updaterid,
              updatetime, isvalid,open_status,is_receiver from CONTACT_INFORMATION where isvalid=1 and open_status=1
              and id in
-            <foreach collection="idList" item="id" index="index" separator=",">
+            <foreach collection="idList" item="id" index="index" separator="," open="(" close=")">
               #{id}
             </foreach>
     </select>

+ 18 - 0
service-base/src/main/resources/mapper/daq/EmailParseInfoMapper.xml

@@ -160,6 +160,12 @@
         <if test="senderEmail !=null and senderEmail !=''">
             and epi.sender_email like concat('%',#{senderEmail},'%')
         </if>
+        <if test="channelEmailList !=null and channelEmailList.size() > 0">
+            and epi.email in
+            <foreach collection="channelEmailList" item="channelEmail" index="index" separator="," open="(" close=")">
+                #{channelEmail}
+            </foreach>
+        </if>
         <choose>
             <when test="sort != null and sort !='' and sort=='parseDate' and order != null and order !=''">
                 order by epi.parse_date ${order}
@@ -192,6 +198,12 @@
         <if test="endDate != null and endDate != ''">
             and parse_date <![CDATA[ <= ]]> #{endDate}
         </if>
+        <if test="channelEmailList !=null and channelEmailList.size() > 0">
+            and email in
+            <foreach collection="channelEmailList" item="channelEmail" index="index" separator="," open="(" close=")">
+                #{channelEmail}
+            </foreach>
+        </if>
     </select>
 
     <select id="queryById" resultMap="BaseResultMap">
@@ -249,6 +261,12 @@
         <if test="senderEmail !=null and senderEmail !=''">
             and epi.sender_email like concat('%',#{senderEmail},'%')
         </if>
+        <if test="channelEmailList !=null  and channelEmailList.size() > 0">
+            and epi.email in
+            <foreach collection="channelEmailList" item="channelEmail" index="index" separator="," open="(" close=")">
+                #{channelEmail}
+            </foreach>
+        </if>
     </select>
 
     <update id="updateParseTime">

+ 11 - 0
service-base/src/main/resources/mapper/daq/UserChannelMappingMapper.xml

@@ -31,4 +31,15 @@
   <select id="getUserChannelId" resultType="java.lang.Integer">
     select channel_id from user_channel_mapping where user_id=#{userId} and isvalid=1
   </select>
+  <select id="selectChannelEmailByUserId" resultType="java.lang.String">
+    SELECT
+      cei.email
+    FROM
+      USER_CHANNEL_MAPPING ucm
+        JOIN channel_email_info cei
+             ON cei.channel_id = ucm.channel_id
+    WHERE ucm.user_id = #{userId}
+      AND ucm.isvalid = 1
+      AND cei.isvalid = 1
+  </select>
 </mapper>

+ 1 - 1
service-deploy/src/main/resources/application.yml

@@ -68,7 +68,7 @@ email:
   file:
     path: /home/wwwroot/shzq_dataapi/file/nav/
   parse:
-    force-template-enable: false
+    force-template-enable: true
 image:
   path: /home/wwwroot/static/Uploads/Images/
   prefix: /home/wwwroot/static/

+ 1 - 0
service-manage/src/main/java/com/simuwang/manage/api/email/ParseEmailController.java

@@ -9,6 +9,7 @@ import com.simuwang.base.pojo.vo.*;
 import com.simuwang.daq.service.EmailParseApiService;
 import com.simuwang.logging.SystemLog;
 import com.simuwang.manage.service.ParseEmailService;
+import com.simuwang.shiro.utils.UserUtils;
 import com.smppw.common.pojo.ResultVo;
 import com.smppw.common.pojo.enums.TimeRange;
 import jakarta.servlet.ServletOutputStream;

+ 4 - 0
service-manage/src/main/java/com/simuwang/manage/service/UserChannelMappingService.java

@@ -3,9 +3,13 @@ package com.simuwang.manage.service;
 import com.simuwang.base.pojo.vo.UserChannelMappingVO;
 import com.smppw.common.pojo.ResultVo;
 
+import java.util.List;
+
 public interface UserChannelMappingService {
 
     ResultVo saveUserChannel(UserChannelMappingVO userChannelMappingVO);
 
     ResultVo getUserChannel(Integer userId);
+
+    List<String> selectChannelEmailByUserId(Integer userId);
 }

+ 3 - 0
service-manage/src/main/java/com/simuwang/manage/service/impl/DeletionServiceImpl.java

@@ -241,6 +241,9 @@ public class DeletionServiceImpl implements DeletionService {
             Integer channelId = fundDeletionType.getDeletionType();
             Integer deletionNum = deletionInfoMapper.countChannelFundDeletion(fundId, deletionType, channelId, 1);
             Integer processedNum = deletionInfoMapper.countChannelFundDeletion(fundId, deletionType, channelId, 0);
+            if(deletionNum == 0 && processedNum == 0){
+                continue;
+            }
             String lastDeletionDate = deletionInfoMapper.getLastDeletionDate(fundId, deletionType, channelId);
             DeletionTypeStatisticsDO deletionTypeStatisticsDO = new DeletionTypeStatisticsDO();
             deletionTypeStatisticsDO.setFundId(fundId);

+ 34 - 4
service-manage/src/main/java/com/simuwang/manage/service/impl/ParseEmailServiceImpl.java

@@ -4,12 +4,14 @@ import com.simuwang.base.common.enums.ParseStatus;
 import com.simuwang.base.common.support.MybatisPage;
 import com.simuwang.base.common.util.DateUtils;
 import com.simuwang.base.common.util.StringUtil;
+import com.simuwang.base.components.UserAuthService;
 import com.simuwang.base.mapper.daq.*;
 import com.simuwang.base.pojo.dos.*;
 import com.simuwang.base.pojo.dto.query.EmailFileQuery;
 import com.simuwang.base.pojo.dto.query.EmailParseQuery;
 import com.simuwang.base.pojo.vo.*;
 import com.simuwang.manage.service.ParseEmailService;
+import com.simuwang.manage.service.UserChannelMappingService;
 import com.simuwang.shiro.utils.UserUtils;
 import com.smppw.common.pojo.enums.TimeRange;
 import com.smppw.utils.DateUtil;
@@ -39,6 +41,13 @@ public class ParseEmailServiceImpl implements ParseEmailService {
 
     @Autowired
     private EmailFundNavCollectionMapper emailFundNavCollectionMapper;
+
+    @Autowired
+    private UserAuthService userAuthService;
+
+    @Autowired
+    private UserChannelMappingService userChannelMappingService;
+
     @Override
     public void saveEmailType(EmailTypeRuleVO emailTypeRuleVO) {
         EmailTypeRuleDO  ruleDO = new EmailTypeRuleDO();
@@ -82,6 +91,16 @@ public class ParseEmailServiceImpl implements ParseEmailService {
 
     @Override
     public MybatisPage<EmailParseInfoVO> searchEmailList(EmailParseQuery emailParseQuery){
+        Integer userId = UserUtils.getLoginUser().getUserId();
+        if(!userAuthService.isAdmin(userId)){
+            List<String> channelEmailList = userChannelMappingService.selectChannelEmailByUserId(userId);
+            //获取用户绑定的渠道邮箱,只查询用户下的渠道数据
+            if(channelEmailList != null && channelEmailList.size() > 0){
+                emailParseQuery.setChannelEmailList(channelEmailList);
+            }else{
+                return MybatisPage.of(0l,new ArrayList<>());
+            }
+        }
         if(emailParseQuery.getTimeRange().equals(TimeRange.FromSetup)){
             emailParseQuery.setEndDate(DateUtil.getTodayDate());
         }
@@ -109,6 +128,18 @@ public class ParseEmailServiceImpl implements ParseEmailService {
 
     @Override
     public Map<String, Integer> searchEmailCount(TimeRange timeRange,String startDate,String endDate) {
+        Integer userId = UserUtils.getLoginUser().getUserId();
+        Map<String, Integer> result = new HashMap<>();
+        List<String> channelEmailList = null;
+        if(!userAuthService.isAdmin(userId)){
+            channelEmailList = userChannelMappingService.selectChannelEmailByUserId(userId);
+            if(channelEmailList == null || channelEmailList.isEmpty()){
+                result.put("parseTotal",0);
+                result.put("parseSuccess",0);
+                result.put("parseFail",0);
+                return result;
+            }
+        }
         if(timeRange.equals(TimeRange.FromSetup)){
             endDate= DateUtil.getTodayDate();
         }
@@ -121,12 +152,11 @@ public class ParseEmailServiceImpl implements ParseEmailService {
             //自定义时间,把结束时间延后一天,确保时间判断能查到结束日期当天的数据
             endDate = DateUtil.getAroundDate(DateUtils.parse(endDate,DateUtils.YYYY_MM_DD),1);
         }
-        Map<String, Integer> result = new HashMap<>();
-        Integer parseTotal = emailParseInfoMapper.searchEmailCount(startDate,endDate,null);
+        Integer parseTotal = emailParseInfoMapper.searchEmailCount(startDate,endDate,null,channelEmailList);
         result.put("parseTotal",parseTotal);
-        Integer parseSuccess = emailParseInfoMapper.searchEmailCount(startDate,endDate, ParseStatus.Success.getCode());
+        Integer parseSuccess = emailParseInfoMapper.searchEmailCount(startDate,endDate, ParseStatus.Success.getCode(),channelEmailList);
         result.put("parseSuccess",parseSuccess);
-        Integer parseFail = emailParseInfoMapper.searchEmailCount(startDate,endDate, ParseStatus.Fail.getCode());
+        Integer parseFail = emailParseInfoMapper.searchEmailCount(startDate,endDate, ParseStatus.Fail.getCode(),channelEmailList);
         result.put("parseFail",parseFail);
         return result;
     }

+ 5 - 0
service-manage/src/main/java/com/simuwang/manage/service/impl/UserChannelMappingServiceImpl.java

@@ -65,4 +65,9 @@ public class UserChannelMappingServiceImpl implements UserChannelMappingService
         userChannelMappingVO.setUserId(userId);
         return new ResultVo(userChannelMappingVO);
     }
+
+    @Override
+    public List<String> selectChannelEmailByUserId(Integer userId) {
+        return userChannelMappingMapper.selectChannelEmailByUserId(userId);
+    }
 }