fix
Helius
2021-12-22 ca17d6ee8df1e7c28645e70f43deb6b60a8890f8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
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 -  time * 60;
        return  minutes + ":" + second;
    }
}