package com.qxueyou.scc.teach.res.service.impl.resitem; import java.util.Date; import com.qxueyou.scc.sys.utils.AudioUtil; import com.qxueyou.scc.sys.utils.VideoUtil; import com.qxueyou.scc.teach.res.model.ResItemVideo; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import com.qxueyou.scc.base.model.Result; import com.qxueyou.scc.base.service.ICacheService; import com.qxueyou.scc.base.service.impl.CommonAppService; import com.qxueyou.scc.base.util.TraceUtils; import com.qxueyou.scc.media.model.MediaVideo; import com.qxueyou.scc.media.model.VideoConverTask; import com.qxueyou.scc.teach.res.model.Res; import com.qxueyou.scc.teach.res.model.ResFile; import com.qxueyou.scc.teach.res.model.ResItemAudio; import com.qxueyou.scc.teach.res.service.IFileService; import com.qxueyou.scc.teach.res.service.IResAudioService; import com.qxueyou.scc.teach.res.service.IResItemService; @Service(value = "ResItemAudioService") public class ResItemAudioService extends CommonAppService implements IResItemService, IResAudioService { @Autowired IFileService fileService; @Autowired ICacheService cacheService; @Value("${scc.resRootPath}") String resRootPath; @Override public String add(String fileId, String name) { ResFile file = fileService.read(fileId); String mediaVideoId = addVideoConverTask(file); ResItemAudio audio = new ResItemAudio(); TraceUtils.setCreateTrace(audio); try { audio.setStatus(ResItemAudio.STATUS_LINEUP); audio.setPlayTime(AudioUtil.getMp3Duration(resRootPath+"/"+file.getPath()).intValue()); audio.setFileId(fileId); audio.setName(name); audio.setMediaVideoId(mediaVideoId); }catch (Exception e){ e.printStackTrace(); } // 将mediaVideoId放进缓存 cacheService.lstRightPush(ResItemVideoService.RES_VIDEO_CONVER_LST, mediaVideoId); save(audio); return audio.getAudioId(); } private String addVideoConverTask(ResFile file) { MediaVideo video = insertMediaVideo(file); insertMediaVideoConverTask(video); return video.getVideoId(); } private MediaVideo insertMediaVideo(ResFile file) { MediaVideo video = new MediaVideo(); TraceUtils.setCreateTrace(video); video.setDeleteFlag(false); try { video.setDeleteFlag(false); video.setPlayTime((int) VideoUtil.getMp4Duration(resRootPath +"/"+ file.getPath())); video.setName(file.getFileName()); video.setOrigUrl(file.getPath()); video.setStatus(MediaVideo.STATUS_LINEUP); video.setType(MediaVideo.MEDIA_AUDIO); }catch (Exception e){ e.printStackTrace(); } save(video); return video; } private Result insertMediaVideoConverTask(MediaVideo resVideo) { VideoConverTask task = new VideoConverTask(); task.setCreateTime(new Date()); task.setDeleteFlag(false); task.setVideoId(resVideo.getVideoId()); task.setVideoUrl(resVideo.getOrigUrl()); task.setType(MediaVideo.MEDIA_AUDIO); task.setPriority(5); save(task); return new Result(true); } @Override public Result update(String id, String name) { ResItemAudio audio = read(ResItemAudio.class, id); TraceUtils.setUpdateTrace(audio); audio.setName(name); save(audio); return new Result(true, "success"); } @Override public String readAccessPath(String resId, String attribute) { ResItemAudio resItemAudio = read(ResItemAudio.class, resId); if (resItemAudio != null && resItemAudio.getStatus() != ResItemAudio.STATUS_DRAFT) { ResFile resFile = read(ResFile.class,resItemAudio.getFileId()); return resFile.getPath(); //return null; } MediaVideo video = read(MediaVideo.class, resItemAudio.getMediaVideoId()); if (video == null) { return null; } return StringUtils.isNotEmpty(video.getAndroidHD()) ? video.getAndroidHD() : StringUtils.isNotEmpty(video.getAndroidSD()) ? video.getAndroidSD() : video.getAndroidLD(); } @Override public String getResItemType() { return Res.FILE_TYPE_AUDIO; } @Override public Result updateDuration(String audioId, int duration) { ResItemAudio audio = read(ResItemAudio.class, audioId); audio.setSeconds(duration); save(audio); return new Result(true); } }