后台服务
Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.

167 righe
6.6 KiB

  1. package com.iformall.schedule;
  2. import com.iformall.domain.po.sm.UserMouldVideo;
  3. import com.iformall.domain.po.sm.VideoTrans;
  4. import com.iformall.enums.EnumVideoStatus;
  5. import com.iformall.enums.EnumaVideoTransStatus;
  6. import com.iformall.mapper.VideoTransMapper;
  7. import com.iformall.service.sm.UserMouldVideoService;
  8. import com.iformall.utils.DateUtils;
  9. import com.iformall.video.VideoFactory;
  10. import com.iformall.video.entity.VideTransResult;
  11. import com.iformall.video.entity.VideUploadResult;
  12. import org.apache.commons.lang3.StringUtils;
  13. import org.slf4j.Logger;
  14. import org.slf4j.LoggerFactory;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.context.annotation.Configuration;
  17. import org.springframework.scheduling.annotation.EnableScheduling;
  18. import org.springframework.scheduling.annotation.Scheduled;
  19. import java.util.Date;
  20. import java.util.List;
  21. import java.util.concurrent.Future;
  22. @Configuration
  23. @EnableScheduling
  24. public class VideoSchedule {
  25. private final Logger logger = LoggerFactory.getLogger(this.getClass());
  26. @Autowired
  27. private UserMouldVideoService userMouldVideoService;
  28. @Autowired
  29. private VideoTransMapper videoTransMapper;
  30. @Autowired
  31. VideoFactory videoFactory;
  32. @Autowired
  33. String videoType;
  34. /**
  35. * 生成视频
  36. */
  37. @Scheduled(cron = "0 20/30 * * * *?") // 每半小时检查一次
  38. public void userVideoCreateSchedule() {
  39. UserMouldVideo userVideo = new UserMouldVideo();
  40. userVideo.setVideoStartDate(DateUtils.getHourDateBefore(2,new Date()));
  41. userVideo.setVideoStatus(EnumVideoStatus.fail.getCode());
  42. List<UserMouldVideo> list = userMouldVideoService.findList(userVideo);
  43. if (list != null && list.size() > 0) {
  44. for (UserMouldVideo video : list) {
  45. try {
  46. Future future = userMouldVideoService.createVideo(video);
  47. future.get();
  48. } catch (Exception e) {
  49. logger.error("TtCouponVideoSchedule error.couponVideoSchedule:"+video.getId(),e);
  50. }
  51. }
  52. }
  53. }
  54. /**
  55. * 上传阿里云
  56. */
  57. @Scheduled(cron = "0 */30 * * * *?") // 每半小时检查一次
  58. public void userVideoUploadSchedule() {
  59. List<UserMouldVideo> videos = userMouldVideoService.getNotUploadList();
  60. if (videos != null && videos.size() > 0) {
  61. for (UserMouldVideo video : videos) {
  62. try {
  63. userMouldVideoService.uploadVideo(video);
  64. } catch (Exception e) {
  65. logger.error("TtCouponVideoSchedule error.couponVideoSchedule:"+video.getId(),e);
  66. }
  67. }
  68. }
  69. }
  70. /**
  71. * 获取时长和大小
  72. */
  73. @Scheduled(cron = "0 1/5 * * * *?") // 每五分钟检查一次
  74. public void userVideoDetailSchedule() {
  75. List<UserMouldVideo> videos = userMouldVideoService.getNotHaveUrl();
  76. if (videos != null && videos.size() > 0) {
  77. for (UserMouldVideo video : videos) {
  78. try {
  79. VideUploadResult videoDetail = videoFactory.getExcutor(videoType).getVideoDetailWithCache(video.getVideoId(),false);
  80. if (videoDetail.isSuccess()
  81. && StringUtils.isNotBlank(videoDetail.getDuration())
  82. && !"0.0".equals(videoDetail.getDuration())) {
  83. video.setCoverImg(videoDetail.getCoverURL());
  84. video.setVideoPlayUrl(videoDetail.getVideoUrl());
  85. video.setVideoTime(videoDetail.getDuration());
  86. video.setVideoSize(videoDetail.getSize());
  87. video.setVideoStatus(EnumVideoStatus.upload_success.getCode());
  88. userMouldVideoService.updateById(video);
  89. }
  90. } catch (Exception e) {
  91. logger.error("TtCouponVideoSchedule error.couponVideoSchedule:"+video.getId(),e);
  92. }
  93. }
  94. }
  95. }
  96. /**
  97. * 转码
  98. */
  99. @Scheduled(cron = "0 10/30 * * * *?") // 每半小时检查一次
  100. public void videoTransSchedule() {
  101. VideoTrans videoTransQ = new VideoTrans();
  102. videoTransQ.setStatus(EnumaVideoTransStatus.draft.getCode());
  103. List<VideoTrans> videos = videoTransMapper.findList(videoTransQ);
  104. if (videos != null && videos.size() > 0) {
  105. for (VideoTrans video : videos) {
  106. try {
  107. VideTransResult videTransResult = videoFactory.getExcutor(videoType).transVideo(video.getVideoId(), video.getTransTemplateId());
  108. if(videTransResult.isSuccess()){
  109. VideoTrans upd = new VideoTrans();
  110. upd.setId(video.getId());
  111. upd.setTaskId(videTransResult.getTaskId());
  112. upd.setStatus(EnumaVideoTransStatus.ing.getCode());
  113. upd.setMsg("ing");
  114. upd.setUpdateDate(new Date());
  115. videoTransMapper.updateById(upd);
  116. }
  117. } catch (Exception e) {
  118. logger.error("TtCouponVideoSchedule error.couponVideoSchedule:"+video.getId(),e);
  119. }
  120. }
  121. }
  122. }
  123. /**
  124. * 转码结果
  125. */
  126. @Scheduled(cron = "0 20/30 * * * *?") // 每半小时检查一次
  127. public void videoTransResultSchedule() {
  128. VideoTrans videoTransQ = new VideoTrans();
  129. videoTransQ.setStatus(EnumaVideoTransStatus.ing.getCode());
  130. List<VideoTrans> videos = videoTransMapper.findList(videoTransQ);
  131. if (videos != null && videos.size() > 0) {
  132. for (VideoTrans video : videos) {
  133. try {
  134. VideTransResult transVideoResult = videoFactory.getExcutor(videoType).getTransVideoResult(video.getVideoId(), video.getTaskId());
  135. VideoTrans upd = new VideoTrans();
  136. upd.setId(video.getId());
  137. if (transVideoResult.isSuccess()){
  138. upd.setStatus(EnumaVideoTransStatus.success.getCode());
  139. upd.setMsg("success");
  140. }else{
  141. upd.setStatus(EnumaVideoTransStatus.fail.getCode());
  142. upd.setMsg(transVideoResult.getMsg());
  143. }
  144. upd.setUpdateDate(new Date());
  145. videoTransMapper.updateById(upd);
  146. } catch (Exception e) {
  147. logger.error("TtCouponVideoSchedule error.couponVideoSchedule:"+video.getId(),e);
  148. }
  149. }
  150. }
  151. }
  152. }