|
@@ -30,6 +30,7 @@ import com.fs.course.mapper.FsCourseWatchLogMapper;
|
|
|
import com.fs.course.param.FsCourseLinkCreateParam;
|
|
import com.fs.course.param.FsCourseLinkCreateParam;
|
|
|
import com.fs.course.service.IFsCourseLinkService;
|
|
import com.fs.course.service.IFsCourseLinkService;
|
|
|
import com.fs.course.service.IFsUserCourseVideoService;
|
|
import com.fs.course.service.IFsUserCourseVideoService;
|
|
|
|
|
+import com.fs.course.utils.FsCourseWatchLogProjectFiller;
|
|
|
import com.fs.fastGpt.domain.FastGptChatReplaceWords;
|
|
import com.fs.fastGpt.domain.FastGptChatReplaceWords;
|
|
|
import com.fs.fastGpt.mapper.FastGptChatReplaceWordsMapper;
|
|
import com.fs.fastGpt.mapper.FastGptChatReplaceWordsMapper;
|
|
|
import com.fs.feishu.service.FeiShuService;
|
|
import com.fs.feishu.service.FeiShuService;
|
|
@@ -157,6 +158,9 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private FsCourseWatchLogMapper fsCourseWatchLogMapper;
|
|
private FsCourseWatchLogMapper fsCourseWatchLogMapper;
|
|
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private FsCourseWatchLogProjectFiller fsCourseWatchLogProjectFiller;
|
|
|
|
|
+
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private AsyncSopTestService asyncSopTestService;
|
|
private AsyncSopTestService asyncSopTestService;
|
|
|
|
|
|
|
@@ -776,8 +780,9 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
|
|
|
case "16":
|
|
case "16":
|
|
|
createVoiceUrl(st, companyUserId, qwSop);
|
|
createVoiceUrl(st, companyUserId, qwSop);
|
|
|
break;
|
|
break;
|
|
|
- //飞书看课
|
|
|
|
|
|
|
+ //飞书看课(固定免授权)
|
|
|
case "17":
|
|
case "17":
|
|
|
|
|
+ st.setFeishuNeedAuth(0);
|
|
|
Integer videoId18 = param.getVideoId() != null ? param.getVideoId().intValue() : null;
|
|
Integer videoId18 = param.getVideoId() != null ? param.getVideoId().intValue() : null;
|
|
|
Integer courseId18 = param.getCourseId() != null ? param.getCourseId().intValue() : null;
|
|
Integer courseId18 = param.getCourseId() != null ? param.getCourseId().intValue() : null;
|
|
|
Long companyIdLong = qwUser.getCompanyId();
|
|
Long companyIdLong = qwUser.getCompanyId();
|
|
@@ -790,7 +795,7 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
|
|
|
Map<String, String> feishuH5Link = createFeishuH5Link(st, param.getCorpId(), createTime, courseId18, videoId18, String.valueOf(qwUser.getId()), companyUserId, String.valueOf(companyIdLong), externalUserId, config);
|
|
Map<String, String> feishuH5Link = createFeishuH5Link(st, param.getCorpId(), createTime, courseId18, videoId18, String.valueOf(qwUser.getId()), companyUserId, String.valueOf(companyIdLong), externalUserId, config);
|
|
|
String shortCode = feishuH5Link.get("link");
|
|
String shortCode = feishuH5Link.get("link");
|
|
|
String feishuLink = resolveFeishuSendLinkSafely(videoId18.longValue(), companyIdLong, courseId18.longValue(),
|
|
String feishuLink = resolveFeishuSendLinkSafely(videoId18.longValue(), companyIdLong, courseId18.longValue(),
|
|
|
- companyUserIdLong, shortCode, st.getFeishuAccountId(), st.getFeishuNeedAuth(),
|
|
|
|
|
|
|
+ companyUserIdLong, shortCode, st.getFeishuAccountId(), 0,
|
|
|
param.getSopId(), null, externalUserId, vo.getFsUserId(),
|
|
param.getSopId(), null, externalUserId, vo.getFsUserId(),
|
|
|
qwUser.getQwUserId(), qwUser.getQwUserName(), companyUserId, companyId,
|
|
qwUser.getQwUserId(), qwUser.getQwUserName(), companyUserId, companyId,
|
|
|
param.getCorpId(), createTime, param.getStartTime(), feishuShardAllocator);
|
|
param.getCorpId(), createTime, param.getStartTime(), feishuShardAllocator);
|
|
@@ -1018,8 +1023,9 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
|
|
|
throw new RuntimeException(e);
|
|
throw new RuntimeException(e);
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
- //飞书看课(发群:chatId 是企微字符串,不能转 Long,与小程序发群一样挂 chatId)
|
|
|
|
|
|
|
+ //飞书看课(发群:chatId 是企微字符串,不能转 Long,与小程序发群一样挂 chatId;固定免授权)
|
|
|
case "17":
|
|
case "17":
|
|
|
|
|
+ st.setFeishuNeedAuth(0);
|
|
|
Integer videoId18Group = param.getVideoId() != null ? param.getVideoId().intValue() : null;
|
|
Integer videoId18Group = param.getVideoId() != null ? param.getVideoId().intValue() : null;
|
|
|
Integer courseId18Group = param.getCourseId() != null ? param.getCourseId().intValue() : null;
|
|
Integer courseId18Group = param.getCourseId() != null ? param.getCourseId().intValue() : null;
|
|
|
Long companyIdLongGroup = Long.valueOf(qwUser.getCompanyId().toString());
|
|
Long companyIdLongGroup = Long.valueOf(qwUser.getCompanyId().toString());
|
|
@@ -1031,7 +1037,7 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
|
|
|
Map<String, String> feishuH5LinkGroup = createFeishuH5Link(st, param.getCorpId(), createTime, courseId18Group, videoId18Group, String.valueOf(qwUser.getId()), String.valueOf(companyUserIdLongGroup), String.valueOf(companyIdLongGroup), null, config, groupChat.getChatId());
|
|
Map<String, String> feishuH5LinkGroup = createFeishuH5Link(st, param.getCorpId(), createTime, courseId18Group, videoId18Group, String.valueOf(qwUser.getId()), String.valueOf(companyUserIdLongGroup), String.valueOf(companyIdLongGroup), null, config, groupChat.getChatId());
|
|
|
String shortCodeGroup = feishuH5LinkGroup.get("link");
|
|
String shortCodeGroup = feishuH5LinkGroup.get("link");
|
|
|
String feishuLinkGroup = resolveFeishuSendLinkSafely(videoId18Group.longValue(), companyIdLongGroup, courseId18Group.longValue(),
|
|
String feishuLinkGroup = resolveFeishuSendLinkSafely(videoId18Group.longValue(), companyIdLongGroup, courseId18Group.longValue(),
|
|
|
- companyUserIdLongGroup, shortCodeGroup, st.getFeishuAccountId(), st.getFeishuNeedAuth(),
|
|
|
|
|
|
|
+ companyUserIdLongGroup, shortCodeGroup, st.getFeishuAccountId(), 0,
|
|
|
param.getSopId(), null, null, null,
|
|
param.getSopId(), null, null, null,
|
|
|
qwUser.getQwUserId(), qwUser.getQwUserName(), String.valueOf(companyUserIdLongGroup), String.valueOf(companyIdLongGroup),
|
|
qwUser.getQwUserId(), qwUser.getQwUserName(), String.valueOf(companyUserIdLongGroup), String.valueOf(companyIdLongGroup),
|
|
|
param.getCorpId(), createTime, param.getStartTime(), feishuShardAllocator);
|
|
param.getCorpId(), createTime, param.getStartTime(), feishuShardAllocator);
|
|
@@ -1354,8 +1360,9 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
|
|
|
throw new RuntimeException(e);
|
|
throw new RuntimeException(e);
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
- //飞书看课
|
|
|
|
|
|
|
+ //飞书看课(固定免授权)
|
|
|
case "17":
|
|
case "17":
|
|
|
|
|
+ st.setFeishuNeedAuth(0);
|
|
|
Integer videoId18 = param.getVideoId() != null ? param.getVideoId().intValue() : null;
|
|
Integer videoId18 = param.getVideoId() != null ? param.getVideoId().intValue() : null;
|
|
|
Integer courseId18 = param.getCourseId() != null ? param.getCourseId().intValue() : null;
|
|
Integer courseId18 = param.getCourseId() != null ? param.getCourseId().intValue() : null;
|
|
|
Long companyIdLong = Long.parseLong(companyId);
|
|
Long companyIdLong = Long.parseLong(companyId);
|
|
@@ -1364,11 +1371,6 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
|
|
|
log.error("飞书链接生成失败:视频ID为空,sopId={}", param.getSopId());
|
|
log.error("飞书链接生成失败:视频ID为空,sopId={}", param.getSopId());
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
- if (FeiShuService.isAuthRequired(st.getFeishuNeedAuth())) {
|
|
|
|
|
- addWatchLogIfNeeded(item.getSopId(), param.getVideoId(), param.getCourseId(),
|
|
|
|
|
- item.getFsUserId(), qwUserId, companyUserId, companyId,
|
|
|
|
|
- item.getExternalId(), param.getStartTime(), createTime, 2);
|
|
|
|
|
- }
|
|
|
|
|
String txt18 = StringUtil.strIsNullOrEmpty(qwUser.getWelcomeText()) ? "" : qwUser.getWelcomeText();
|
|
String txt18 = StringUtil.strIsNullOrEmpty(qwUser.getWelcomeText()) ? "" : qwUser.getWelcomeText();
|
|
|
String customerTitle = StringUtil.strIsNullOrEmpty(contact.getStageStatus()) || "0".equals(contact.getStageStatus()) ? "同学" : contact.getStageStatus();
|
|
String customerTitle = StringUtil.strIsNullOrEmpty(contact.getStageStatus()) || "0".equals(contact.getStageStatus()) ? "同学" : contact.getStageStatus();
|
|
|
if (StringUtils.isNotEmpty(st.getLinkTitle())) {
|
|
if (StringUtils.isNotEmpty(st.getLinkTitle())) {
|
|
@@ -1384,7 +1386,7 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
|
|
|
Map<String, String> feishuH5Link = createFeishuH5Link(st, param.getCorpId(), createTime, courseId18, videoId18, qwUserId, companyUserId, companyId, item.getExternalId(), config);
|
|
Map<String, String> feishuH5Link = createFeishuH5Link(st, param.getCorpId(), createTime, courseId18, videoId18, qwUserId, companyUserId, companyId, item.getExternalId(), config);
|
|
|
String shortCode = feishuH5Link.get("link");
|
|
String shortCode = feishuH5Link.get("link");
|
|
|
String feishuLink = resolveFeishuSendLinkSafely(videoId18.longValue(), companyIdLong, courseId18.longValue(),
|
|
String feishuLink = resolveFeishuSendLinkSafely(videoId18.longValue(), companyIdLong, courseId18.longValue(),
|
|
|
- companyUserIdLong, shortCode, st.getFeishuAccountId(), st.getFeishuNeedAuth(),
|
|
|
|
|
|
|
+ companyUserIdLong, shortCode, st.getFeishuAccountId(), 0,
|
|
|
param.getSopId(), item.getUserLogsId(), item.getExternalId(), item.getFsUserId(),
|
|
param.getSopId(), item.getUserLogsId(), item.getExternalId(), item.getFsUserId(),
|
|
|
qwUserId, qwUser.getQwUserName(), companyUserId, companyId,
|
|
qwUserId, qwUser.getQwUserName(), companyUserId, companyId,
|
|
|
param.getCorpId(), createTime, param.getStartTime(), feishuShardAllocator);
|
|
param.getCorpId(), createTime, param.getStartTime(), feishuShardAllocator);
|
|
@@ -2129,8 +2131,9 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
|
|
|
log.info("处理订阅号文章类型(processSetting),保留字段: articleUrl={}, miniprogramPicUrl={}, miniprogramPage={}",
|
|
log.info("处理订阅号文章类型(processSetting),保留字段: articleUrl={}, miniprogramPicUrl={}, miniprogramPage={}",
|
|
|
st.getArticleUrl(), st.getMiniprogramPicUrl(), st.getMiniprogramPage());
|
|
st.getArticleUrl(), st.getMiniprogramPicUrl(), st.getMiniprogramPage());
|
|
|
break;
|
|
break;
|
|
|
- //飞书看课
|
|
|
|
|
|
|
+ //飞书看课(固定免授权)
|
|
|
case "17":
|
|
case "17":
|
|
|
|
|
+ st.setFeishuNeedAuth(0);
|
|
|
Integer videoId18 = param.getVideoId() != null ? param.getVideoId().intValue() : null;
|
|
Integer videoId18 = param.getVideoId() != null ? param.getVideoId().intValue() : null;
|
|
|
Integer courseId18 = param.getCourseId() != null ? param.getCourseId().intValue() : null;
|
|
Integer courseId18 = param.getCourseId() != null ? param.getCourseId().intValue() : null;
|
|
|
Long companyIdLong = Long.parseLong(companyId);
|
|
Long companyIdLong = Long.parseLong(companyId);
|
|
@@ -2148,15 +2151,10 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
|
|
|
log.error("飞书链接生成失败:外部ID为空,sopId={}", item.getSopId());
|
|
log.error("飞书链接生成失败:外部ID为空,sopId={}", item.getSopId());
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
- if (FeiShuService.isAuthRequired(st.getFeishuNeedAuth())) {
|
|
|
|
|
- addWatchLogIfNeeded(item.getSopId(), param.getVideoId(), param.getCourseId(),
|
|
|
|
|
- item.getFsUserId(), String.valueOf(qwUser.getId()), companyUserId, companyId,
|
|
|
|
|
- item.getExternalId(), item.getStartTime(), dataTime, 2);
|
|
|
|
|
- }
|
|
|
|
|
Map<String, String> feishuH5Link = createFeishuH5Link(st, param.getCorpId(), dataTime, courseId18, videoId18, String.valueOf(qwUser.getId()), companyUserId, companyId, externalId, config);
|
|
Map<String, String> feishuH5Link = createFeishuH5Link(st, param.getCorpId(), dataTime, courseId18, videoId18, String.valueOf(qwUser.getId()), companyUserId, companyId, externalId, config);
|
|
|
String shortLink = feishuH5Link.get("link");
|
|
String shortLink = feishuH5Link.get("link");
|
|
|
String feishuLink = resolveFeishuSendLinkSafely(videoId18.longValue(), companyIdLong, courseId18.longValue(),
|
|
String feishuLink = resolveFeishuSendLinkSafely(videoId18.longValue(), companyIdLong, courseId18.longValue(),
|
|
|
- companyUserIdLong, shortLink, st.getFeishuAccountId(), st.getFeishuNeedAuth(),
|
|
|
|
|
|
|
+ companyUserIdLong, shortLink, st.getFeishuAccountId(), 0,
|
|
|
item.getSopId(), item.getUserLogsId(), externalId, item.getFsUserId(),
|
|
item.getSopId(), item.getUserLogsId(), externalId, item.getFsUserId(),
|
|
|
String.valueOf(qwUser.getId()), qwUser.getQwUserName(), companyUserId, companyId,
|
|
String.valueOf(qwUser.getId()), qwUser.getQwUserName(), companyUserId, companyId,
|
|
|
param.getCorpId(), dataTime, item.getStartTime(), feishuShardAllocator);
|
|
param.getCorpId(), dataTime, item.getStartTime(), feishuShardAllocator);
|
|
@@ -2274,7 +2272,8 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
|
|
|
FsCourseLink link = createFsCourseLink(corpId, sendTime, courseId, videoId, Long.valueOf(qwUserId),
|
|
FsCourseLink link = createFsCourseLink(corpId, sendTime, courseId, videoId, Long.valueOf(qwUserId),
|
|
|
companyUserId, companyId, externalId, 3, chatId);
|
|
companyUserId, companyId, externalId, 3, chatId);
|
|
|
link.setFeishuAccountId(setting.getFeishuAccountId());
|
|
link.setFeishuAccountId(setting.getFeishuAccountId());
|
|
|
- link.setFeishuNeedAuth(FeiShuService.isAuthRequired(setting.getFeishuNeedAuth()) ? 1 : 0);
|
|
|
|
|
|
|
+ // 飞书旧链接(contentType=17)固定免授权
|
|
|
|
|
+ link.setFeishuNeedAuth(0);
|
|
|
FsCourseRealLink courseMap = new FsCourseRealLink();
|
|
FsCourseRealLink courseMap = new FsCourseRealLink();
|
|
|
BeanUtils.copyProperties(link, courseMap);
|
|
BeanUtils.copyProperties(link, courseMap);
|
|
|
String courseJson = JSON.toJSONString(courseMap);
|
|
String courseJson = JSON.toJSONString(courseMap);
|
|
@@ -2488,6 +2487,12 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
|
|
|
watchLog.setWatchType(watchType);
|
|
watchLog.setWatchType(watchType);
|
|
|
watchLog.setCampPeriodTime(convertStringToDate(startTime,"yyyy-MM-dd"));
|
|
watchLog.setCampPeriodTime(convertStringToDate(startTime,"yyyy-MM-dd"));
|
|
|
|
|
|
|
|
|
|
+ // 同步落库:按 courseId 轻量取 project(有进程内缓存)
|
|
|
|
|
+ Long project = fsCourseWatchLogProjectFiller.getProjectByCourseId(
|
|
|
|
|
+ courseId != null ? courseId.longValue() : null);
|
|
|
|
|
+ if (project != null) {
|
|
|
|
|
+ watchLog.setProject(project);
|
|
|
|
|
+ }
|
|
|
//存看课记录
|
|
//存看课记录
|
|
|
fsCourseWatchLogMapper.insertOrUpdateFsCourseWatchLog(watchLog);
|
|
fsCourseWatchLogMapper.insertOrUpdateFsCourseWatchLog(watchLog);
|
|
|
}catch (Exception e){
|
|
}catch (Exception e){
|