Commit 61e6dff4 by songyinghui

feat: 客户触达 发朋友圈的触达人数

parent 603f6140
...@@ -25,9 +25,13 @@ import com.gic.haoban.manage.service.service.content.TriggerCustomerDetailServic ...@@ -25,9 +25,13 @@ import com.gic.haoban.manage.service.service.content.TriggerCustomerDetailServic
import com.gic.haoban.manage.service.service.content.adaptor.MaterialEnterpriseAdaptor; import com.gic.haoban.manage.service.service.content.adaptor.MaterialEnterpriseAdaptor;
import com.gic.wechat.api.dto.qdto.group.QywxGroupMessageQDTO; import com.gic.wechat.api.dto.qdto.group.QywxGroupMessageQDTO;
import com.gic.wechat.api.dto.qdto.group.QywxGroupMsgSendResultQDTO; import com.gic.wechat.api.dto.qdto.group.QywxGroupMsgSendResultQDTO;
import com.gic.wechat.api.dto.qdto.group.QywxMomentInfoQDTO;
import com.gic.wechat.api.dto.qdto.group.QywxMomentSendResultQDTO;
import com.gic.wechat.api.dto.qywx.group.QywxGroupMessageInfoDTO; import com.gic.wechat.api.dto.qywx.group.QywxGroupMessageInfoDTO;
import com.gic.wechat.api.dto.qywx.group.QywxGroupMsgResp; import com.gic.wechat.api.dto.qywx.group.QywxGroupMsgResp;
import com.gic.wechat.api.dto.qywx.group.QywxGroupMsgSendResultDTO; import com.gic.wechat.api.dto.qywx.group.QywxGroupMsgSendResultDTO;
import com.gic.wechat.api.dto.qywx.group.QywxMomentRespDTO;
import com.gic.wechat.api.dto.qywx.group.QywxMomentSendResultRespDTO;
import com.gic.wechat.api.service.qywx.QywxSuiteApiService; import com.gic.wechat.api.service.qywx.QywxSuiteApiService;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -165,13 +169,14 @@ public class GroupMessageServiceImpl implements GroupMessageService { ...@@ -165,13 +169,14 @@ public class GroupMessageServiceImpl implements GroupMessageService {
doHandlerWithSend2Customer(clerkShareLogBos, groupMessageInfoBo, qwInfo, corpId, staffInfoMap, excludeMsgId, clerkShareLogIds); doHandlerWithSend2Customer(clerkShareLogBos, groupMessageInfoBo, qwInfo, corpId, staffInfoMap, excludeMsgId, clerkShareLogIds);
doHandlerWithSend2Group(wxEnterpriseId, clerkShareLogBos, groupMessageInfoBo, qwInfo, corpId, staffInfoMap, excludeMsgId, clerkShareLogIds); doHandlerWithSend2Group(wxEnterpriseId, clerkShareLogBos, groupMessageInfoBo, qwInfo, corpId, staffInfoMap, excludeMsgId, clerkShareLogIds);
if (groupMessageInfoBo.getShareLogId() != null) { if (groupMessageInfoBo.getShareLogId() != null) {
doHandlerWithSend2PYQ(clerkShareLogBos, clerkShareLogIds); doHandlerWithSend2PYQ(groupMessageInfoBo, clerkShareLogBos, staffInfoMap, corpId, qwInfo, clerkShareLogIds);
} }
return clerkShareLogIds; return clerkShareLogIds;
} }
/** /**
* 处理群发到客户 * 处理群发到客户
*
* @param wxEnterpriseId * @param wxEnterpriseId
* @param clerkShareLogBos * @param clerkShareLogBos
* @param groupMessageInfoBo * @param groupMessageInfoBo
...@@ -249,6 +254,7 @@ public class GroupMessageServiceImpl implements GroupMessageService { ...@@ -249,6 +254,7 @@ public class GroupMessageServiceImpl implements GroupMessageService {
/** /**
* 处理群发到客户的触达日志 * 处理群发到客户的触达日志
*
* @param clerkShareLogBos * @param clerkShareLogBos
* @param groupMessageInfoBo * @param groupMessageInfoBo
* @param qwInfo * @param qwInfo
...@@ -302,10 +308,14 @@ public class GroupMessageServiceImpl implements GroupMessageService { ...@@ -302,10 +308,14 @@ public class GroupMessageServiceImpl implements GroupMessageService {
/** /**
* 处理群发到朋友圈触达客户日志 * 处理群发到朋友圈触达客户日志
*
* @param clerkShareLogBos * @param clerkShareLogBos
* @param clerkShareLogIds * @param clerkShareLogIds
*/ */
private void doHandlerWithSend2PYQ(List<ClerkShareLogBO> clerkShareLogBos, List<Long> clerkShareLogIds) { private void doHandlerWithSend2PYQ(GroupMessageInfoBo groupMessageInfoBo, List<ClerkShareLogBO> clerkShareLogBos,
Map<String, TabHaobanStaff> staffInfoMap,
String corpId,
WxEnterpriseQwDTO qwInfo, List<Long> clerkShareLogIds) {
if (CollectionUtils.isEmpty(clerkShareLogBos)) { if (CollectionUtils.isEmpty(clerkShareLogBos)) {
return; return;
} }
...@@ -319,7 +329,16 @@ public class GroupMessageServiceImpl implements GroupMessageService { ...@@ -319,7 +329,16 @@ public class GroupMessageServiceImpl implements GroupMessageService {
} }
for (ClerkShareLogBO clerkShareLogBo : clerkShareLogWithPyq) { for (ClerkShareLogBO clerkShareLogBo : clerkShareLogWithPyq) {
clerkShareLogIds.add(clerkShareLogBo.getId()); clerkShareLogIds.add(clerkShareLogBo.getId());
List<String> externalUserIds = externalClerkRelatedService.queryExternalRelatedWithStaffId(clerkShareLogBo.getStaffId()); TabHaobanStaff staff = staffInfoMap.get(clerkShareLogBo.getStaffId());
if (staff == null) {
log.info("doHandlerWithSend2PYQ 导购分享日志成员不存在 staffId:{}", clerkShareLogBo.getStaffId());
continue;
}
String userId = staff.getWxUserId();
if (qwInfo.needOpenUserId3th()) {
userId = staff.getWxOpenUseId();
}
List<String> externalUserIds = this.queryMomentResult(corpId, userId, groupMessageInfoBo.getStartTime(), groupMessageInfoBo.getEndTime());
if (CollectionUtils.isEmpty(externalUserIds)) { if (CollectionUtils.isEmpty(externalUserIds)) {
log.info("处理导购群发朋友圈触达客户日志, 成员无好友. staffId:{}", clerkShareLogBo.getStaffId()); log.info("处理导购群发朋友圈触达客户日志, 成员无好友. staffId:{}", clerkShareLogBo.getStaffId());
return; return;
...@@ -439,11 +458,88 @@ public class GroupMessageServiceImpl implements GroupMessageService { ...@@ -439,11 +458,88 @@ public class GroupMessageServiceImpl implements GroupMessageService {
if (StringUtils.isNotBlank(serviceResponse.getResult().getCursor())) { if (StringUtils.isNotBlank(serviceResponse.getResult().getCursor())) {
log.info("递归获取成员群发结果 >>>>> "); log.info("递归获取成员群发结果 >>>>> ");
String tempCursor = serviceResponse.getResult().getCursor(); String tempCursor = serviceResponse.getResult().getCursor();
this.queryGroupMsgSendResult(corpid, msgId, userId, tempCursor); groupMsgSendResultInfos.addAll(this.queryGroupMsgSendResult(corpid, msgId, userId, tempCursor));
} }
return groupMsgSendResultInfos; return groupMsgSendResultInfos;
} }
/**
* 查询发朋友圈结果
* @param corpid
* @param userId
* @param startTime
* @param endTime
* @return
*/
public List<String> queryMomentResult(String corpid, String userId, Date startTime, Date endTime) {
QywxMomentInfoQDTO qywxMomentInfoQDTO = new QywxMomentInfoQDTO();
qywxMomentInfoQDTO.setCorpid(corpid);
qywxMomentInfoQDTO.setSuiteid(config.getWxSuiteid());
qywxMomentInfoQDTO.setStartTime(startTime.getTime() / 1000);
qywxMomentInfoQDTO.setEndTime(endTime.getTime() / 1000);
qywxMomentInfoQDTO.setCreatorId(userId);
qywxMomentInfoQDTO.setPageSize(20);
ServiceResponse<QywxMomentRespDTO> serviceResponse = qywxSuiteApiService.queryQywxMomentList(qywxMomentInfoQDTO);
if (!serviceResponse.isSuccess() || CollectionUtils.isEmpty(serviceResponse.getResult().getQywxMomentInfos())) {
log.info("查询客户发表朋友圈记录失败 {}", JSON.toJSONString(serviceResponse));
return Collections.emptyList();
}
List<String> result = new ArrayList<>();
for (QywxMomentRespDTO.QywxMomentInfoDTO qywxMomentInfo : serviceResponse.getResult().getQywxMomentInfos()) {
List<String> externalUserIds = this.queryMomentSendResultList(corpid, userId, qywxMomentInfo.getMomentId());
if (CollectionUtils.isNotEmpty(externalUserIds)) {
result.addAll(externalUserIds);
}
}
return result;
}
public List<String> queryMomentSendResultList(String corpid, String userId, String momentId) {
QywxMomentSendResultQDTO qywxMomentSendResultQDTO = new QywxMomentSendResultQDTO();
qywxMomentSendResultQDTO.setCorpid(corpid);
qywxMomentSendResultQDTO.setSuiteid(config.getWxSuiteid());
qywxMomentSendResultQDTO.setMomentId(momentId);
qywxMomentSendResultQDTO.setUserId(userId);
qywxMomentSendResultQDTO.setPageSize(1000);
ServiceResponse<QywxMomentSendResultRespDTO> serviceResponse = qywxSuiteApiService.queryQywxMomentSendResult(qywxMomentSendResultQDTO);
if (!serviceResponse.isSuccess() || CollectionUtils.isEmpty(serviceResponse.getResult().getQywxMomentSendResults())) {
log.info("查询朋友圈发送结果异常 {}", JSON.toJSONString(serviceResponse));
return Collections.emptyList();
}
List<String> result = new ArrayList<>();
List<String> externalUserIds = serviceResponse.getResult()
.getQywxMomentSendResults()
.stream()
.map(QywxMomentSendResultRespDTO.QywxMomentSendResultDTO::getExternalUserid)
.collect(Collectors.toList());
result.addAll(externalUserIds);
int loopTimes = 0;
String cursor = serviceResponse.getResult().getCursor();
while (StringUtils.isNotBlank(cursor)) {
loopTimes++;
log.info("查询群消息 第{}次查询", loopTimes);
qywxMomentSendResultQDTO.setCursor(cursor);
ServiceResponse<QywxMomentSendResultRespDTO> tempResponse = qywxSuiteApiService.queryQywxMomentSendResult(qywxMomentSendResultQDTO);
if (!serviceResponse.isSuccess() || CollectionUtils.isEmpty(serviceResponse.getResult().getQywxMomentSendResults())) {
break;
}
if (!tempResponse.isSuccess() || CollectionUtils.isEmpty(tempResponse.getResult().getQywxMomentSendResults())) {
log.info("查询朋友圈消息异常 跳出循环 {}", loopTimes);
break;
}
List<String> tempUserIds = serviceResponse.getResult()
.getQywxMomentSendResults()
.stream()
.map(QywxMomentSendResultRespDTO.QywxMomentSendResultDTO::getExternalUserid)
.collect(Collectors.toList());
result.addAll(tempUserIds);
cursor = tempResponse.getResult().getCursor();
}
return result;
}
/** /**
* 保存触达日志明细 群发到客户 * 保存触达日志明细 群发到客户
* *
...@@ -500,6 +596,7 @@ public class GroupMessageServiceImpl implements GroupMessageService { ...@@ -500,6 +596,7 @@ public class GroupMessageServiceImpl implements GroupMessageService {
/** /**
* 获取当前时间 有素材权限的商户 * 获取当前时间 有素材权限的商户
*
* @return * @return
*/ */
@Override @Override
......
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