Bladeren bron

直播使用sop发送

lmx 6 dagen geleden
bovenliggende
commit
9b8a397f9d

+ 74 - 27
fs-service/src/main/java/com/fs/live/service/impl/LiveWatchUserServiceImpl.java

@@ -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);
     }
 

+ 2 - 0
fs-service/src/main/java/com/fs/live/vo/LiveTagItemVO.java

@@ -18,6 +18,8 @@ public class LiveTagItemVO {
    private Integer markType;
    //标签id
    private Long qwTagId;
+   //企微标签id
+   private String qwTagRealId;
    //标签名称
    private String qwTagName;
 }

+ 1 - 1
fs-service/src/main/resources/mapper/live/LiveWatchLogMapper.xml

@@ -208,6 +208,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
 <!--    todo lmx-->
     <select id="selectLiveWatchLogByLiveId" resultType="com.fs.live.domain.LiveWatchLog">
-        select * from live_watch_log
+        select * from live_watch_log where live_id = #{liveId}
     </select>
 </mapper>