admin
2022-04-16 04f09e52ffd4681bdfd85e51acd3da0d1280c3d3
src/main/java/com/yeshi/buwan/controller/parser/SearchParser.java
@@ -4,8 +4,10 @@
import com.yeshi.buwan.domain.solr.SolrAlbumVideo;
import com.yeshi.buwan.domain.solr.SolrShortVideo;
import com.yeshi.buwan.domain.special.SearchSpecial;
import com.yeshi.buwan.domain.special.SearchSpecialPositionMap;
import com.yeshi.buwan.domain.video.InternetSearchVideo;
import com.yeshi.buwan.dto.search.SolrResultDTO;
import com.yeshi.buwan.service.inter.search.SearchSpecialPositionMapService;
import com.yeshi.buwan.service.inter.search.SearchSpecialService;
import com.yeshi.buwan.service.manager.search.SolrAlbumVideoDataManager;
import com.yeshi.buwan.service.manager.search.SolrInternetSearchVideoDataManager;
@@ -21,12 +23,17 @@
import javax.servlet.http.HttpServletRequest;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
@Controller
public class SearchParser {
    @Resource
    private SearchSpecialService searchSpecialService;
    @Resource
    private SearchSpecialPositionMapService searchSpecialPositionMapService;
    @Resource
    private SolrAlbumVideoDataManager solrAlbumVideoDataManager;
@@ -46,24 +53,76 @@
     */
    public void getSpecialVideo(AcceptData acceptData, HttpServletRequest request, PrintWriter out) {
        String key = request.getParameter("key");
        SearchSpecial searchSpecial = searchSpecialService.selectByKey(key);
        SearchSpecial searchSpecial = searchSpecialService.selectByPrimaryKey(key);
        if (searchSpecial == null) {
            out.print(JsonUtil.loadFalseJson("搜索专题不存在"));
            return;
        }
        String page = request.getParameter("page");
        if (NumberUtil.isNumeric(page)) {
        if (!NumberUtil.isNumeric(page)) {
            out.print(JsonUtil.loadFalseJson("页码错误"));
            return;
        }
        int pageIndex = Integer.parseInt(page);
        switch (key) {
            case "3#hanju-bagua":
                pageIndex++;
                break;
            case "3#hanju-news":
                pageIndex += 2;
                break;
            case "3#hanju-stars":
                pageIndex += 3;
                break;
            case "3#hanju-hots":
                pageIndex += 4;
            case "3#hanju-music":
                pageIndex += 5;
                break;
        }
        List<VideoInfo> videoInfoList = new ArrayList<>();
        int pageSize = Constant.pageCount;
        boolean hasNextPage = false;
        if (searchSpecial.getAlbumQuery() != null) {
            SolrResultDTO solrResultDTO = solrAlbumVideoDataManager.find(searchSpecial.getAlbumQuery(), Integer.parseInt(page), pageSize);
        //获取搜索条件
        SearchSpecial.QueryConditions conditions = null;
        if (searchSpecial.getContainerList() != null) {
            //按version排序
            Comparator<SearchSpecial.QueryConditionsContainer> cm = (o1, o2) -> o1.getMinVersion() - o2.getMinVersion();
            Collections.sort(searchSpecial.getContainerList(), cm);
            for (SearchSpecial.QueryConditionsContainer container : searchSpecial.getContainerList()) {
                if (acceptData.getDetailSystem().getId().equalsIgnoreCase(container.getDetailSystemId())) {
                    if (acceptData.getVersion() >= container.getMinVersion()) {
                        if (acceptData.getChannel().equalsIgnoreCase(container.getChannel())) {
                            conditions = container.getQueryConditions();
                            break;
                        }
                    }
                }
            }
            if (conditions == null) {
                for (SearchSpecial.QueryConditionsContainer container : searchSpecial.getContainerList()) {
                    if (acceptData.getDetailSystem().getId().equalsIgnoreCase(container.getDetailSystemId())) {
                        if (acceptData.getVersion() >= container.getMinVersion()) {
                            conditions = container.getQueryConditions();
                            break;
                        }
                    }
                }
            }
        }
        if (conditions.getAlbumQuery() != null) {
            SolrResultDTO solrResultDTO = solrAlbumVideoDataManager.find(conditions.getAlbumQuery(), pageIndex, pageSize);
            if (solrResultDTO != null) {
                List<SolrAlbumVideo> list = solrResultDTO.getVideoList();
                if (list != null) {
@@ -77,8 +136,8 @@
            }
        }
        if (searchSpecial.getInternetQuery() != null) {
            SolrResultDTO solrResultDTO = solrInternetSearchVideoDataManager.find(searchSpecial.getInternetQuery(), Integer.parseInt(page), pageSize);
        if (conditions.getInternetQuery() != null) {
            SolrResultDTO solrResultDTO = solrInternetSearchVideoDataManager.find(conditions.getInternetQuery(), pageIndex, pageSize);
            if (solrResultDTO != null) {
                List<InternetSearchVideo> list = solrResultDTO.getVideoList();
                if (list != null) {
@@ -92,14 +151,15 @@
            }
        }
        if (searchSpecial.getShortQuery() != null) {
            SolrResultDTO solrResultDTO = solrShortVideoDataManager.find(searchSpecial.getShortQuery(), Integer.parseInt(page), pageSize);
        if (conditions.getShortQuery() != null) {
            SolrResultDTO solrResultDTO = solrShortVideoDataManager.find(conditions.getShortQuery(), pageIndex, pageSize);
            if (solrResultDTO != null) {
                List<SolrShortVideo> list = solrResultDTO.getVideoList();
                if (list != null) {
                    for (SolrShortVideo av : list) {
                        videoInfoList.add(VideoInfoFactory.create(av));
                    }
                    Collections.shuffle(videoInfoList);
                    if (list.size() > 0) {
                        hasNextPage = true;
                    }
@@ -115,8 +175,38 @@
        JSONObject data = new JSONObject();
        data.put("hasNextPage", hasNextPage);
        data.put("list", array);
        data.put("column", 2);
        out.print(JsonUtil.loadTrueAdmin(data));
        data.put("column", searchSpecial.getColumn());
        out.print(JsonUtil.loadTrueJson(data.toString()));
    }
    public void getSearchVideoType(AcceptData acceptData, HttpServletRequest request, PrintWriter out) {
        String pid = request.getParameter("pid");
        if (StringUtil.isNullOrEmpty(pid)) {
            out.print(JsonUtil.loadFalseJson("位置ID不能为空"));
            return;
        }
        JSONArray array = new JSONArray();
        List<SearchSpecialPositionMap> mapList = searchSpecialPositionMapService.listDetailByPosition(pid, 0, 50);
        for (SearchSpecialPositionMap map : mapList) {
            JSONObject item = new JSONObject();
            item.put("name", StringUtil.isNullOrEmpty(map.getShowName()) ? map.getSpecial().getName() : map.getShowName());
            item.put("id", map.getSpecialId());
            item.put("icon", map.getIcon());
            String name = item.optString("name");
            //魅族和小米不添加
            if (("xiaomi" .equalsIgnoreCase(acceptData.getChannel())) && "hanju-video-types" .equalsIgnoreCase(pid)) {
                if (name.contains("电视剧") || name.contains("电影") || name.contains("综艺") || name.contains("少儿")) {
                    array.add(item);
                }
            } else {
                array.add(item);
            }
        }
        JSONObject data = new JSONObject();
        data.put("list", array);
        data.put("count", array.size());
        out.print(JsonUtil.loadTrueJson(data.toString()));
    }