|
|
@@ -753,12 +753,59 @@ public class LiveWatchUserServiceImpl implements ILiveWatchUserService {
|
|
|
public void qwTagMarkByLiveWatchLog(Long liveId) {
|
|
|
//查询直播间的标签配置
|
|
|
List<LiveTagItemVO> liveTagConfig = liveTagConfigMapper.getLiveTagListByliveId(liveId);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 8 回放已下单
|
|
|
+ * 7 直播已下单
|
|
|
+ * 6 回放已完课
|
|
|
+ * 5 直播已完课
|
|
|
+ * 4 回放到课未完课
|
|
|
+ * 3 直播到课未完课
|
|
|
+ * 2 回放未到课
|
|
|
+ * 1 直播未到课
|
|
|
+ */
|
|
|
+ Map<Integer, LiveTagItemVO> liveTagMp = liveTagConfig.stream()
|
|
|
+ .collect(Collectors.toMap(
|
|
|
+ LiveTagItemVO::getMarkType,
|
|
|
+ Function.identity(),
|
|
|
+ (existing, replacement) -> existing
|
|
|
+ ));
|
|
|
//查询直播间的看课记录
|
|
|
List<LiveWatchLog> liveWatchLogs = liveWatchLogMapper.selectLiveWatchLogByLiveId(liveId);
|
|
|
|
|
|
//根据配置给每位用户打上标签
|
|
|
+ List<HandleUserTagVO> handleUserTagVOS = new ArrayList<>();
|
|
|
+ liveWatchLogs.forEach(log->{
|
|
|
+ HandleUserTagVO addItem = new HandleUserTagVO();
|
|
|
+ addItem.setLiveId(liveId);
|
|
|
+ addItem.setExternalId(log.getExternalContactId());
|
|
|
+ List<Long> tags = new ArrayList<>();
|
|
|
+ switch(log.getLogType())
|
|
|
+ {
|
|
|
+ //1看课中
|
|
|
+ case 1:
|
|
|
+ //打标签 直播到课未完课
|
|
|
+ LiveTagItemVO liveTagItemVO = liveTagMp.get(3);
|
|
|
+ tags.add(liveTagItemVO.getQwTagId());
|
|
|
+ break;
|
|
|
+ //2完课
|
|
|
+ case 2:
|
|
|
+ //打标签
|
|
|
+ break;
|
|
|
+ //3待看课
|
|
|
+ case 3:
|
|
|
+ //打标签
|
|
|
+ break;
|
|
|
+ //4看课中断
|
|
|
+ case 4:
|
|
|
+ //打标签
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
|
|
|
-
|
|
|
+ handleUserTagVOS.add(addItem);
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -770,10 +817,10 @@ public class LiveWatchUserServiceImpl implements ILiveWatchUserService {
|
|
|
log.warn("用户标签列表为空,跳过打标签操作");
|
|
|
return;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
int successCount = 0;
|
|
|
int failCount = 0;
|
|
|
-
|
|
|
+
|
|
|
for (HandleUserTagVO userTagVO : userTagVOS) {
|
|
|
try {
|
|
|
// 参数校验
|
|
|
@@ -782,13 +829,13 @@ public class LiveWatchUserServiceImpl implements ILiveWatchUserService {
|
|
|
failCount++;
|
|
|
continue;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if (CollUtil.isEmpty(userTagVO.getTags())) {
|
|
|
log.warn("标签列表为空,跳过该用户: externalId={}", userTagVO.getExternalId());
|
|
|
failCount++;
|
|
|
continue;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 根据外部联系人ID查询企微外部联系人信息
|
|
|
QwExternalContact qwExternalContact = qwExternalContactMapper.selectQwExternalContactById(userTagVO.getExternalId());
|
|
|
if (qwExternalContact == null) {
|
|
|
@@ -796,34 +843,34 @@ public class LiveWatchUserServiceImpl implements ILiveWatchUserService {
|
|
|
failCount++;
|
|
|
continue;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 校验必要字段
|
|
|
- if (StringUtils.isEmpty(qwExternalContact.getUserId())
|
|
|
+ if (StringUtils.isEmpty(qwExternalContact.getUserId())
|
|
|
|| StringUtils.isEmpty(qwExternalContact.getExternalUserId())
|
|
|
|| StringUtils.isEmpty(qwExternalContact.getCorpId())) {
|
|
|
- log.warn("企微外部联系人信息不完整: externalId={}, userId={}, externalUserId={}, corpId={}",
|
|
|
- userTagVO.getExternalId(),
|
|
|
- qwExternalContact.getUserId(),
|
|
|
+ log.warn("企微外部联系人信息不完整: externalId={}, userId={}, externalUserId={}, corpId={}",
|
|
|
+ userTagVO.getExternalId(),
|
|
|
+ qwExternalContact.getUserId(),
|
|
|
qwExternalContact.getExternalUserId(),
|
|
|
qwExternalContact.getCorpId());
|
|
|
failCount++;
|
|
|
continue;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 构建打标签参数
|
|
|
QwEditUserTagParam qwEditUserTagParam = new QwEditUserTagParam();
|
|
|
qwEditUserTagParam.setUserid(qwExternalContact.getUserId());
|
|
|
qwEditUserTagParam.setExternal_userid(qwExternalContact.getExternalUserId());
|
|
|
qwEditUserTagParam.setAdd_tag(userTagVO.getTags());
|
|
|
-
|
|
|
+
|
|
|
// 调用企微API打标签
|
|
|
QwResult qwResult = qwApiService.editUserTag(qwEditUserTagParam, qwExternalContact.getCorpId());
|
|
|
-
|
|
|
+
|
|
|
if (qwResult != null && qwResult.getErrcode() == 0) {
|
|
|
// 打标签成功,更新数据库中的标签信息
|
|
|
String existingTagIds = qwExternalContact.getTagIds();
|
|
|
Set<String> uniqueTagIds = new HashSet<>();
|
|
|
-
|
|
|
+
|
|
|
// 合并现有标签
|
|
|
if (StringUtils.isNotEmpty(existingTagIds)) {
|
|
|
try {
|
|
|
@@ -832,44 +879,44 @@ public class LiveWatchUserServiceImpl implements ILiveWatchUserService {
|
|
|
uniqueTagIds.addAll(parsedTags);
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
- log.warn("解析现有标签失败: externalId={}, tagIds={}, error={}",
|
|
|
+ log.warn("解析现有标签失败: externalId={}, tagIds={}, error={}",
|
|
|
userTagVO.getExternalId(), existingTagIds, e.getMessage());
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 添加新标签
|
|
|
uniqueTagIds.addAll(userTagVO.getTags());
|
|
|
-
|
|
|
+
|
|
|
// 更新数据库
|
|
|
QwExternalContact updateContact = new QwExternalContact();
|
|
|
updateContact.setId(qwExternalContact.getId());
|
|
|
updateContact.setTagIds(JSON.toJSONString(new ArrayList<>(uniqueTagIds)));
|
|
|
qwExternalContactMapper.updateQwExternalContact(updateContact);
|
|
|
-
|
|
|
+
|
|
|
successCount++;
|
|
|
- log.info("成功为用户打标签: externalId={}, userId={}, externalUserId={}, tags={}",
|
|
|
- userTagVO.getExternalId(),
|
|
|
- qwExternalContact.getUserId(),
|
|
|
+ log.info("成功为用户打标签: externalId={}, userId={}, externalUserId={}, tags={}",
|
|
|
+ userTagVO.getExternalId(),
|
|
|
+ qwExternalContact.getUserId(),
|
|
|
qwExternalContact.getExternalUserId(),
|
|
|
userTagVO.getTags());
|
|
|
} else {
|
|
|
// 打标签失败
|
|
|
failCount++;
|
|
|
String errorMsg = qwResult != null ? qwResult.getErrmsg() : "未知错误";
|
|
|
- log.error("为用户打标签失败: externalId={}, userId={}, externalUserId={}, error={}",
|
|
|
- userTagVO.getExternalId(),
|
|
|
- qwExternalContact.getUserId(),
|
|
|
+ log.error("为用户打标签失败: externalId={}, userId={}, externalUserId={}, error={}",
|
|
|
+ userTagVO.getExternalId(),
|
|
|
+ qwExternalContact.getUserId(),
|
|
|
qwExternalContact.getExternalUserId(),
|
|
|
errorMsg);
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
failCount++;
|
|
|
- log.error("为用户打标签异常: externalId={}, error={}",
|
|
|
+ log.error("为用户打标签异常: externalId={}, error={}",
|
|
|
userTagVO.getExternalId(), e.getMessage(), e);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- log.info("打标签操作完成: 总数={}, 成功={}, 失败={}",
|
|
|
+
|
|
|
+ log.info("打标签操作完成: 总数={}, 成功={}, 失败={}",
|
|
|
userTagVOS.size(), successCount, failCount);
|
|
|
}
|
|
|
|