Commit d88d2cb1 by 徐高华

群发

parent 4f70e318
...@@ -2,6 +2,8 @@ package com.gic.haoban.manage.service.dao.mapper.chat; ...@@ -2,6 +2,8 @@ package com.gic.haoban.manage.service.dao.mapper.chat;
import java.util.List; import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.gic.haoban.manage.api.dto.chat.GroupChatPlanLogDTO; import com.gic.haoban.manage.api.dto.chat.GroupChatPlanLogDTO;
import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO; import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanLog; import com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanLog;
...@@ -17,7 +19,7 @@ import com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanLog; ...@@ -17,7 +19,7 @@ import com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanLog;
*/ */
public interface GroupChatPlanLogMapper { public interface GroupChatPlanLogMapper {
public int insert(TabGroupChatPlanLog entity); public int batchInsert(@Param("list") List<TabGroupChatPlanLog> list);
public List<GroupChatPlanLogDTO> listPlanLog(GroupChatPlanSearchQDTO qdto); public List<GroupChatPlanLogDTO> listPlanLog(GroupChatPlanSearchQDTO qdto);
} }
\ No newline at end of file
...@@ -23,7 +23,7 @@ public class TabGroupChatPlanOwnerLog implements Serializable { ...@@ -23,7 +23,7 @@ public class TabGroupChatPlanOwnerLog implements Serializable {
private String staffId; private String staffId;
private String storeId; private String storeId;
private String clerkId; private String clerkId;
/**1已发送 0待发送*/ /**0任务创建失败 1待发送 2已发送*/
private Integer sendStatus; private Integer sendStatus;
private Integer failCount; private Integer failCount;
private Integer sendCount; private Integer sendCount;
......
...@@ -193,10 +193,10 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService { ...@@ -193,10 +193,10 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
String wxEnterpriseId = plan.getWxEnterpriseId(); String wxEnterpriseId = plan.getWxEnterpriseId();
String chatContent = plan.getChatContent(); String chatContent = plan.getChatContent();
JSONArray jsonArr = JSONArray.parseArray(chatContent); JSONArray jsonArr = JSONArray.parseArray(chatContent);
List<String> madidList = new ArrayList<>(); List<String> sendIdList = new ArrayList<>();
for (int i = 0; i < jsonArr.size(); i++) { for (int i = 0; i < jsonArr.size(); i++) {
JSONObject json = jsonArr.getJSONObject(i); JSONObject json = jsonArr.getJSONObject(i);
madidList.add(json.getString("relation_id")); sendIdList.add(json.getString("relation_id"));
} }
int pageNum = 0; int pageNum = 0;
List<TabGroupChatPlanOwnerLog> ownerList = null; List<TabGroupChatPlanOwnerLog> ownerList = null;
...@@ -210,7 +210,7 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService { ...@@ -210,7 +210,7 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
try { try {
String staffId = ownerLog.getStaffId(); String staffId = ownerLog.getStaffId();
ServiceResponse<String> sendResp = qywxSendService.sendChatMessage(wxEnterpriseId, staffId, ServiceResponse<String> sendResp = qywxSendService.sendChatMessage(wxEnterpriseId, staffId,
madidList); sendIdList);
if (sendResp.isSuccess()) { if (sendResp.isSuccess()) {
String msgid = sendResp.getResult(); String msgid = sendResp.getResult();
ownerLog.setMsgid(msgid); ownerLog.setMsgid(msgid);
...@@ -222,7 +222,9 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService { ...@@ -222,7 +222,9 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
ownerLog.setWxEnterpriseId(wxEnterpriseId); ownerLog.setWxEnterpriseId(wxEnterpriseId);
this.groupChatPlanOwnerLogService.update(ownerLog); this.groupChatPlanOwnerLogService.update(ownerLog);
// 代办 // 代办
if (StringUtils.isNotBlank(ownerLog.getClerkId()) && StringUtils.isNotBlank(ownerLog.getMsgid())) { if (ownerLog.getSendStatus() == PlanSendStatusEnum.TO_BE_SEND.getCode()
&& StringUtils.isNotBlank(ownerLog.getClerkId())
&& StringUtils.isNotBlank(ownerLog.getMsgid())) {
this.savePendTask(ownerLog, plan); this.savePendTask(ownerLog, plan);
} }
} catch (Exception e) { } catch (Exception e) {
...@@ -267,34 +269,52 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService { ...@@ -267,34 +269,52 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
public void doPlanSendInfo(Long ownerLogId) { public void doPlanSendInfo(Long ownerLogId) {
logger.info("开始群群发统计{}", ownerLogId); logger.info("开始群群发统计{}", ownerLogId);
TabGroupChatPlanOwnerLog ownerLog = this.groupChatPlanOwnerLogService.getById(ownerLogId); TabGroupChatPlanOwnerLog ownerLog = this.groupChatPlanOwnerLogService.getById(ownerLogId);
if (ownerLog.getSendStatus() == 2) {
logger.info("已统计过");
return;
}
logger.info("开始群群发统计{}", ownerLog.getMsgid()); logger.info("开始群群发统计{}", ownerLog.getMsgid());
Long planId = ownerLog.getPlanId();
TabGroupChatPlan plan = this.groupChatPlanMapper.selectById(planId);
if (null == plan) {
logger.info("计划不存在{}", planId);
return;
}
String wxEnterpriseId = ownerLog.getWxEnterpriseId(); String wxEnterpriseId = ownerLog.getWxEnterpriseId();
String enterpriseId = ownerLog.getEnterpriseId(); String enterpriseId = ownerLog.getEnterpriseId();
String msgid = ownerLog.getMsgid(); String msgid = ownerLog.getMsgid();
String staffId = ownerLog.getStaffId(); String staffId = ownerLog.getStaffId();
WxEnterpriseQwDTO qwDTO = this.wxEnterpriseService.getQwInfo(wxEnterpriseId); WxEnterpriseQwDTO qwDTO = this.wxEnterpriseService.getQwInfo(wxEnterpriseId);
TabHaobanStaff staff = this.staffMapper.selectByPrimaryKey(staffId); TabHaobanStaff staff = this.staffMapper.selectByPrimaryKey(staffId);
if (null == staff) {
logger.info("成员不存在{}", staffId);
return;
}
String userid = staff.getWxUserId(); String userid = staff.getWxUserId();
if (qwDTO.needOpenUserId3th()) { if (qwDTO.needOpenUserId3th()) {
userid = staff.getWxOpenUseId(); userid = staff.getWxOpenUseId();
} }
JSONResponse respon = qywxSuiteApiService.resultExternalMessage(qwDTO.getThirdCorpid(), config.getWxSuiteid(), JSONResponse respon = qywxSuiteApiService.resultExternalMessage(qwDTO.getThirdCorpid(), config.getWxSuiteid(),
msgid, null, userid); msgid, null, userid);
logger.info("统计返回={}", JSON.toJSONString(respon)); logger.info("统计企微返回={}", JSON.toJSONString(respon));
if (respon.getErrorCode() == 0) { if (respon.getErrorCode() != 0) {
return;
}
List<QywxSendMessageResultDTO> list = (List<QywxSendMessageResultDTO>) respon.getList(); List<QywxSendMessageResultDTO> list = (List<QywxSendMessageResultDTO>) respon.getList();
if (CollectionUtils.isNotEmpty(list)) { if (CollectionUtils.isEmpty(list)) {
logger.info("企微返回列表空");
return;
}
int sendCount = 0; int sendCount = 0;
int failCount = 0; int failCount = 0;
Long planId = ownerLog.getPlanId(); List<TabGroupChatPlanLog> addList = new ArrayList<>();
TabGroupChatPlan plan = this.groupChatPlanMapper.selectById(planId);
for (QywxSendMessageResultDTO item : list) { for (QywxSendMessageResultDTO item : list) {
TabGroupChatPlanLog entity = new TabGroupChatPlanLog(); TabGroupChatPlanLog entity = new TabGroupChatPlanLog();
Date sendTime = item.getSendTime(); Date sendTime = item.getSendTime();
String wxChatId = item.getChatId(); String wxChatId = item.getChatId();
// 如果企微的发送时间晚于计划的结束时间,不记录此类数据 // 如果企微的发送时间晚于计划的结束时间,不记录此类数据
if (sendTime.after(plan.getEndTime())) { if (sendTime.after(plan.getEndTime())) {
logger.info("发送时间晚计划结束时间"); logger.info("发送时间晚计划结束");
continue; continue;
} }
GroupChatBO chat = this.groupChatService.getByWxChatId(wxEnterpriseId, wxChatId); GroupChatBO chat = this.groupChatService.getByWxChatId(wxEnterpriseId, wxChatId);
...@@ -325,7 +345,10 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService { ...@@ -325,7 +345,10 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
entity.setEnterpriseId(enterpriseId); entity.setEnterpriseId(enterpriseId);
entity.setStaffId(staffId); entity.setStaffId(staffId);
entity.setSendTime(sendTime); entity.setSendTime(sendTime);
this.groupChatPlanLogMapper.insert(entity); addList.add(entity);
}
if (CollectionUtils.isNotEmpty(addList)) {
this.groupChatPlanLogMapper.batchInsert(addList);
} }
// 更新统计数量、状态 // 更新统计数量、状态
this.groupChatPlanOwnerLogService.updateSendCount(ownerLog.getOwnerLogId(), sendCount, this.groupChatPlanOwnerLogService.updateSendCount(ownerLog.getOwnerLogId(), sendCount,
...@@ -335,8 +358,6 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService { ...@@ -335,8 +358,6 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
// 更新计划统计 // 更新计划统计
this.groupChatPlanMapper.updateData(ownerLog.getPlanId(), 1, sendCount, failCount); this.groupChatPlanMapper.updateData(ownerLog.getPlanId(), 1, sendCount, failCount);
} }
}
}
@Override @Override
public void del(String clerkId, String clerkName, Long planId) { public void del(String clerkId, String clerkName, Long planId) {
......
...@@ -32,8 +32,7 @@ ...@@ -32,8 +32,7 @@
</sql> </sql>
<!-- ===================== 新增 ======================== --> <!-- ===================== 新增 ======================== -->
<insert id="insert" parameterType="com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanLog"> <insert id="batchInsert">
<![CDATA[
INSERT INTO tab_haoban_group_chat_plan_log( INSERT INTO tab_haoban_group_chat_plan_log(
log_id, log_id,
plan_id, plan_id,
...@@ -47,23 +46,29 @@ ...@@ -47,23 +46,29 @@
delete_flag, delete_flag,
create_time, create_time,
update_time , staff_id update_time , staff_id
)VALUES( )VALUES
#{logId}, <foreach collection="list" item="item" separator="," >
#{planId}, (
#{wxEnterpriseId}, #{item.logId},
#{enterpriseId} , #{item.planId},
#{groupChatId}, #{item.wxEnterpriseId},
#{sendStatus}, #{item.enterpriseId} ,
#{ownLogId}, #{item.groupChatId},
#{remark}, #{item.sendStatus},
#{sendTime}, #{item.ownLogId},
#{item.remark},
#{item.sendTime},
0, 0,
now(), now(),
now() ,#{staffId} now() ,
#{item.staffId}
) )
]]> </foreach>
</insert> </insert>
<select id="listPlanLog" parameterType="com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO" resultType="com.gic.haoban.manage.api.dto.chat.GroupChatPlanLogDTO"> <select id="listPlanLog" parameterType="com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO" resultType="com.gic.haoban.manage.api.dto.chat.GroupChatPlanLogDTO">
SELECT b.clerk_id clerkId , SELECT b.clerk_id clerkId ,
b.store_id storeId , b.store_id storeId ,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment