admin
2021-08-27 8fee151ffae0c3818694b7318583814bf92663e2
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
package com.yeshi.buwan.service.imp.juhe;
 
import com.yeshi.buwan.dao.juhe.bilibili.BilibiliEpInfoDao;
import com.yeshi.buwan.dao.juhe.bilibili.BilibiliMediaInfoDao;
import com.yeshi.buwan.dao.juhe.bilibili.BilibiliSearchVideoMapDao;
import com.yeshi.buwan.dao.juhe.bilibili.BilibiliVideoDao;
import com.yeshi.buwan.domain.VideoDetailInfo;
import com.yeshi.buwan.domain.video.InternetSearchVideo;
import com.yeshi.buwan.service.inter.juhe.BilibiliVideoService;
import com.yeshi.buwan.service.inter.juhe.InternetSearchVideoService;
import com.yeshi.buwan.util.factory.InternetSearchVideoFactory;
import com.yeshi.buwan.videos.bilibili.BilibiliUtil;
import com.yeshi.buwan.videos.bilibili.entity.BilibiliEpInfo;
import com.yeshi.buwan.videos.bilibili.entity.BilibiliMediaInfo;
import com.yeshi.buwan.videos.bilibili.entity.BilibiliSearchVideoMap;
import com.yeshi.buwan.videos.bilibili.entity.BilibiliVideo;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
 
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
 
@Service
public class BilibiliVideoServiceImpl implements BilibiliVideoService {
    @Resource
    private BilibiliMediaInfoDao bilibiliMediaInfoDao;
    @Resource
    private BilibiliEpInfoDao bilibiliEpInfoDao;
    @Resource
    private BilibiliVideoDao bilibiliVideoDao;
    @Resource
    private BilibiliSearchVideoMapDao bilibiliSearchVideoMapDao;
    @Resource
    private InternetSearchVideoService internetSearchVideoService;
 
 
    @Override
    public void save(BilibiliMediaInfo mediaInfo) throws Exception {
 
        if (mediaInfo.getCreateTime() == null)
            mediaInfo.setCreateTime(new Date());
        bilibiliMediaInfoDao.save(mediaInfo);
 
        if (mediaInfo.getEpList() != null) {
            int orderBy = 0;
            for (BilibiliEpInfo ep : mediaInfo.getEpList()) {
                ep.setMediaId(mediaInfo.getMedia_id());
                ep.setOrderBy(++orderBy);
                if (ep.getCreateTime() == null)
                    ep.setCreateTime(new Date());
                bilibiliEpInfoDao.save(ep);
            }
        }
 
    }
 
    @Override
    public void save(BilibiliVideo bilibiliVideo) throws Exception {
        if (bilibiliVideo.getCreateTime() == null)
            bilibiliVideo.setCreateTime(new Date());
        bilibiliVideoDao.save(bilibiliVideo);
    }
 
    @Override
    public BilibiliMediaInfo getMediaDetail(Long mediaId) {
        BilibiliMediaInfo mediaInfo = bilibiliMediaInfoDao.get(mediaId);
        if (mediaInfo != null) {
            List<BilibiliEpInfo> epInfoList = bilibiliEpInfoDao.listByMediaId(mediaId, 0, 100);
            mediaInfo.setEpList(epInfoList);
        }
        return mediaInfo;
    }
 
    @Override
    public BilibiliMediaInfo getSimpleMediaDetail(Long mediaId) {
        Query query = new Query();
        query.addCriteria(Criteria.where("_id").is(mediaId));
        return bilibiliMediaInfoDao.findOne(query);
    }
 
    @Override
    public List<BilibiliEpInfo> getEPVideoList(Long mediaId, int page, int pageSize) {
        List<BilibiliEpInfo> epInfoList = bilibiliEpInfoDao.listByMediaId(mediaId, (page - 1) * pageSize, pageSize);
        return epInfoList;
    }
 
    @Override
    public BilibiliEpInfo selectEPInfoByPrimaryKey(Long id) {
        return bilibiliEpInfoDao.get(id);
    }
 
    @Override
    public BilibiliVideo selectVideoByPrimaryKey(Long id) {
        return bilibiliVideoDao.get(id);
    }
 
 
    @Override
    public long count(String category) {
        return 0;
    }
 
    @Override
    public List<BilibiliMediaInfo> list(String category, int page, int pageSize) {
        return null;
    }
 
    @Override
    public List<VideoDetailInfo> getVideoDetailList(String videoid, int page, int pageSize) {
        BilibiliSearchVideoMap map = selectMapByVideoId(videoid);
        if (map == null)
            return null;
 
        if (map.getMediaId() != null) {
            BilibiliMediaInfo bilibiliMediaInfo = bilibiliMediaInfoDao.get(map.getMediaId());
            List<BilibiliEpInfo> bilibiliEpInfos = bilibiliEpInfoDao.listByMediaId(map.getMediaId(), (page - 1) * pageSize, pageSize);
            List<VideoDetailInfo> list = BilibiliUtil.convertToDetail(bilibiliEpInfos, bilibiliMediaInfo);
            return list;
        } else if (map.getVid() != null) {
            BilibiliVideo video = bilibiliVideoDao.get(map.getVid());
            VideoDetailInfo detailInfo = BilibiliUtil.convertToDetail(video);
            if (detailInfo == null)
                return null;
            List<VideoDetailInfo> detailInfoList = new ArrayList<>();
            detailInfoList.add(detailInfo);
            return detailInfoList;
        }
 
 
        return null;
    }
 
    @Override
    public BilibiliSearchVideoMap selectMapByVideoId(String videoId) {
        return bilibiliSearchVideoMapDao.selectByVideoId(videoId);
    }
 
    @Override
    public void addToInternetSearch(BilibiliMediaInfo mediaInfo) throws Exception {
        if (mediaInfo == null)
            return;
        save(mediaInfo);
        InternetSearchVideo video = InternetSearchVideoFactory.create(mediaInfo);
        if (internetSearchVideoService.save(video) == null) {
            return;
        }
        BilibiliSearchVideoMap map = new BilibiliSearchVideoMap();
        map.setMediaId(mediaInfo.getMedia_id());
        map.setVideoId(video.getId());
        map.setCreateTime(new Date());
        bilibiliSearchVideoMapDao.save(map);
    }
 
    @Override
    public void addToInternetSearch(BilibiliVideo video, Integer videoType) throws Exception {
        save(video);
        InternetSearchVideo internetSearchVideo = InternetSearchVideoFactory.create(video, videoType);
        if (internetSearchVideoService.save(internetSearchVideo) == null) {
            return;
        }
        BilibiliSearchVideoMap map = new BilibiliSearchVideoMap();
        map.setVid(video.getAid() + "");
        map.setVideoId(internetSearchVideo.getId());
        map.setCreateTime(new Date());
        bilibiliSearchVideoMapDao.save(map);
    }
}