@@ -2,9 +2,12 @@ package com.iformall.schedule; | |||||
import com.iformall.domain.po.sm.UserMouldVideo; | import com.iformall.domain.po.sm.UserMouldVideo; | ||||
import com.iformall.domain.po.tt.TtCoupon; | import com.iformall.domain.po.tt.TtCoupon; | ||||
import com.iformall.enums.EnumVideoStatus; | |||||
import com.iformall.mapper.TtCouponMapper; | import com.iformall.mapper.TtCouponMapper; | ||||
import com.iformall.service.sm.UserMouldVideoService; | import com.iformall.service.sm.UserMouldVideoService; | ||||
import com.iformall.utils.DateUtils; | |||||
import com.iformall.video.VideoFactory; | import com.iformall.video.VideoFactory; | ||||
import com.iformall.video.aliyun.sdk.server.UploadCacheHelper; | |||||
import com.iformall.video.entity.VideUploadResult; | import com.iformall.video.entity.VideUploadResult; | ||||
import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
@@ -14,7 +17,9 @@ import org.springframework.context.annotation.Configuration; | |||||
import org.springframework.scheduling.annotation.EnableScheduling; | import org.springframework.scheduling.annotation.EnableScheduling; | ||||
import org.springframework.scheduling.annotation.Scheduled; | import org.springframework.scheduling.annotation.Scheduled; | ||||
import java.util.Date; | |||||
import java.util.List; | import java.util.List; | ||||
import java.util.concurrent.Future; | |||||
@Configuration | @Configuration | ||||
@EnableScheduling | @EnableScheduling | ||||
@@ -31,11 +36,32 @@ public class VideoSchedule { | |||||
@Autowired | @Autowired | ||||
String videoType; | String videoType; | ||||
/** | |||||
* 生成视频 | |||||
*/ | |||||
@Scheduled(cron = "0 20/30 * * * *?") // 每小时检查一次 | |||||
public void userVideoCreateSchedule() { | |||||
UserMouldVideo userVideo = new UserMouldVideo(); | |||||
userVideo.setStartDate(DateUtils.getHourDateBefore(2,new Date())); | |||||
userVideo.setVideoStatus(EnumVideoStatus.fail.getCode()); | |||||
List<UserMouldVideo> list = userMouldVideoService.findList(userVideo); | |||||
if (list != null && list.size() > 0) { | |||||
for (UserMouldVideo video : list) { | |||||
try { | |||||
Future future = userMouldVideoService.createVideo(video); | |||||
future.get(); | |||||
} catch (Exception e) { | |||||
logger.error("TtCouponVideoSchedule error.couponVideoSchedule:"+video.getId(),e); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
/** | /** | ||||
* 上传阿里云 | * 上传阿里云 | ||||
*/ | */ | ||||
@Scheduled(cron = "0 */30 * * * *?") // 每小时检查一次 | @Scheduled(cron = "0 */30 * * * *?") // 每小时检查一次 | ||||
public void couponVideoUploadSchedule() { | |||||
public void userVideoUploadSchedule() { | |||||
List<UserMouldVideo> videos = userMouldVideoService.getVideoIdNullList(); | List<UserMouldVideo> videos = userMouldVideoService.getVideoIdNullList(); | ||||
if (videos != null && videos.size() > 0) { | if (videos != null && videos.size() > 0) { | ||||
for (UserMouldVideo video : videos) { | for (UserMouldVideo video : videos) { | ||||
@@ -52,13 +78,15 @@ public class VideoSchedule { | |||||
* 获取时长和大小 | * 获取时长和大小 | ||||
*/ | */ | ||||
@Scheduled(cron = "0 15/30 * * * *?") // 每小时检查一次 | @Scheduled(cron = "0 15/30 * * * *?") // 每小时检查一次 | ||||
public void couponVideoDetailSchedule() { | |||||
public void userVideoDetailSchedule() { | |||||
List<UserMouldVideo> videos = userMouldVideoService.getVideoSizeNullList(); | List<UserMouldVideo> videos = userMouldVideoService.getVideoSizeNullList(); | ||||
if (videos != null && videos.size() > 0) { | if (videos != null && videos.size() > 0) { | ||||
for (UserMouldVideo video : videos) { | for (UserMouldVideo video : videos) { | ||||
try { | try { | ||||
VideUploadResult videoDetail = videoFactory.getExcutor(videoType).getVideoDetailWithCache(video.getVideoId()); | VideUploadResult videoDetail = videoFactory.getExcutor(videoType).getVideoDetailWithCache(video.getVideoId()); | ||||
if (videoDetail.isSuccess()) { | |||||
if (videoDetail.isSuccess() | |||||
&& StringUtils.isNotBlank(videoDetail.getDuration()) | |||||
&& !"0.0".equals(videoDetail.getDuration())) { | |||||
video.setVideoTime(videoDetail.getDuration()); | video.setVideoTime(videoDetail.getDuration()); | ||||
video.setVideoSize(videoDetail.getSize()); | video.setVideoSize(videoDetail.getSize()); | ||||
userMouldVideoService.updateById(video); | userMouldVideoService.updateById(video); | ||||
@@ -6,6 +6,7 @@ import com.iformall.domain.po.sm.MouldPatch; | |||||
import com.iformall.domain.po.sm.UserMouldVideo; | import com.iformall.domain.po.sm.UserMouldVideo; | ||||
import java.util.List; | import java.util.List; | ||||
import java.util.concurrent.Future; | |||||
public interface UserMouldVideoService { | public interface UserMouldVideoService { | ||||
@@ -20,6 +21,8 @@ public interface UserMouldVideoService { | |||||
PageInfo<UserMouldVideo> listAsPage(UserMouldVideo record, Integer pageIndex, Integer pageSize); | PageInfo<UserMouldVideo> listAsPage(UserMouldVideo record, Integer pageIndex, Integer pageSize); | ||||
PageInfo<UserMouldVideo> cListAsPage(UserMouldVideo record, Integer pageIndex, Integer pageSize); | PageInfo<UserMouldVideo> cListAsPage(UserMouldVideo record, Integer pageIndex, Integer pageSize); | ||||
List<UserMouldVideo> findList(UserMouldVideo record); | |||||
/** | /** | ||||
* 根据Id获得实体 | * 根据Id获得实体 | ||||
* | * | ||||
@@ -42,7 +45,7 @@ public interface UserMouldVideoService { | |||||
*/ | */ | ||||
void deleteById(Long id); | void deleteById(Long id); | ||||
void createVideo(UserMouldVideo mouldVideo); | |||||
Future createVideo(UserMouldVideo mouldVideo); | |||||
void uploadVideo(UserMouldVideo mouldVideo); | void uploadVideo(UserMouldVideo mouldVideo); | ||||
@@ -53,4 +56,5 @@ public interface UserMouldVideoService { | |||||
List<UserMouldVideo> getVideoSizeNullList(); | List<UserMouldVideo> getVideoSizeNullList(); | ||||
int updateById(UserMouldVideo video); | int updateById(UserMouldVideo video); | ||||
} | } |
@@ -17,11 +17,13 @@ import org.slf4j.Logger; | |||||
import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
import org.springframework.scheduling.annotation.Async; | import org.springframework.scheduling.annotation.Async; | ||||
import org.springframework.scheduling.annotation.AsyncResult; | |||||
import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
import java.net.URL; | import java.net.URL; | ||||
import java.util.Date; | import java.util.Date; | ||||
import java.util.List; | import java.util.List; | ||||
import java.util.concurrent.Future; | |||||
@Service | @Service | ||||
@@ -48,6 +50,11 @@ public class UserMouldVideoServiceImpl implements UserMouldVideoService { | |||||
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> userMouldVideoMapper.findCList(record)); | return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> userMouldVideoMapper.findCList(record)); | ||||
} | } | ||||
@Override | |||||
public List<UserMouldVideo> findList(UserMouldVideo record) { | |||||
return userMouldVideoMapper.findList(record); | |||||
} | |||||
@Override | @Override | ||||
public UserMouldVideo getById(Long id) { | public UserMouldVideo getById(Long id) { | ||||
return userMouldVideoMapper.selectById(id); | return userMouldVideoMapper.selectById(id); | ||||
@@ -78,7 +85,7 @@ public class UserMouldVideoServiceImpl implements UserMouldVideoService { | |||||
@Async | @Async | ||||
@Override | @Override | ||||
public void createVideo(UserMouldVideo mouldVideo) { | |||||
public Future createVideo(UserMouldVideo mouldVideo) { | |||||
UserMouldVideo videoUpd = new UserMouldVideo(); | UserMouldVideo videoUpd = new UserMouldVideo(); | ||||
videoUpd.setId(mouldVideo.getId()); | videoUpd.setId(mouldVideo.getId()); | ||||
@@ -86,14 +93,14 @@ public class UserMouldVideoServiceImpl implements UserMouldVideoService { | |||||
videoUpd.setVideoStatus(EnumVideoStatus.fail.getCode()); | videoUpd.setVideoStatus(EnumVideoStatus.fail.getCode()); | ||||
videoUpd.setVideoMsg("未找到人物模板数据"); | videoUpd.setVideoMsg("未找到人物模板数据"); | ||||
this.saveOrUpdate(videoUpd); | this.saveOrUpdate(videoUpd); | ||||
return; | |||||
return new AsyncResult<>(0); | |||||
} | } | ||||
if(StringUtils.isBlank(mouldVideo.getPaperwork())){ | if(StringUtils.isBlank(mouldVideo.getPaperwork())){ | ||||
videoUpd.setVideoStatus(EnumVideoStatus.fail.getCode()); | videoUpd.setVideoStatus(EnumVideoStatus.fail.getCode()); | ||||
videoUpd.setVideoMsg("未填写视频文案"); | videoUpd.setVideoMsg("未填写视频文案"); | ||||
this.saveOrUpdate(videoUpd); | this.saveOrUpdate(videoUpd); | ||||
return; | |||||
return new AsyncResult<>(0); | |||||
} | } | ||||
try{ | try{ | ||||
@@ -108,19 +115,19 @@ public class UserMouldVideoServiceImpl implements UserMouldVideoService { | |||||
videoUpd.setTitle(mouldVideo.getTitle()); | videoUpd.setTitle(mouldVideo.getTitle()); | ||||
this.uploadVideo(videoUpd); | this.uploadVideo(videoUpd); | ||||
return; | |||||
return new AsyncResult<>(1); | |||||
} | } | ||||
videoUpd.setVideoStatus(EnumVideoStatus.fail.getCode()); | videoUpd.setVideoStatus(EnumVideoStatus.fail.getCode()); | ||||
videoUpd.setVideoMsg(video.getMsg()); | videoUpd.setVideoMsg(video.getMsg()); | ||||
this.saveOrUpdate(videoUpd); | this.saveOrUpdate(videoUpd); | ||||
return; | |||||
return new AsyncResult<>(0); | |||||
}catch(Exception e){ | }catch(Exception e){ | ||||
e.printStackTrace(); | e.printStackTrace(); | ||||
videoUpd.setVideoStatus(EnumVideoStatus.fail.getCode()); | videoUpd.setVideoStatus(EnumVideoStatus.fail.getCode()); | ||||
videoUpd.setVideoMsg(e.getMessage()); | videoUpd.setVideoMsg(e.getMessage()); | ||||
this.saveOrUpdate(videoUpd); | this.saveOrUpdate(videoUpd); | ||||
return; | |||||
return new AsyncResult<>(0); | |||||
} | } | ||||
} | } | ||||
@@ -387,6 +387,20 @@ public class DateUtils { | |||||
Date date = new Date(myTime * 1000); | Date date = new Date(myTime * 1000); | ||||
return formatter.format(date); | return formatter.format(date); | ||||
} | } | ||||
/** | |||||
* 获得当前时间前几小时的时间 | |||||
* | |||||
* @param hour | |||||
* 前几小时 | |||||
* @return | |||||
*/ | |||||
public static Date getHourDateBefore(int hour, Date myDate) { | |||||
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | |||||
long myTime = (myDate.getTime() / 1000) - 60 * 60 * hour; | |||||
Date date = new Date(myTime * 1000); | |||||
return date; | |||||
} | |||||
/** | /** | ||||
* 获得当前时间前几秒的时间 | * 获得当前时间前几秒的时间 | ||||
@@ -145,7 +145,9 @@ public class AliyunVideoExcutor implements VideoExcutor { | |||||
}else{ | }else{ | ||||
VideUploadResult result = getVideoDetailFromApi(videoId); | VideUploadResult result = getVideoDetailFromApi(videoId); | ||||
if(this.videoStatus.equals(result.getStatus())){ | if(this.videoStatus.equals(result.getStatus())){ | ||||
UploadCacheHelper.cacheVideoDetail(redisTemplate, videoId,result); | |||||
if(StringUtils.isNotBlank(result.getDuration()) && !"0.0".equals(result.getDuration())){ | |||||
UploadCacheHelper.cacheVideoDetail(redisTemplate, videoId,result); | |||||
} | |||||
}else{ | }else{ | ||||
//还不能播放 | //还不能播放 | ||||
result.setSuccess(false); | result.setSuccess(false); | ||||