package cc.mrbird.febs.video.service.impl;
|
|
import cc.mrbird.febs.common.entity.QueryRequest;
|
import cc.mrbird.febs.common.utils.AppContants;
|
import cc.mrbird.febs.common.utils.FileUtil;
|
import cc.mrbird.febs.video.entity.VideoMasterSourceEntity;
|
import cc.mrbird.febs.video.mapper.VideoMasterItemsMapper;
|
import cc.mrbird.febs.video.mapper.VideoMasterSourceMapper;
|
import cc.mrbird.febs.video.service.IVideoMasterSourceService;
|
import cn.hutool.core.lang.Assert;
|
import cn.hutool.core.util.StrUtil;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import lombok.RequiredArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.io.File;
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* @author wzy
|
* @date 2021-12-14
|
**/
|
@Slf4j
|
@Service
|
@RequiredArgsConstructor
|
public class VideoMasterSourceServiceImpl extends ServiceImpl<VideoMasterSourceMapper, VideoMasterSourceEntity> implements IVideoMasterSourceService {
|
|
private final VideoMasterItemsMapper videoMasterItemsMapper;
|
|
@Value("${system.images.path}")
|
private String baseSavePath;
|
|
@Value("${system.images.url}")
|
private String baseUrl;
|
|
@Override
|
public IPage<VideoMasterSourceEntity> findInPage(VideoMasterSourceEntity source, QueryRequest queryRequest) {
|
Page<VideoMasterSourceEntity> page = new Page<>(queryRequest.getPageNum(), queryRequest.getPageSize());
|
|
return this.baseMapper.selectInPage(source, page);
|
}
|
|
@Override
|
public void addSource(VideoMasterSourceEntity source) {
|
Integer second = getVideoTimeLength(source.getUrl());
|
source.setTimeSecond(second);
|
source.setTimeLength(timeFormat(second));
|
this.baseMapper.insert(source);
|
}
|
|
@Transactional
|
@Override
|
public void modifySourceById(VideoMasterSourceEntity source) {
|
Integer second = getVideoTimeLength(source.getUrl());
|
source.setUpdatedTime(new Date());
|
source.setTimeSecond(second);
|
source.setTimeLength(timeFormat(second));
|
this.baseMapper.updateById(source);
|
|
// 同步修改 即将所有关联到这个资源的视频中的url更新为最新url
|
if (AppContants.FLAG_INT_Y.equals(source.getIsSyncUpdate())) {
|
this.videoMasterItemsMapper.updateVideoUrlBySourceId(source.getUrl(), source.getId());
|
}
|
}
|
|
@Override
|
public void delSource(String ids) {
|
List<String> idList = StrUtil.split(ids, ',');
|
this.baseMapper.updateDelFlag(AppContants.FLAG_INT_Y, idList);
|
}
|
|
private Integer getVideoTimeLength(String url) {
|
Assert.notBlank(url);
|
|
String filePath = baseSavePath + url.replaceAll(baseUrl, "");
|
File file = new File(filePath);
|
return FileUtil.getVideoTimeSecond(file);
|
}
|
|
private String timeFormat(Integer time) {
|
int minutes = time / 60;
|
int second = time - minutes * 60;
|
return minutes + ":" + second;
|
}
|
}
|