Просмотр исходного кода

需求视频内容池 视频状态检查

wangyunpeng 7 часов назад
Родитель
Сommit
1ff7658949

+ 8 - 0
api-module/src/main/java/com/tzld/piaoquan/api/controller/contentplatform/ContentPlatformPlanController.java

@@ -172,4 +172,12 @@ public class ContentPlatformPlanController {
         demandVideoJob.syncContentPlatformDemandVideoJob(dateStr);
         return CommonResponse.success();
     }
+
+    @ApiOperation(value = "检查需求匹配视频状态", hidden = true)
+    @JwtIgnore
+    @GetMapping("/job/checkContentPlatformDemandVideoStatusJob")
+    public CommonResponse<Void> checkContentPlatformDemandVideoStatusJob() {
+        demandVideoJob.checkContentPlatformDemandVideoStatusJob(null);
+        return CommonResponse.success();
+    }
 }

+ 4 - 0
api-module/src/main/java/com/tzld/piaoquan/api/dao/mapper/contentplatform/ext/ContentPlatformDemandVideoMapperExt.java

@@ -26,4 +26,8 @@ public interface ContentPlatformDemandVideoMapperExt {
                          @Param("crowdSegment") String crowdSegment);
 
     String getMaxDt();
+
+    List<ContentPlatformDemandVideo> selectActiveVideos(@Param("dt") String dt);
+
+    int updateStatusByVideoId(@Param("videoId") Long videoId, @Param("dt") String dt, @Param("status") Integer status, @Param("updateTimestamp") Long updateTimestamp);
 }

+ 27 - 0
api-module/src/main/java/com/tzld/piaoquan/api/job/contentplatform/ContentPlatformDemandVideoJob.java

@@ -166,4 +166,31 @@ public class ContentPlatformDemandVideoJob {
             return ReturnT.FAIL;
         }
     }
+
+    @XxlJob("checkContentPlatformDemandVideoStatusJob")
+    public ReturnT<String> checkContentPlatformDemandVideoStatusJob(String param) {
+        String dt = demandVideoMapperExt.getMaxDt();
+        if (!StringUtils.hasText(dt)) {
+            log.info("checkContentPlatformDemandVideoStatusJob no data");
+            return ReturnT.SUCCESS;
+        }
+        log.info("checkContentPlatformDemandVideoStatusJob start, dt={}", dt);
+        List<ContentPlatformDemandVideo> activeVideos = demandVideoMapperExt.selectActiveVideos(dt);
+        if (CollectionUtils.isEmpty(activeVideos)) {
+            return ReturnT.SUCCESS;
+        }
+        Long now = System.currentTimeMillis();
+        for (List<ContentPlatformDemandVideo> partition : Lists.partition(activeVideos, 20)) {
+            List<Long> videoIds = partition.stream().map(ContentPlatformDemandVideo::getVideoId).collect(Collectors.toList());
+            Map<Long, VideoDetail> videoDetailMap = messageAttachmentService.getVideoDetail(new HashSet<>(videoIds));
+            for (ContentPlatformDemandVideo video : partition) {
+                VideoDetail videoDetail = videoDetailMap.get(video.getVideoId());
+                if (videoDetail == null || videoDetail.getAuditStatus() != 5) {
+                    demandVideoMapperExt.updateStatusByVideoId(video.getVideoId(), dt, 0, now);
+                }
+            }
+        }
+        log.info("checkContentPlatformDemandVideoStatusJob done, dt={}", dt);
+        return ReturnT.SUCCESS;
+    }
 }

+ 13 - 0
api-module/src/main/resources/mapper/contentplatform/ext/ContentPlatformDemandVideoMapperExt.xml

@@ -62,4 +62,17 @@
         SELECT MAX(dt) FROM content_platform_demand_video WHERE status = 1
     </select>
 
+    <select id="selectActiveVideos" resultType="com.tzld.piaoquan.api.model.po.contentplatform.ContentPlatformDemandVideo">
+        SELECT id, video_id, dt
+        FROM content_platform_demand_video
+        WHERE dt = #{dt} AND status = 1
+        GROUP BY video_id
+    </select>
+
+    <update id="updateStatusByVideoId">
+        UPDATE content_platform_demand_video
+        SET status = #{status}, update_timestamp = #{updateTimestamp}
+        WHERE video_id = #{videoId} AND dt = #{dt} AND status = 1
+    </update>
+
 </mapper>