admin
2022-01-28 cd7767932dddeaf6d9c73a83d4a9b38f0341b77f
src/main/java/com/yeshi/buwan/controller/admin/api/VideoAdminController.java
@@ -1,17 +1,31 @@
package com.yeshi.buwan.controller.admin.api;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
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.SolrVideo;
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.iqiyi.IqiYiNewAPI;
import com.yeshi.buwan.service.manager.SolrAlbumDataManager;
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;
@@ -20,15 +34,12 @@
import org.springframework.web.bind.annotation.RequestMethod;
import com.google.gson.GsonBuilder;
import com.yeshi.buwan.acFun.AcFunUtil;
import com.yeshi.buwan.domain.VideoInfo;
import com.yeshi.buwan.iqiyi.util.IqiyiUtil;
import com.yeshi.buwan.videos.iqiyi.util.IqiyiUtil;
import com.yeshi.buwan.service.imp.ClassService;
import com.yeshi.buwan.service.imp.ResourceVideoService;
import com.yeshi.buwan.service.imp.VideoManager;
import com.yeshi.buwan.util.JsonUtil;
import com.yeshi.buwan.util.StringUtil;
import com.yeshi.buwan.util.TimeUtil;
import com.yeshi.buwan.web.tag.PageEntity;
import net.sf.json.JSONArray;
@@ -44,20 +55,35 @@
    @Resource
    private ClassService classService;
    @Resource
    private ResourceVideoService resourceVideoService;
    private VideoResourceService videoResourceService;
    @Resource
    private IqiyiUtil iqiyiUtil;
    @Resource
    private AcFunUtil acFunUtil;
    @Resource
    private ThreadPoolTaskExecutor taskExecutor;
    @Resource
    private SolrAlbumDataManager solrAlbumDataManager;
    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) {
@@ -85,7 +111,17 @@
    }
    @RequestMapping(value = "/videolist", method = RequestMethod.POST)
    public void videoList(int videotype, int page, String key, String resourceIds, int contenttype, PrintWriter out) {
    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;
@@ -93,7 +129,20 @@
        //正片搜索
        if (contenttype == 1) {
            SolrVideoSearchFilter filter = new SolrVideoSearchFilter();
            filter.setKey(key);
            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)) {
@@ -102,16 +151,59 @@
                for (int i = 0; i < array.size(); i++) {
                    rids[i] = array.optString(i);
                }
                filter.setResourceIds(rids);
                filter.setResourceIds(Arrays.asList(rids));
            }
            filter.setSortKey("updateTime");
            SolrResultDTO dto = solrAlbumDataManager.find(filter, page, Constant.pageCount);
            if (dto.getVideoList() != null)
                for (SolrVideo videoInfo : dto.getVideoList())
                    voList.add(VideoAdminInfoVO.create(videoInfo));
            count = dto.getTotalCount();
            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);
@@ -120,6 +212,38 @@
                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();
@@ -148,7 +272,18 @@
        if (StringUtil.isNullOrEmpty(aid)) {
            out.print(JsonUtil.loadFalseAdmin("未能获取到专辑"));
        } else {
            iqiyiUtil.updateAlbum(aid);
            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("专辑更新成功"));
        }
    }
@@ -188,5 +323,42 @@
        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);
    }
}