SearchLikeSecneController.java 3.95 KB
package com.yoho.search.restapi.scene;

import com.yoho.search.common.utils.HttpServletRequestUtils;
import com.yoho.search.models.SearchApiResult;
import com.yoho.search.service.scene.searchlike.*;
import org.apache.commons.collections.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

/**
 * 找相似相关功能
 *
 * @author hugufei
 */

@Controller
public class SearchLikeSecneController {

    @Autowired
    private SearchLikeSceneService searchLikeService;
    @Autowired
    private SearchLikeInShopService searchLikeInShopService;
    @Autowired
    private ProductListWithSupplyService productListWithSupplyService;
    @Autowired
    private SimilarProductService similarProductService;
    @Autowired
    private SearchLikeNotInShopService searchLikeNotInShopService;
    @Autowired
    private SearchLikeHelper searchLikeHelper;

    @RequestMapping(method = RequestMethod.GET, value = "/searchLike")
    @ResponseBody
    public SearchApiResult searchLike(HttpServletRequest request) {
        Map<String, String> paramMap = HttpServletRequestUtils.transParamType(request);
        return searchLikeService.searchLike(paramMap);
    }

    @RequestMapping(method = RequestMethod.GET, value = "/searchLikeInShop")
    @ResponseBody
    public SearchApiResult searchLikeInShop(HttpServletRequest request) {
        Map<String, String> paramMap = HttpServletRequestUtils.transParamType(request);
        int viewNum = MapUtils.getIntValue(paramMap, "viewNum", 10);
        int uid = MapUtils.getIntValue(paramMap, "uid", 0);
        if (uid % 1024 >= 512) {
            paramMap.put("use_yoho_image", "true");
        }
        SearchApiResult result = searchLikeInShopService.searchLikeInShop(paramMap);
        return searchLikeHelper.buildSearchApiResultWithViewNum(result, viewNum);
    }

    @RequestMapping(method = RequestMethod.GET, value = "/searchLikeNotInShop")
    @ResponseBody
    public SearchApiResult searchLikeNotInShop(HttpServletRequest request) {
        Map<String, String> paramMap = HttpServletRequestUtils.transParamType(request);
        int viewNum = MapUtils.getIntValue(paramMap, "viewNum", 10);
        int uid = MapUtils.getIntValue(paramMap, "uid", 0);
        if (uid % 1024 >= 512) {
            paramMap.put("use_yoho_image", "true");
        }
        SearchApiResult result = searchLikeNotInShopService.searchLikeSimilarSknNotInShop(paramMap);
        return searchLikeHelper.buildSearchApiResultWithViewNum(result, viewNum);
    }

    @RequestMapping(method = RequestMethod.GET, value = "/searchLikeForSaleOut")
    @ResponseBody
    public SearchApiResult searchLikeForSaleOut(HttpServletRequest request) {
        Map<String, String> paramMap = HttpServletRequestUtils.transParamType(request);
        return searchLikeService.searchLikeForSaleOut(paramMap);
    }

    /**
     * 获取商品列表,支持如果传入skn无效,补充相似skn
     */
    @RequestMapping(method = RequestMethod.GET, value = "/productindex/productListWithSupply")
    @ResponseBody
    public SearchApiResult productList(HttpServletRequest request) {
        Map<String, String> paramMap = HttpServletRequestUtils.transParamType(request);
        return productListWithSupplyService.productListWithSupply(paramMap);
    }

    /**
     * 根据一堆skn找相似的skn
     *
     * @param request
     * @return
     */
    @RequestMapping(method = RequestMethod.GET, value = "/productindex/similarProductList")
    @ResponseBody
    public SearchApiResult similarProductList(HttpServletRequest request) {
        Map<String, String> paramMap = HttpServletRequestUtils.transParamType(request);
        return similarProductService.similarProductList(paramMap);
    }

}