Commit d88d2cb1 by 徐高华

群发

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