浏览代码

增加判读是否发送过对话

xueyiming 3 月之前
父节点
当前提交
0062553f74

+ 6 - 1
common-module/src/main/java/com/tzld/piaoquan/growth/common/dao/mapper/WeComUserMapper.java

@@ -37,8 +37,13 @@ public interface WeComUserMapper {
 
     void insertList(@Param("list") List<WeComUser> list);
 
-    List<WeComUser> selectUserList(@Param("staffId") Long staffId,
+    List<WeComUser> selectSendUserList(@Param("staffId") Long staffId,
                         @Param("groupMsgDisabled") byte groupMsgDisabled,
                         @Param("pageNum") Integer pageNum,
                         @Param("pageSize") Integer pageSize);
+
+    List<WeComUser> selectNotSendUserList(@Param("staffId") Long staffId,
+                                       @Param("groupMsgDisabled") byte groupMsgDisabled,
+                                       @Param("pageNum") Integer pageNum,
+                                       @Param("pageSize") Integer pageSize);
 }

+ 34 - 7
common-module/src/main/resources/mapper/WeComUserMapper.xml

@@ -437,12 +437,39 @@
     </insert>
 
 
-    <select id="selectUserList" resultType="com.tzld.piaoquan.growth.common.model.po.WeComUser">
-        select t1.*
-        from we_com_user t1
-                 left join we_com_staff_with_user t2 on t1.id = t2.user_id
-        where t1.group_msg_disabled = #{groupMsgDisabled,jdbcType=TINYINT}
-          and t2.staff_id = #{staffId,jdbcType=BIGINT} and t2.is_delete = 0
-            limit #{pageNum}, #{pageSize}
+    <select id="selectSendUserList" resultType="com.tzld.piaoquan.growth.common.model.po.WeComUser">
+        select t2.*
+        from we_com_staff_with_user t1
+                 left join we_com_user t2 on t2.id = t1.user_id
+        where staff_id = #{staffId,jdbcType=BIGINT}
+          and t1.is_delete = 0
+          and t2.group_msg_disabled = #{groupMsgDisabled,jdbcType=TINYINT}
+          and user_id in (select user_id
+                          from (select user_id, count(*) as num from we_com_staff_with_user group by user_id) c
+                          where c.num = 1)
+          and user_id in (select distinct user_id
+                              from we_com_send_message
+                              where (create_time between '2025-02-27 10:00:00' and '2025-02-27 17:00:00')
+                                 or (create_time between '2025-02-28 10:00:00' and '2025-02-28 17:00:00')
+                                 or (create_time between '2025-03-03 10:00:00' and '2025-03-03 17:00:00')
+                                  and staff_id = #{staffId,jdbcType=BIGINT}) limit #{pageNum}, #{pageSize}
+    </select>
+
+    <select id="selectNotSendUserList" resultType="com.tzld.piaoquan.growth.common.model.po.WeComUser">
+        select t2.*
+        from we_com_staff_with_user t1
+                 left join we_com_user t2 on t2.id = t1.user_id
+        where staff_id = #{staffId,jdbcType=BIGINT}
+          and t1.is_delete = 0
+          and t2.group_msg_disabled = #{groupMsgDisabled,jdbcType=TINYINT}
+          and user_id in (select user_id
+                          from (select user_id, count(*) as num from we_com_staff_with_user group by user_id) c
+                          where c.num = 1)
+          and user_id not in (select distinct user_id
+                              from we_com_send_message
+                              where (create_time between '2025-02-27 10:00:00' and '2025-02-27 17:00:00')
+                                 or (create_time between '2025-02-28 10:00:00' and '2025-02-28 17:00:00')
+                                 or (create_time between '2025-03-03 10:00:00' and '2025-03-03 17:00:00')
+                                  and staff_id = #{staffId,jdbcType=BIGINT}) limit #{pageNum}, #{pageSize}
     </select>
 </mapper>

+ 14 - 8
offline-module/src/main/java/com/tzld/piaoquan/offline/job/WeComMessageDataJob.java

@@ -273,11 +273,17 @@ public class WeComMessageDataJob {
     }
 
 
-    public void specialAssembleSendMessage(Long staffId, Integer pageNum) {
+    public void specialAssembleSendMessage(Long staffId, Integer pageNum, Integer pageSize, boolean isSend) {
         List<Long> staffIds = new ArrayList<>();
         staffIds.add(staffId);
         init(staffIds);
-        List<WeComUser> weComUserList = weComUserMapper.selectUserList(staffId, (byte) 1, pageNum, 200);
+        List<WeComUser> weComUserList;
+        if (isSend) {
+            weComUserList = weComUserMapper.selectSendUserList(staffId, (byte) 1, (pageNum - 1) * pageSize, pageSize);
+        } else {
+            weComUserList = weComUserMapper.selectNotSendUserList(staffId, (byte) 1, (pageNum - 1) * pageSize, pageSize);
+        }
+
         //落库逻辑
         List<SendMessage> allSeneMessageList = new ArrayList<>();
         for (WeComUser weComUser : weComUserList) {
@@ -445,7 +451,7 @@ public class WeComMessageDataJob {
 
 
     @XxlJob("pushSendMessageJob")
-    public ReturnT<String> pushSendMessage(String param) {
+    public ReturnT<String> pushSendMessage(String param, boolean hasLink, boolean hasImage, boolean hasMiniprogram) {
         XxlJobParam xxlJobParam = new XxlJobParam();
         if (StringUtils.isNotEmpty(param)) {
             xxlJobParam = JSONObject.parseObject(param, XxlJobParam.class);
@@ -466,7 +472,7 @@ public class WeComMessageDataJob {
             return ReturnT.SUCCESS;
         }
         for (SendMessage sendMessage : groupList) {
-            pushAndUpdateMessage(sendMessage);
+            pushAndUpdateMessage(sendMessage, hasLink, hasImage, hasMiniprogram);
         }
         Map<Long, List<SendMessage>> groupedByStaffId = groupList.stream().collect(Collectors.groupingBy(SendMessage::getStaffId));
         for (Map.Entry<Long, List<SendMessage>> entry : groupedByStaffId.entrySet()) {
@@ -480,7 +486,7 @@ public class WeComMessageDataJob {
                 retryGroupList = retryGroupList.stream().filter(e -> Objects.equals(e.getStaffId(), entry.getKey()))
                         .collect(Collectors.toList());
                 for (SendMessage sendMessage : retryGroupList) {
-                    pushAndUpdateMessage(sendMessage);
+                    pushAndUpdateMessage(sendMessage, hasLink, hasImage, hasMiniprogram);
                 }
             }
         }
@@ -493,11 +499,11 @@ public class WeComMessageDataJob {
         return ReturnT.SUCCESS;
     }
 
-    private void pushAndUpdateMessage(SendMessage sendMessage) {
+    private void pushAndUpdateMessage(SendMessage sendMessage, boolean hasLink, boolean hasImage, boolean hasMiniprogram) {
         sendMessage.setIsSend(0);
         sendMessage.setCreateTime(DateUtil.getThatDayDate());
         List<String> sendUserList = sendMessageMapper.selectExternalUserId(sendMessage);
-        boolean flag = pushMessage(sendUserList, sendMessage, true, false, false);
+        boolean flag = pushMessage(sendUserList, sendMessage, hasLink, hasImage, hasMiniprogram);
         if (flag) {
             SendMessage updateSendMessage = new SendMessage();
             updateSendMessage.setIsSend(1);
@@ -593,7 +599,7 @@ public class WeComMessageDataJob {
             imageAttachment.put("image", image);
             attachments.add(imageAttachment);
         }
-        if(!attachments.isEmpty()){
+        if (!attachments.isEmpty()) {
             jsonObject.put("attachments", attachments);
         }
         List<List<String>> lists = Lists.partition(sendUserList, 10000);