yujian
2019-09-09 1d08203db8db23eb9ea6223182bb8b37497d0d73
搜索发现商品
3个文件已修改
1个文件已添加
169 ■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/RecommendControllerV2.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsServiceImpl.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/taobao/dataoke/DaTaoKeGoodsService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/vo/search/SearchKeyTOPVO.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/RecommendControllerV2.java
@@ -28,7 +28,6 @@
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult;
import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2;
import com.yeshi.fanli.exception.integral.IntegralExchangeException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.common.JumpDetailV2Service;
import com.yeshi.fanli.service.inter.config.ConfigService;
@@ -46,6 +45,7 @@
import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService;
import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailService;
import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailV2Service;
import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsService;
import com.yeshi.fanli.tag.PageEntity;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.RedisManager;
@@ -60,8 +60,8 @@
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
import com.yeshi.fanli.vo.goods.GoodsDetailVO;
import com.yeshi.fanli.vo.goods.OtherInfo;
import com.yeshi.fanli.vo.integral.ExchangeTipVO;
import com.yeshi.fanli.vo.msg.ClientTextStyleVO;
import com.yeshi.fanli.vo.search.SearchKeyTOPVO;
import com.yeshi.fanli.vo.search.SearchKeyVO;
import com.yeshi.fanli.vo.tlj.ReduceHongBao;
@@ -122,6 +122,9 @@
    @Resource
    private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service;
    @Resource
    private DaTaoKeGoodsService daTaoKeGoodsService;
    /**
     * 新版推荐专题管理(1.5.3)
@@ -651,34 +654,60 @@
    }
    
     /**
      *  搜索发现列表
      * @param acceptData
      * @param uid
      * @param page
      * @param out
      */
    @RequestMapping(value = "getSearchDiscoveryTop", method = RequestMethod.POST)
    public void getSearchDiscoveryTop(AcceptData acceptData, Long uid, Integer page, PrintWriter out) {
//        try {
//            String keys = configService.getSearchDiscoveryKeys();
//            if (!StringUtil.isNullOrEmpty(keys)) {
//                JSONArray arrayKeys = JSONArray.fromObject(keys);
//                for (int i = (page-1) * 3; i < arrayKeys.size(); i++) {
//                    String keys = arrayKeys.get(i).toString();
//                }
//
//
//            }
//
        int count = 0;
        List<SearchKeyTOPVO> list = new ArrayList<SearchKeyTOPVO>();
        String keys = configService.getSearchDiscoveryKeys();
        if (!StringUtil.isNullOrEmpty(keys)) {
            JSONArray arrayKeys = JSONArray.fromObject(keys);
            if (arrayKeys != null && arrayKeys.size() > 0) {
                count = arrayKeys.size();
                BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
                BigDecimal shareRate = hongBaoManageService.getShareRate();
                int j = 1;
                for (int i = (page-1) * 3; i < arrayKeys.size(); i++) {
                    if (j > 3)
                        break;
                    String words = arrayKeys.get(i).toString();
                    List<GoodsDetailVO> listGoods = new ArrayList<GoodsDetailVO>();
                    List<DaTaoKeDetailV2> listTaoKe = daTaoKeGoodsService.getSearchDiscoveryGoods(words);
                    if (listTaoKe != null && listTaoKe.size() > 0) {
                        for (DaTaoKeDetailV2 daTaoKeDetailV2: listTaoKe) {
                            listGoods.add(GoodsDetailVOFactory.convertTaoBao(TaoBaoUtil.convert(daTaoKeDetailV2), null, fanLiRate,
                                    shareRate));
                            if (listGoods.size() >= 3)
                                break;
                        }
                    }
                    SearchKeyTOPVO keyTOPVO = new SearchKeyTOPVO();
                    keyTOPVO.setName(words);
                    keyTOPVO.setListGoods(listGoods);
                    list.add(keyTOPVO);
                    j++;
                }
            }
        }
            
//
//            GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
//            Gson gson = gsonBuilder.create();
//            JSONObject data = new JSONObject();
//            data.put("result", gson.toJson(exchange));
//            out.print(JsonUtil.loadTrueResult(data));
//        } catch (IntegralExchangeException e) {
//            out.print(JsonUtil.loadFalseResult(1, e.getMsg()));
//        }
        GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
        Gson gson = gsonBuilder.create();
        JSONObject data = new JSONObject();
        data.put("count", count);
        data.put("list", gson.toJson(list));
        out.print(JsonUtil.loadTrueResult(data));
    }
    
}
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsServiceImpl.java
@@ -1,6 +1,8 @@
package com.yeshi.fanli.service.impl.taobao.dataoke;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@@ -11,11 +13,14 @@
import org.springframework.stereotype.Service;
import com.yeshi.fanli.dao.mybatis.taobao.dataoke.DaTaoKeDetailMapper;
import com.yeshi.fanli.dto.dataoke.DaTaoKeGoodsResult;
import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetail;
import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailService;
import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsService;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.dataoke.DaTaoKeApiUtil;
import com.yeshi.fanli.util.taobao.DaTaoKeUtil;
@Service
@@ -117,4 +122,40 @@
        return daTaoKeDetailMapper.listBySellerId(start, count, sellerId);
    }
    
    @Override
    public List<DaTaoKeDetailV2> getSearchDiscoveryGoods(String keyWords){
        String key = "dataoke-goods-searchdiscovery-"+ keyWords;
        List<DaTaoKeDetailV2> list = redisManager.getObjList(DaTaoKeDetailV2.class, key);
        if ( list == null || list.size() == 0) {
            DaTaoKeGoodsResult search = DaTaoKeApiUtil.search(keyWords, null, null, null, 1, 10, 0);
            if (search != null) {
                list = search.getGoodsList();
                if (list != null && list.size() > 0) {
                    Comparator<DaTaoKeDetailV2> cm = new Comparator<DaTaoKeDetailV2>() {
                        @Override
                        public int compare(DaTaoKeDetailV2 o1, DaTaoKeDetailV2 o2) {
                            int diff = o1.getHotPush() - o2.getHotPush();
                            if (diff > 0) {
                                return -1;
                            } else if (diff < 0) {
                                return 1;
                            }
                            return 0;
                        }
                    };
                    Collections.sort(list, cm);
                    if (list.size() > 3)
                        list = list.subList(0, 3);
                    // 缓存 20分钟
                    redisManager.saveObjList(list, key, 1000 * 60 * 20);
                }
                return list;
            }
        }
        return list;
    }
}
fanli/src/main/java/com/yeshi/fanli/service/inter/taobao/dataoke/DaTaoKeGoodsService.java
@@ -3,6 +3,7 @@
import java.util.List;
import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetail;
import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2;
/**
 * 大淘客商品服务
@@ -44,4 +45,13 @@
     */
    public List<DaTaoKeDetail> listBySellerId(long start, int count, Long sellerId);
    /**
     * 搜索发现商品
     * @param page
     * @param count
     * @param keyWords
     * @return
     */
    public List<DaTaoKeDetailV2> getSearchDiscoveryGoods(String keyWords);
}
fanli/src/main/java/com/yeshi/fanli/vo/search/SearchKeyTOPVO.java
New file
@@ -0,0 +1,35 @@
package com.yeshi.fanli.vo.search;
import java.io.Serializable;
import java.util.List;
import com.google.gson.annotations.Expose;
import com.yeshi.fanli.vo.goods.GoodsDetailVO;
public class SearchKeyTOPVO implements Serializable {
    private static final long serialVersionUID = 1L;
    // 搜索词
    @Expose
    private String name;
    // 跳转参数
    @Expose
    private List<GoodsDetailVO> listGoods;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public List<GoodsDetailVO> getListGoods() {
        return listGoods;
    }
    public void setListGoods(List<GoodsDetailVO> listGoods) {
        this.listGoods = listGoods;
    }
}