|
|
@@ -21,6 +21,8 @@ import com.fs.his.domain.FsUser;
|
|
|
import com.fs.his.mapper.FsUserMapper;
|
|
|
import com.fs.ipad.IpadSendUtils;
|
|
|
import com.fs.ipad.vo.*;
|
|
|
+import com.fs.live.domain.LiveWatchLog;
|
|
|
+import com.fs.live.mapper.LiveWatchLogMapper;
|
|
|
import com.fs.qw.domain.QwExternalContact;
|
|
|
import com.fs.qw.domain.QwUser;
|
|
|
import com.fs.qw.domain.QwUserVideo;
|
|
|
@@ -63,6 +65,8 @@ public class IpadSendServer {
|
|
|
|
|
|
|
|
|
private static final List<String> PROJECT_NAMES = Arrays.asList("济南联志健康", "北京存在文化","宽益堂");
|
|
|
+ private final LiveWatchLogMapper liveWatchLogMapper;
|
|
|
+
|
|
|
private void sendMiniProgram(BaseVo vo, QwSopCourseFinishTempSetting.Setting content, Map<String, FsCoursePlaySourceConfig> miniMap, Long companyId) {
|
|
|
// 发送参数原本的appid
|
|
|
String appid = content.getMiniprogramAppid();
|
|
|
@@ -432,6 +436,132 @@ public class IpadSendServer {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 直播间判定消息
|
|
|
+ * @param qwSopLogs
|
|
|
+ * @param setting
|
|
|
+ * @param qwUser
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public boolean isSendLogsLive(QwSopLogs qwSopLogs, QwSopCourseFinishTempSetting setting, QwUser qwUser){
|
|
|
+ if(qwSopLogs.getSendStatus() != 3){
|
|
|
+ log.info("直播状态异常不发送:{}, LOGID: {}", qwUser.getQwUserName(), qwSopLogs.getId());
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if(redisCache.getCacheObject("qw:user:id:" + qwUser.getId()) != null){
|
|
|
+ log.info("直播频率异常不发送:{}", qwUser.getQwUserName());
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ boolean noSop = qwSopLogs.getSendType() != 3 && qwSopLogs.getSendType() != 7;
|
|
|
+
|
|
|
+ if (qwSopLogs.getExpiryTime() == null && noSop) {
|
|
|
+ // 作废消息
|
|
|
+ log.warn("直播SOP_LOG_ID:{}, 直播SOP任务被删除", qwSopLogs.getId());
|
|
|
+ qwSopLogsService.updateQwSopLogsByWatchLogType(qwSopLogs.getId(), "直播SOP任务被删除");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ LocalDateTime sendTime = DateUtil.stringToLocalDateTime(qwSopLogs.getSendTime());
|
|
|
+ LocalDateTime expiryDateTime;
|
|
|
+
|
|
|
+ // 判断是否过期
|
|
|
+ if(qwSopLogs.getSendType() == 3 || qwSopLogs.getSendType() == 7){
|
|
|
+ expiryDateTime = sendTime.plusHours(12);
|
|
|
+ }else{
|
|
|
+ expiryDateTime = sendTime.plusHours(qwSopLogs.getExpiryTime());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (LocalDateTime.now().isAfter(expiryDateTime)) {
|
|
|
+ // 作废消息
|
|
|
+ log.warn("直播SOP_LOG_ID:{}, 已过期,不发送", qwSopLogs.getId());
|
|
|
+ qwSopLogsService.updateQwSopLogsByWatchLogType(qwSopLogs.getId(), "已过期,不发送");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (setting.getCourseType() == null && noSop && setting.getType() == 2) {
|
|
|
+ log.warn("直播SOP_LOG_ID:{}, 模板未选消息类型,不发送", qwSopLogs.getId());
|
|
|
+ qwSopLogsService.updateQwSopLogsByWatchLogType(qwSopLogs.getId(), "直播模板未选消息类型,不发送");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查询视频是否下架
|
|
|
+// if(setting.getVideoId()!= null){
|
|
|
+// FsUserCourseVideo video = fsUserCourseVideoMapper.selectFsUserCourseVideoByVideoId( setting.getVideoId().longValue());
|
|
|
+// if(video != null){
|
|
|
+// if(video.getIsOnPut()!=null && video.getIsOnPut() == 1){
|
|
|
+// log.warn("SOP_LOG_ID:{}, 视频已下架,不发送", qwSopLogs.getId());
|
|
|
+// qwSopLogsService.updateQwSopLogsByWatchLogType(qwSopLogs.getId(), "视频已下架,不发送");
|
|
|
+// return false;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+ Long queryLiveId = null;
|
|
|
+ queryLiveId = setting.getLiveId();
|
|
|
+ if(null == queryLiveId){
|
|
|
+ for (QwSopCourseFinishTempSetting.Setting a : setting.getSetting()) {
|
|
|
+ if (StringUtils.isNotBlank(a.getLiveId())) {
|
|
|
+ queryLiveId = Long.valueOf(a.getLiveId());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ LiveWatchLog liveWatchLog = liveWatchLogMapper.selectOneLogByLiveIdAndQwUserIdAndExternalId(
|
|
|
+ queryLiveId,
|
|
|
+ String.valueOf(qwUser.getId()),
|
|
|
+ qwSopLogs.getExternalId()
|
|
|
+ );
|
|
|
+ Integer courseType = setting.getCourseType();
|
|
|
+ String logId = qwSopLogs.getId();
|
|
|
+ if(null != liveWatchLog){
|
|
|
+ if (!QwSopLogsServiceImpl.isCourseTypeValid(courseType, liveWatchLog.getLogType())) {
|
|
|
+ // 作废消息
|
|
|
+ log.warn("SOP_LOG_ID:{}, 看课状态未满足,不发送", qwSopLogs.getId());
|
|
|
+ qwSopLogsService.updateQwSopLogsByWatchLogType(logId, "看课状态未满足,不发送");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ log.warn("SOP_LOG_ID:{}, 无观看记录,不发送", qwSopLogs.getId());
|
|
|
+ qwSopLogsService.updateQwSopLogsByWatchLogType(logId, "无观看记录,不发送");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+// if (qwSopLogs.getSendType() != 6 && noSop) {
|
|
|
+// // 客户的信息
|
|
|
+//// QwExternalContactHParam contactHParam = new QwExternalContactHParam();
|
|
|
+//// contactHParam.setUserId(qwUser.getQwUserId().trim());
|
|
|
+//// contactHParam.setExternalUserId(qwSopLogs.getExternalUserId().trim());
|
|
|
+//// contactHParam.setCorpId(qwUser.getCorpId().trim());
|
|
|
+// Integer courseType = setting.getCourseType();
|
|
|
+// if (setting.getType() == 2 && courseType != 0) {// 课程消息,进行复杂的条件判断
|
|
|
+//// log.debug("企微查询:{}", contactHParam);
|
|
|
+//// Long qwExternalContactId = qwExternalContactMapper.getQwExternalContactId(contactHParam);
|
|
|
+// FsCourseWatchLog watchLog = watchLogService.getWatchCourseLogVideoBySop(
|
|
|
+// setting.getVideoId().longValue(),
|
|
|
+// String.valueOf(qwUser.getId()),
|
|
|
+// qwSopLogs.getExternalId()
|
|
|
+// );
|
|
|
+// log.debug("ID:{}-看课记录参数:videoID:{}, qwUserID:{}, extID:{}", qwSopLogs.getId(), setting.getVideoId().longValue(), qwUser.getId(), qwSopLogs.getExternalId());
|
|
|
+// log.debug("ID:{}-看课记录:{}", qwSopLogs.getId(), watchLog);
|
|
|
+// String logId = qwSopLogs.getId();
|
|
|
+// if (watchLog != null) {
|
|
|
+// //新逻辑
|
|
|
+// if (!QwSopLogsServiceImpl.isCourseTypeValid(courseType, watchLog.getLogType())) {
|
|
|
+// // 作废消息
|
|
|
+// log.warn("SOP_LOG_ID:{}, 看课状态未满足,不发送", qwSopLogs.getId());
|
|
|
+// qwSopLogsService.updateQwSopLogsByWatchLogType(logId, "看课状态未满足,不发送");
|
|
|
+// return false;
|
|
|
+// }
|
|
|
+// } else {
|
|
|
+// log.warn("SOP_LOG_ID:{}, 无观看记录,不发送", qwSopLogs.getId());
|
|
|
+// qwSopLogsService.updateQwSopLogsByWatchLogType(logId, "无观看记录,不发送");
|
|
|
+// return false;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
public void send(QwSopCourseFinishTempSetting.Setting content, QwUser qwUser, QwSopLogs qwSopLogs, Map<String, FsCoursePlaySourceConfig> miniMap, BaseVo parentVo) {
|
|
|
BaseVo vo = new BaseVo();
|
|
|
vo.setId(Long.parseLong(qwSopLogs.getId()));
|