admin
2021-04-02 d551bef5e2b09bd98681cf97807988c9863e66fc
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
package com.yeshi.buwan.service.imp.juhe;
 
import com.yeshi.buwan.dao.juhe.mogotv.MogoTVClipInfoDao;
import com.yeshi.buwan.dao.juhe.mogotv.MogoTVSearchVideoMapDao;
import com.yeshi.buwan.dao.juhe.mogotv.MogoTVVideoDao;
import com.yeshi.buwan.domain.VideoDetailInfo;
import com.yeshi.buwan.domain.video.InternetSearchVideo;
import com.yeshi.buwan.mogotv.MogoTVUtil;
import com.yeshi.buwan.mogotv.entity.MogoTVClipInfo;
import com.yeshi.buwan.mogotv.entity.MogoTVSearchVideoMap;
import com.yeshi.buwan.mogotv.entity.MogoTVVideo;
import com.yeshi.buwan.service.inter.juhe.InternetSearchVideoService;
import com.yeshi.buwan.service.inter.juhe.MogoTVService;
import com.yeshi.buwan.util.factory.InternetSearchVideoFactory;
import org.springframework.data.domain.Sort;
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.Date;
import java.util.List;
 
@Service
public class MogoTVServiceImpl implements MogoTVService {
 
    @Resource
    private MogoTVSearchVideoMapDao mogoTVSearchVideoMapDao;
 
 
    @Resource
    private MogoTVClipInfoDao mogoTVClipInfoDao;
    @Resource
    private MogoTVVideoDao mogoTVVideoDao;
    @Resource
    private InternetSearchVideoService internetSearchVideoService;
 
    @Override
    public void save(MogoTVClipInfo detail) throws Exception {
        if (detail.getUpdateTime() == null)
            detail.setUpdateTime(new Date());
        mogoTVClipInfoDao.save(detail);
        if (detail.getVideoList() != null)
            for (MogoTVVideo video : detail.getVideoList()) {
                if (video.getUpdateTime() == null) {
                    video.setUpdateTime(new Date());
                }
                mogoTVVideoDao.save(video);
            }
    }
 
    @Override
    public MogoTVClipInfo getClipDetail(String clipId) {
        MogoTVClipInfo detail = mogoTVClipInfoDao.get(clipId);
        Query query = new Query();
        if (detail != null) {
            query.addCriteria(Criteria.where("clipId").is(clipId));
        }
        query.with(new Sort(new Sort.Order(Sort.Direction.ASC, "t1")));
        List<MogoTVVideo> videoList = mogoTVVideoDao.findList(query);
        detail.setVideoList(videoList);
        return detail;
    }
 
    @Override
    public MogoTVClipInfo getSimpleClipDetail(String clipId) {
        MogoTVClipInfo detail = mogoTVClipInfoDao.get(clipId);
        return detail;
    }
 
    @Override
    public List<MogoTVVideo> getVideoList(String clipId, int page, int pageSize, boolean asc) {
        Query query = new Query();
        query.addCriteria(Criteria.where("clip_id").is(clipId));
        query.with(new Sort(new Sort.Order(asc ? Sort.Direction.ASC : Sort.Direction.DESC, "t1")));
        query.skip((page - 1) * pageSize);
        query.limit(pageSize);
        List<MogoTVVideo> videoList = mogoTVVideoDao.findList(query);
        return videoList;
    }
 
    @Override
    public MogoTVVideo getVideoDetail(String id) {
        Query query = new Query();
        query.addCriteria(Criteria.where("_id").is(id));
        return mogoTVVideoDao.findOne(query);
    }
 
 
    @Override
    public long count(String category) {
        Query query = new Query();
        if (category != null)
            query.addCriteria(Criteria.where("category").is(category));
        return mogoTVClipInfoDao.count(query);
    }
 
    @Override
    public List<MogoTVClipInfo> list(String category, int page, int pageSize) {
        Query query = new Query();
        if (category != null)
            query.addCriteria(Criteria.where("fstlvlType").is(category));
        query.limit(pageSize);
        query.skip((page - 1) * pageSize);
        return mogoTVClipInfoDao.findList(query);
    }
 
    @Override
    public List<VideoDetailInfo> getVideoDetailList(String videoid, int page, int pageSize) {
        MogoTVSearchVideoMap map = mogoTVSearchVideoMapDao.selectByVideoId(videoid);
        if (map == null)
            return null;
        MogoTVClipInfo clipInfo = mogoTVClipInfoDao.get(map.getClipId());
 
        return MogoTVUtil.convertToDetail(getVideoList(map.getClipId(), page, pageSize, "综艺".equalsIgnoreCase(clipInfo.getFstlvlType()) ? false : true), clipInfo);
    }
 
    @Override
    public MogoTVSearchVideoMap selectMapByVideoId(String videoId) {
        MogoTVSearchVideoMap map = mogoTVSearchVideoMapDao.selectByVideoId(videoId);
        return map;
    }
 
    @Override
    public void addToInternetSearch(MogoTVClipInfo clipDetail) throws Exception {
        save(clipDetail);
        InternetSearchVideo video = InternetSearchVideoFactory.create(clipDetail);
        if (internetSearchVideoService.save(video) == null) {
            return;
        }
        MogoTVSearchVideoMap map = new MogoTVSearchVideoMap();
        map.setClipId(clipDetail.getClipId());
        map.setVideoId(video.getId());
        map.setCreateTime(new Date());
        mogoTVSearchVideoMapDao.save(map);
    }
}