package com.yeshi.buwan.controller.admin.api;
|
|
import java.io.PrintWriter;
|
import java.util.*;
|
|
import javax.annotation.Resource;
|
|
import com.google.common.base.Function;
|
import com.google.common.collect.Maps;
|
import com.google.gson.Gson;
|
import com.yeshi.buwan.domain.HomeVideo;
|
import com.yeshi.buwan.domain.VideoResource;
|
import com.yeshi.buwan.domain.solr.SolrAlbumVideo;
|
import com.yeshi.buwan.domain.solr.SolrShortVideo;
|
import com.yeshi.buwan.domain.video.InternetSearchVideo;
|
import com.yeshi.buwan.domain.video.VideoInfoExtra;
|
import com.yeshi.buwan.dto.search.SolrResultDTO;
|
import com.yeshi.buwan.dto.search.SolrShortVideoSearchFilter;
|
import com.yeshi.buwan.dto.search.SolrVideoSearchFilter;
|
import com.yeshi.buwan.exception.video.IqiyiVideoSolrException;
|
import com.yeshi.buwan.videos.iqiyi.IqiYiNewAPI;
|
import com.yeshi.buwan.videos.iqiyi.util.IqiyiUtil2;
|
import com.yeshi.buwan.service.imp.VideoResourceService;
|
import com.yeshi.buwan.service.inter.juhe.Iqiyi2Service;
|
import com.yeshi.buwan.service.inter.video.VideoInfoExtraService;
|
import com.yeshi.buwan.service.manager.search.SolrAlbumVideoDataManager;
|
import com.yeshi.buwan.service.manager.search.SolrInternetSearchVideoDataManager;
|
import com.yeshi.buwan.service.manager.search.SolrShortVideoDataManager;
|
import com.yeshi.buwan.util.Constant;
|
import com.yeshi.buwan.vo.video.VideoAdminInfoVO;
|
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMethod;
|
|
import com.google.gson.GsonBuilder;
|
import com.yeshi.buwan.domain.VideoInfo;
|
import com.yeshi.buwan.videos.iqiyi.util.IqiyiUtil;
|
import com.yeshi.buwan.service.imp.ClassService;
|
import com.yeshi.buwan.service.imp.VideoManager;
|
import com.yeshi.buwan.util.JsonUtil;
|
import com.yeshi.buwan.util.StringUtil;
|
import com.yeshi.buwan.web.tag.PageEntity;
|
|
import net.sf.json.JSONArray;
|
import net.sf.json.JSONObject;
|
|
@Controller
|
@RequestMapping("admin/new/api/video")
|
public class VideoAdminController {
|
|
@Resource
|
private VideoManager videoManager;
|
|
@Resource
|
private ClassService classService;
|
|
|
@Resource
|
private VideoResourceService videoResourceService;
|
|
@Resource
|
private IqiyiUtil iqiyiUtil;
|
|
|
@Resource
|
private ThreadPoolTaskExecutor taskExecutor;
|
|
@Resource
|
private SolrAlbumVideoDataManager solrAlbumDataManager;
|
|
@Resource
|
private SolrInternetSearchVideoDataManager solrInternetSearchVideoDataManager;
|
|
@Resource
|
private SolrShortVideoDataManager solrShortVideoDataManager;
|
|
|
@Resource
|
private VideoInfoExtraService videoInfoExtraService;
|
|
@Resource
|
private Iqiyi2Service iqiyi2Service;
|
|
@Resource
|
private IqiyiUtil2 iqiyiUtil2;
|
|
@RequestMapping(value = "/changevideoshow", method = RequestMethod.POST)
|
public void changeVideoShow(String id, int show, PrintWriter out) {
|
VideoInfo vi = videoManager.getVideoInfo(id);
|
if (vi != null) {
|
vi.setShow(show + "");
|
videoManager.changeVideoShow(vi);
|
}
|
JSONObject object = new JSONObject();
|
object.put("code", 0);
|
object.put("msg", "修改成功");
|
out.print(object);
|
}
|
|
@RequestMapping(value = "/deletevideo", method = RequestMethod.POST)
|
public void deleteVideo(String id, PrintWriter out) {
|
String[] ids = id.split(",");
|
for (String idStr : ids)
|
videoManager.deleteVideo(idStr);
|
|
JSONObject object = new JSONObject();
|
object.put("code", 0);
|
object.put("msg", "删除成功");
|
out.print(object);
|
}
|
|
@RequestMapping(value = "/videolist", method = RequestMethod.POST)
|
public void videoList(int videotype, int page, String key, String type, String resourceIds, int fromtype, int contenttype, String freeType, String area, PrintWriter out) {
|
|
if (StringUtil.isNullOrEmpty(type)) {
|
type = "name";
|
}
|
|
Integer freeTypeInt = null;
|
if (!StringUtil.isNullOrEmpty(freeType)) {
|
freeTypeInt = Integer.parseInt(freeType);
|
}
|
|
|
List<VideoInfo> list = null;
|
long count = 0;
|
List<VideoAdminInfoVO> voList = new ArrayList<>();
|
//正片搜索
|
if (contenttype == 1) {
|
SolrVideoSearchFilter filter = new SolrVideoSearchFilter();
|
|
switch (type) {
|
case "name":
|
filter.setKey(key);
|
break;
|
case "actor":
|
filter.setActor(key);
|
break;
|
case "director":
|
filter.setDirector(key);
|
break;
|
}
|
|
|
filter.setVideoType(videotype == 0 ? null : videotype);
|
filter.setContentType(1);
|
if (!StringUtil.isNullOrEmpty(resourceIds)) {
|
JSONArray array = JSONArray.fromObject(resourceIds);
|
String[] rids = new String[array.size()];
|
for (int i = 0; i < array.size(); i++) {
|
rids[i] = array.optString(i);
|
}
|
filter.setResourceIds(Arrays.asList(rids));
|
}
|
|
filter.setSortKey("updateTime");
|
|
filter.setFreeType(freeTypeInt);
|
|
filter.setArea(StringUtil.isNullOrEmpty(area) ? null : area.trim());
|
|
List<VideoResource> resourceList = videoResourceService.getResourceList();
|
Map<Long, String> resourceMap = new HashMap<>();
|
for (VideoResource vr : resourceList) {
|
resourceMap.put(Long.parseLong(vr.getId()), vr.getName());
|
}
|
if (fromtype == HomeVideo.FROM_TYPE_LOCAL) {
|
SolrResultDTO dto = solrAlbumDataManager.find(filter, page, Constant.pageCount);
|
if (dto.getVideoList() != null)
|
for (SolrAlbumVideo videoInfo : (List<SolrAlbumVideo>) dto.getVideoList())
|
voList.add(VideoAdminInfoVO.create(videoInfo, resourceMap));
|
count = dto.getTotalCount();
|
} else if (fromtype == HomeVideo.FROM_TYPE_INTERNET) {
|
SolrResultDTO dto = solrInternetSearchVideoDataManager.find(filter, page, Constant.pageCount);
|
if (dto.getVideoList() != null)
|
for (InternetSearchVideo videoInfo : (List<InternetSearchVideo>) dto.getVideoList())
|
voList.add(VideoAdminInfoVO.create(videoInfo, resourceMap));
|
count = dto.getTotalCount();
|
} else if (fromtype == HomeVideo.FROM_TYPE_SHORT) {
|
SolrShortVideoSearchFilter shortFilter = new SolrShortVideoSearchFilter();
|
shortFilter.setRootVideoType(filter.getVideoType());
|
if (!StringUtil.isNullOrEmpty(key)) {
|
String[] keys = key.split(" ");
|
if (!StringUtil.isNullOrEmpty(keys[0]))
|
shortFilter.setTag(keys[0].trim());
|
if (keys.length > 1) {
|
shortFilter.setKey(key.substring(key.indexOf(keys[0])).trim());
|
}
|
}
|
|
|
if (!StringUtil.isNullOrEmpty(filter.getArea())) {
|
shortFilter.setAreas(Arrays.asList(new String[]{filter.getArea()}));
|
//某些短视频分类为日韩
|
if (filter.getArea().equalsIgnoreCase("韩国")) {
|
shortFilter.getAreas().add("日韩");
|
}
|
}
|
shortFilter.setFuzzy(true);
|
SolrResultDTO dto = solrShortVideoDataManager.find(shortFilter, page, Constant.pageCount);
|
if (dto.getVideoList() != null)
|
for (SolrShortVideo videoInfo : (List<SolrShortVideo>) dto.getVideoList())
|
voList.add(VideoAdminInfoVO.create(videoInfo, resourceMap));
|
count = dto.getTotalCount();
|
}
|
} else {
|
list = classService.getTypeVideoListAdmin(videotype == 0 ? "" : videotype + "", page, key,
|
contenttype);
|
count = classService.getTypeVideoListAdminCount(videotype == 0 ? "" : videotype + "", key, contenttype);
|
if (list != null)
|
for (VideoInfo videoInfo : list)
|
voList.add(VideoAdminInfoVO.create(videoInfo));
|
}
|
|
List<String> ids = new ArrayList<>();
|
for (VideoAdminInfoVO a : voList) {
|
ids.add(a.getId());
|
}
|
|
List<VideoInfoExtra> extraList = videoInfoExtraService.listByIds(ids);
|
|
Map<String, VideoInfoExtra> maps = Maps.uniqueIndex(extraList.iterator(), new Function<VideoInfoExtra, String>() {
|
@Override
|
public String apply(VideoInfoExtra extra) {
|
return extra.getId();
|
}
|
});
|
//过滤图片
|
for (VideoAdminInfoVO a : voList) {
|
VideoInfoExtra extra = maps.get(a.getId());
|
if (extra != null) {
|
|
if (a.getHpicture() != null) {
|
if (!StringUtil.isNullOrEmpty(extra.gethPosterPicture()))
|
a.setHpicture(extra.gethPosterPicture());
|
}
|
|
if (a.getVpicture() != null) {
|
if (!StringUtil.isNullOrEmpty(extra.getvPosterPicture()))
|
a.setVpicture(extra.getvPosterPicture());
|
}
|
}
|
}
|
|
|
JSONObject object = new JSONObject();
|
object.put("code", 0);
|
JSONObject data = new JSONObject();
|
JSONArray array = new JSONArray();
|
|
PageEntity entity = new PageEntity();
|
entity.setPageIndex(page);
|
entity.setPageSize(20);
|
entity.setTotalCount((int) count);
|
|
data.put("pageEntity", new GsonBuilder().create().toJson(entity));
|
data.put("data", new Gson().toJson(voList));
|
object.put("data", data);
|
out.println(object);
|
}
|
|
@RequestMapping("updateVideos")
|
public void updateVideos(PrintWriter out) {
|
iqiyiUtil.updateAll("");
|
out.print(JsonUtil.loadTrueAdmin("执行成功"));
|
}
|
|
@RequestMapping("updateIqiyiAlbum")
|
public void updateIqiyiAlbum(String url, PrintWriter out) {
|
String aid = IqiYiNewAPI.getAidByUrl(url);
|
if (StringUtil.isNullOrEmpty(aid)) {
|
out.print(JsonUtil.loadFalseAdmin("未能获取到专辑"));
|
} else {
|
try {
|
iqiyi2Service.validAlbumSolrState(Long.parseLong(aid));
|
iqiyiUtil2.syncByAid(Long.parseLong(aid),false);
|
} catch (IqiyiVideoSolrException e) {
|
if (e.getCode() == IqiyiVideoSolrException.CODE_ALBUM_NOT_SAVE ||
|
e.getCode() == IqiyiVideoSolrException.CODE_ALBUM_NOT_EXIST || e.getCode() == IqiyiVideoSolrException.CODE_ALBUM_NOT_ADD_TO_VIDEO) {
|
iqiyiUtil2.syncByAid(Long.parseLong(aid),false);
|
} else {
|
out.print(JsonUtil.loadFalseAdmin(e.getMsg()));
|
return;
|
}
|
}
|
out.print(JsonUtil.loadTrueAdmin("专辑更新成功"));
|
}
|
}
|
|
@RequestMapping("addIqiyiShortVideo")
|
public void addIqiyiShortVideo(String urlJson, PrintWriter out) {
|
// JSONArray array = JSONArray.fromObject(urlJson);
|
// int count = 0;
|
// for (int i = 0; i < array.size(); i++) {
|
// String aid = IqiyiUtil.getAlbumIdFromPlayUrl(array.optString(i));
|
// if (!StringUtil.isNullOrEmpty(aid))
|
// count++;
|
//
|
// // 添加小视频
|
//
|
// }
|
//
|
// String aid = IqiyiUtil.getAlbumIdFromPlayUrl("");
|
// if (StringUtil.isNullOrEmpty(aid)) {
|
// out.print(JsonUtil.loadFalseAdmin("未能获取到专辑"));
|
// } else {
|
// iqiyiUtil.updateAlbum(aid);
|
// out.print(JsonUtil.loadTrueAdmin("专辑更新成功"));
|
// }
|
}
|
|
@RequestMapping("iqiyiUpdate")
|
public void iqiyiUpdate(PrintWriter out) {
|
taskExecutor.execute(new Runnable() {
|
@Override
|
public void run() {
|
iqiyiUtil.updateAll("");
|
}
|
});
|
JSONObject data = new JSONObject();
|
data.put("msg", "正在后台更新中");
|
out.print(data);
|
}
|
|
@RequestMapping("getVideoInfoExtra")
|
public void getVideoInfoExtra(String id, PrintWriter out) {
|
VideoInfoExtra extra = videoInfoExtraService.getById(id);
|
JSONObject object = new JSONObject();
|
if (extra != null) {
|
object.put("code", 0);
|
object.put("data", new Gson().toJson(extra));
|
} else {
|
object.put("code", 1);
|
object.put("msg", "无附加信息");
|
}
|
out.print(object);
|
}
|
|
@RequestMapping("updateVideoInfoExtra")
|
public void updateVideoInfoExtra(String id, String vPicture, String hPicture, PrintWriter out) {
|
VideoInfoExtra extra = new VideoInfoExtra();
|
extra.setId(id);
|
if (StringUtil.isNullOrEmpty(vPicture)) {
|
vPicture = "";
|
}
|
|
extra.setvPosterPicture(vPicture);
|
|
if (StringUtil.isNullOrEmpty(hPicture)) {
|
hPicture = "";
|
}
|
|
extra.sethPosterPicture(hPicture);
|
|
videoInfoExtraService.save(extra);
|
|
JSONObject object = new JSONObject();
|
object.put("code", 0);
|
out.print(object);
|
}
|
|
|
}
|