package com.yeshi.buwan.service.imp;
|
|
import com.yeshi.buwan.dao.VideoResourceMapExtraInfoDao;
|
import com.yeshi.buwan.domain.HomeType;
|
import com.yeshi.buwan.domain.VideoInfo;
|
import com.yeshi.buwan.domain.VideoResourceMapExtraInfo;
|
import com.yeshi.buwan.service.inter.VideoResourceMapExtraInfoService;
|
import org.hibernate.HibernateException;
|
import org.hibernate.SQLQuery;
|
import org.hibernate.Session;
|
import org.springframework.orm.hibernate4.HibernateCallback;
|
import org.springframework.stereotype.Service;
|
import org.yeshi.utils.StringUtil;
|
|
import javax.annotation.Resource;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
@Service
|
public class VideoResourceMapExtraInfoServiceImpl implements VideoResourceMapExtraInfoService {
|
@Resource
|
private VideoResourceMapExtraInfoDao videoResourceMapExtraInfoDao;
|
|
@Override
|
public Map<String, VideoResourceMapExtraInfo> listMap(List<String> videoIdList, List<Long> resourceIds) {
|
|
List<String> idsList = new ArrayList<>();
|
if (videoIdList != null)
|
for (String videoId : videoIdList)
|
if (resourceIds != null)
|
for (Long resourceId : resourceIds) {
|
idsList.add(String.format("'%s'", new VideoResourceMapExtraInfo(videoId, resourceId).getId()));
|
}
|
if (idsList.size() == 0)
|
return new HashMap<>();
|
|
List<VideoResourceMapExtraInfo> list = (List<VideoResourceMapExtraInfo>) videoResourceMapExtraInfoDao.excute(new HibernateCallback<List<VideoResourceMapExtraInfo>>() {
|
@Override
|
public List<VideoResourceMapExtraInfo> doInHibernate(Session session) throws HibernateException {
|
String sql = "SELECT * FROM (SELECT i.* FROM `wk_video_resource_map_extra_info` i LEFT JOIN wk_video_resource r ON r.`id`=i.`resource_id` WHERE i.`id` IN (%s) ORDER BY r.`orderby` DESC ) a GROUP BY a.`video_id`";
|
SQLQuery query = session.createSQLQuery(String.format(sql, StringUtil.concat(idsList, ",")));
|
List list = query.addEntity(VideoResourceMapExtraInfo.class).list();
|
return list;
|
}
|
});
|
Map<String, VideoResourceMapExtraInfo> map = new HashMap<>();
|
for (VideoResourceMapExtraInfo info : list) {
|
map.put(info.getVideoId(), info);
|
}
|
return map;
|
}
|
|
@Override
|
public List<VideoInfo> batchExtraInfo(List<VideoInfo> videoInfoList, List<Long> resourceIds) {
|
List<String> videoIdList = new ArrayList<>();
|
for (VideoInfo videoInfo : videoInfoList) {
|
videoIdList.add(videoInfo.getId());
|
}
|
Map<String, VideoResourceMapExtraInfo> map = listMap(videoIdList, resourceIds);
|
for (VideoInfo videoInfo : videoInfoList) {
|
videoInfo.setVideoResourceMapExtraInfo(map.get(videoInfo.getId()));
|
if (videoInfo.getVideoResourceMapExtraInfo() != null)
|
videoInfo.setFree(videoInfo.getVideoResourceMapExtraInfo().getFree());
|
}
|
return videoInfoList;
|
}
|
}
|