|
|
@@ -95,6 +95,7 @@ import com.fs.qwApi.service.QwApiService;
|
|
|
import com.fs.reward.domain.FsRewardGoods;
|
|
|
import com.fs.reward.mapper.FsRewardGoodsMapper;
|
|
|
import com.fs.sop.domain.SopUserLogsInfo;
|
|
|
+import com.fs.sop.dto.QwCreateLinkByAppDTO;
|
|
|
import com.fs.sop.mapper.SopUserLogsInfoMapper;
|
|
|
import com.fs.sop.service.ISopUserLogsInfoService;
|
|
|
import com.fs.system.mapper.SysDictDataMapper;
|
|
|
@@ -149,7 +150,10 @@ public class FsUserCourseVideoServiceImpl extends ServiceImpl<FsUserCourseVideoM
|
|
|
private String signProjectName;
|
|
|
@Value("${isNewWxMerchant}")
|
|
|
private Boolean isNewWxMerchant;
|
|
|
-
|
|
|
+ private static final String appRealLink = "/pages/courseAnswer/index?link=";
|
|
|
+ private static final String appLink = "https://userapp.cqtyt.com/jumpapp/pages/index/index?link=";
|
|
|
+ @Autowired
|
|
|
+ private FsCourseWatchLogMapper fsCourseWatchLogMapper;
|
|
|
@Autowired
|
|
|
private OpenIMService openIMService;
|
|
|
@Autowired
|
|
|
@@ -157,9 +161,11 @@ public class FsUserCourseVideoServiceImpl extends ServiceImpl<FsUserCourseVideoM
|
|
|
@Autowired
|
|
|
private FsCourseRewardMapper courseRewardMapper;
|
|
|
@Autowired
|
|
|
+ private FsCourseSopAppLinkMapper fsCourseSopAppLinkMapper;
|
|
|
+ @Autowired
|
|
|
private FsRewardGoodsMapper rewardGoodsMapper;
|
|
|
private static final Logger logger = LoggerFactory.getLogger(FsUserCourseVideoServiceImpl.class);
|
|
|
-
|
|
|
+ private static final String APP_LINK_PREFIX = "/appcourse/pages/course/learning?course=";
|
|
|
private static final String miniappRealLink = "/pages_course/video.html?course=";
|
|
|
private static final String REAL_LINK_PREFIX = "/courseH5/pages/course/learning?course=";
|
|
|
private static final String SHORT_LINK_PREFIX = "/courseH5/pages/course/learning?s=";
|
|
|
@@ -4187,7 +4193,7 @@ public class FsUserCourseVideoServiceImpl extends ServiceImpl<FsUserCourseVideoM
|
|
|
insetCompanyFsUser.setBindType(1); //看课绑定的
|
|
|
try {
|
|
|
companyCompanyFsuserMapper.insertCompanyCompanyUser(insetCompanyFsUser);
|
|
|
- openIMService.checkAndImportFriendByDianBo(insetCompanyFsUser.getCompanyUserId(), insetCompanyFsUser.getUserId().toString(), StringUtils.isNotEmpty(param.getCorpId()) ? param.getCorpId() : "", true);
|
|
|
+ openIMService.checkAndImportFriendByDianBo(insetCompanyFsUser.getCompanyUserId(), insetCompanyFsUser.getUserId().toString(), StringUtils.isNotEmpty(param.getCorpId()) ? param.getCorpId() : "");
|
|
|
} catch (Exception e) {
|
|
|
logger.info("新增客服绑定报错:{}", e.getMessage());
|
|
|
}
|
|
|
@@ -5716,5 +5722,144 @@ public class FsUserCourseVideoServiceImpl extends ServiceImpl<FsUserCourseVideoM
|
|
|
return draw(param, user, watchLog, 5);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public Long addWatchLogIfNeeded(Integer videoId, Integer courseId,
|
|
|
+ Long fsUserId, String qwUserId, String companyUserId,
|
|
|
+ String companyId, Long externalId, Date createTime) {
|
|
|
+
|
|
|
+ try {
|
|
|
+ FsCourseWatchLog watchLog = new FsCourseWatchLog();
|
|
|
+ watchLog.setVideoId(videoId != null ? videoId.longValue() : null);
|
|
|
+ watchLog.setQwExternalContactId(externalId);
|
|
|
+ watchLog.setSendType(2);
|
|
|
+ watchLog.setQwUserId(Long.valueOf(qwUserId));
|
|
|
+ //watchLog.setSopId(sopId);
|
|
|
+ watchLog.setDuration(0L);
|
|
|
+ watchLog.setCourseId(courseId != null ? courseId.longValue() : null);
|
|
|
+ watchLog.setCompanyUserId(companyUserId != null ? Long.valueOf(companyUserId) : null);
|
|
|
+ watchLog.setCompanyId(companyId != null ? Long.valueOf(companyId) : null);
|
|
|
+ watchLog.setCreateTime(createTime);
|
|
|
+ watchLog.setUpdateTime(createTime);
|
|
|
+ watchLog.setLogType(3);
|
|
|
+ watchLog.setUserId(fsUserId);
|
|
|
+// watchLog.setWatchType(watchType);
|
|
|
+ //watchLog.setCampPeriodTime(convertStringToDate(startTime, "yyyy-MM-dd"));
|
|
|
+ //watchLog.setSopPeriodId(sopPeriodId);
|
|
|
+
|
|
|
+ int i = fsCourseWatchLogMapper.insertOrUpdateFsCourseWatchLog(watchLog);
|
|
|
+ return watchLog.getLogId();
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("一键群发失败-插入观看记录失败:" + e.getMessage());
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public QwCreateLinkByAppDTO createLinkByApp(String corpId,
|
|
|
+ Date sendTime, Integer courseId, Integer videoId, String qwUserId,
|
|
|
+ String companyUserId, String companyId, Long externalId,
|
|
|
+ String qwUserName, Long fsUserId, String courseName, String videoTitle, String thumbnail) {
|
|
|
+
|
|
|
+ FsCourseLink link = createFsCourseLink(corpId, sendTime, courseId, videoId, qwUserId,
|
|
|
+ companyUserId, companyId, externalId, 4, null);
|
|
|
+
|
|
|
+ FsCourseRealLink courseMap = new FsCourseRealLink();
|
|
|
+ BeanUtils.copyProperties(link, courseMap);
|
|
|
+
|
|
|
+ String courseJson = JSON.toJSONString(courseMap);
|
|
|
+ String realLinkFull = APP_LINK_PREFIX + courseJson;
|
|
|
+ link.setRealLink(realLinkFull);
|
|
|
+
|
|
|
+ Date updateTime = createUpdateTime(sendTime);
|
|
|
+
|
|
|
+ link.setUpdateTime(updateTime);
|
|
|
+
|
|
|
+ String sortLink = appLink + link.getLink() + "&videoId=" + videoId;
|
|
|
+
|
|
|
+ String appMsgLink = appRealLink + link.getLink();
|
|
|
+
|
|
|
+ QwCreateLinkByAppDTO byAppDTO = new QwCreateLinkByAppDTO();
|
|
|
+ byAppDTO.setSortLink(sortLink);
|
|
|
+ byAppDTO.setAppMsgLink(appMsgLink);
|
|
|
+
|
|
|
+ //异步生成app链接记录
|
|
|
+ createFsCourseSopAppLink(link.getLink(), sendTime, updateTime, companyId, companyUserId, qwUserId,
|
|
|
+ qwUserName, corpId, courseId, courseName, thumbnail, videoId,
|
|
|
+ videoTitle, appMsgLink, externalId);
|
|
|
+
|
|
|
+ //异步给app用户发送消息
|
|
|
+ //asyncSopTestService.asyncSendMsgBySopAppLink(externalId, setting.getLinkTitle(), setting.getLinkDescribe(), appMsgLink);
|
|
|
+
|
|
|
+// asyncSopTestService.asyncSendMsgBySopAppLinkNormalIMSingle(setting, externalId,Long.parseLong(companyUserId),fsUserId);
|
|
|
+ //存短链-
|
|
|
+ fsCourseLinkMapper.insertFsCourseLink(link);
|
|
|
+
|
|
|
+ return byAppDTO;
|
|
|
+ }
|
|
|
+ public FsCourseLink createFsCourseLink(String corpId, Date sendTime, Integer courseId, Integer videoId, String qwUserId,
|
|
|
+ String companyUserId, String companyId, Long externalId, Integer type, String chatId) {
|
|
|
+ // 手动创建 FsCourseLink 对象,避免使用 BeanUtils.copyProperties
|
|
|
+ FsCourseLink link = new FsCourseLink();
|
|
|
+ link.setCompanyId(Long.parseLong(companyId));
|
|
|
+ link.setQwUserId(Long.valueOf(qwUserId));
|
|
|
+ link.setCompanyUserId(Long.parseLong(companyUserId));
|
|
|
+ link.setVideoId(videoId.longValue());
|
|
|
+ link.setCorpId(corpId);
|
|
|
+ link.setCourseId(courseId.longValue());
|
|
|
+ link.setChatId(chatId);
|
|
|
+ link.setQwExternalId(externalId);
|
|
|
+ link.setLinkType(type); //小程序
|
|
|
+ link.setUNo(UUID.randomUUID().toString());
|
|
|
+ String randomString = generateRandomStringWithLock();
|
|
|
+ if (StringUtil.strIsNullOrEmpty(randomString)) {
|
|
|
+ link.setLink(UUID.randomUUID().toString().replace("-", ""));
|
|
|
+ } else {
|
|
|
+ link.setLink(randomString);
|
|
|
+ }
|
|
|
+
|
|
|
+ link.setCreateTime(sendTime);
|
|
|
+
|
|
|
+ return link;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void createFsCourseSopAppLink(String link, Date sendTime, Date updateTime, String companyId,
|
|
|
+ String companyUserId,String qwUserId,String qwUserName,String corpId,
|
|
|
+ Integer courseId,String linkTile,String linkImageUrl,Integer videoId,
|
|
|
+ String linkDescribe,String appMsgLink,Long externalId){
|
|
|
+
|
|
|
+ FsCourseSopAppLink sopAppLink=new FsCourseSopAppLink();
|
|
|
+ sopAppLink.setLink(link);
|
|
|
+ sopAppLink.setCreateTime(sendTime);
|
|
|
+ sopAppLink.setUpdateTime(updateTime);
|
|
|
+ sopAppLink.setCompanyId(Long.parseLong(companyId));
|
|
|
+ sopAppLink.setCompanyUserId(Long.parseLong(companyUserId));
|
|
|
+ sopAppLink.setQwUserId(Long.parseLong(qwUserId));
|
|
|
+ sopAppLink.setQwUserName(qwUserName);
|
|
|
+ sopAppLink.setCorpId(corpId);
|
|
|
+ sopAppLink.setCourseId(Long.valueOf(courseId));
|
|
|
+ sopAppLink.setCourseTitle(linkTile);
|
|
|
+ sopAppLink.setCourseUrl(linkImageUrl);
|
|
|
+ sopAppLink.setVideoId(Long.valueOf(videoId));
|
|
|
+ sopAppLink.setVideoTitle(linkDescribe);
|
|
|
+ sopAppLink.setAppRealLink(appMsgLink);
|
|
|
+ sopAppLink.setQwExternalId(externalId);
|
|
|
+
|
|
|
+ fsCourseSopAppLinkMapper.insertFsCourseSopAppLink(sopAppLink);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private Date createUpdateTime(Date sendTime) {
|
|
|
+ LocalDateTime sendDateTime = sendTime.toInstant()
|
|
|
+ .atZone(ZoneId.systemDefault())
|
|
|
+ .toLocalDateTime();
|
|
|
+
|
|
|
+ LocalDateTime expireDateTime = sendDateTime
|
|
|
+ .toLocalDate()
|
|
|
+ .atTime(23, 59, 59);
|
|
|
+
|
|
|
+ return Date.from(expireDateTime
|
|
|
+ .atZone(ZoneId.systemDefault())
|
|
|
+ .toInstant());
|
|
|
+ }
|
|
|
}
|
|
|
|