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,75 +269,94 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService { ...@@ -267,75 +269,94 @@ 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) {
List<QywxSendMessageResultDTO> list = (List<QywxSendMessageResultDTO>) respon.getList(); return;
if (CollectionUtils.isNotEmpty(list)) { }
int sendCount = 0; List<QywxSendMessageResultDTO> list = (List<QywxSendMessageResultDTO>) respon.getList();
int failCount = 0; if (CollectionUtils.isEmpty(list)) {
Long planId = ownerLog.getPlanId(); logger.info("企微返回列表空");
TabGroupChatPlan plan = this.groupChatPlanMapper.selectById(planId); return;
for (QywxSendMessageResultDTO item : list) { }
TabGroupChatPlanLog entity = new TabGroupChatPlanLog(); int sendCount = 0;
Date sendTime = item.getSendTime(); int failCount = 0;
String wxChatId = item.getChatId(); List<TabGroupChatPlanLog> addList = new ArrayList<>();
// 如果企微的发送时间晚于计划的结束时间,不记录此类数据 for (QywxSendMessageResultDTO item : list) {
if (sendTime.after(plan.getEndTime())) { TabGroupChatPlanLog entity = new TabGroupChatPlanLog();
logger.info("发送时间晚计划结束时间"); Date sendTime = item.getSendTime();
continue; String wxChatId = item.getChatId();
} // 如果企微的发送时间晚于计划的结束时间,不记录此类数据
GroupChatBO chat = this.groupChatService.getByWxChatId(wxEnterpriseId, wxChatId); if (sendTime.after(plan.getEndTime())) {
if (null == chat || StringUtils.isBlank(chat.getEnterpriseId())) { logger.info("发送时间晚计划结束");
logger.info("群不存在,或未认领,wxChatId={}", wxChatId); continue;
continue; }
} GroupChatBO chat = this.groupChatService.getByWxChatId(wxEnterpriseId, wxChatId);
if (!chat.getEnterpriseId().equals(plan.getEnterpriseId())) { if (null == chat || StringUtils.isBlank(chat.getEnterpriseId())) {
logger.info("群的商户id和计划的商户id不一致{},{}", chat.getEnterpriseId(), plan.getEnterpriseId()); logger.info("群不存在,或未认领,wxChatId={}", wxChatId);
continue; continue;
} }
entity.setGroupChatId(chat.getGroupChatId()); if (!chat.getEnterpriseId().equals(plan.getEnterpriseId())) {
// 企微返回成功 logger.info("群的商户id和计划的商户id不一致{},{}", chat.getEnterpriseId(), plan.getEnterpriseId());
// 0-未发送 1-已发送 2-因客户不是好友导致发送失败 3-因客户已经收到其他群发消息导致发送失败 continue;
if (item.getStatus() == 1) {
sendCount++;
// 已发送
entity.setSendStatus(PlanSendStatusEnum.SENDED.getCode());
} else {
failCount++;
// 发送失败
entity.setSendStatus(PlanSendStatusEnum.FAIL.getCode());
}
entity.setLogId(UniqueIdUtils.uniqueLong());
entity.setPlanId(ownerLog.getPlanId());
entity.setOwnLogId(ownerLog.getOwnerLogId());
entity.setWxEnterpriseId(wxEnterpriseId);
entity.setEnterpriseId(enterpriseId);
entity.setStaffId(staffId);
entity.setSendTime(sendTime);
this.groupChatPlanLogMapper.insert(entity);
}
// 更新统计数量、状态
this.groupChatPlanOwnerLogService.updateSendCount(ownerLog.getOwnerLogId(), sendCount,
list.get(0).getSendTime(), failCount);
// 完成代办
this.pendingTaskService.updateFinish(ownerLog.getOwnerLogId() + "");
// 更新计划统计
this.groupChatPlanMapper.updateData(ownerLog.getPlanId(), 1, sendCount, failCount);
} }
entity.setGroupChatId(chat.getGroupChatId());
// 企微返回成功
// 0-未发送 1-已发送 2-因客户不是好友导致发送失败 3-因客户已经收到其他群发消息导致发送失败
if (item.getStatus() == 1) {
sendCount++;
// 已发送
entity.setSendStatus(PlanSendStatusEnum.SENDED.getCode());
} else {
failCount++;
// 发送失败
entity.setSendStatus(PlanSendStatusEnum.FAIL.getCode());
}
entity.setLogId(UniqueIdUtils.uniqueLong());
entity.setPlanId(ownerLog.getPlanId());
entity.setOwnLogId(ownerLog.getOwnerLogId());
entity.setWxEnterpriseId(wxEnterpriseId);
entity.setEnterpriseId(enterpriseId);
entity.setStaffId(staffId);
entity.setSendTime(sendTime);
addList.add(entity);
}
if (CollectionUtils.isNotEmpty(addList)) {
this.groupChatPlanLogMapper.batchInsert(addList);
} }
// 更新统计数量、状态
this.groupChatPlanOwnerLogService.updateSendCount(ownerLog.getOwnerLogId(), sendCount,
list.get(0).getSendTime(), failCount);
// 完成代办
this.pendingTaskService.updateFinish(ownerLog.getOwnerLogId() + "");
// 更新计划统计
this.groupChatPlanMapper.updateData(ownerLog.getPlanId(), 1, sendCount, failCount);
} }
@Override @Override
......
...@@ -32,38 +32,43 @@ ...@@ -32,38 +32,43 @@
</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, wx_enterprise_id,
wx_enterprise_id, enterprise_id,
enterprise_id, group_chat_id,
group_chat_id, send_status,
send_status, own_log_id,
own_log_id, remark,
remark, send_time,
send_time, delete_flag,
delete_flag, create_time,
create_time, update_time , staff_id
update_time , staff_id )VALUES
)VALUES( <foreach collection="list" item="item" separator="," >
#{logId}, (
#{planId}, #{item.logId},
#{wxEnterpriseId}, #{item.planId},
#{enterpriseId} , #{item.wxEnterpriseId},
#{groupChatId}, #{item.enterpriseId} ,
#{sendStatus}, #{item.groupChatId},
#{ownLogId}, #{item.sendStatus},
#{remark}, #{item.ownLogId},
#{sendTime}, #{item.remark},
0, #{item.sendTime},
now(), 0,
now() ,#{staffId} now(),
) 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