yujian
2019-09-09 0d9ac58dc11f54351e5e18dba8e950717d78019f
搜索发现
6个文件已修改
136 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/RecommendControllerV2.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/config/ConfigServiceImpl.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/DynamicInfoServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/config/ConfigService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/VersionUtil.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/dataoke/DaTaoKeApiUtil.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/RecommendControllerV2.java
@@ -12,6 +12,7 @@
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.yeshi.utils.JsonUtil;
import com.google.gson.Gson;
@@ -27,6 +28,7 @@
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;
@@ -58,6 +60,7 @@
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.SearchKeyVO;
import com.yeshi.fanli.vo.tlj.ReduceHongBao;
@@ -167,7 +170,9 @@
            if (VersionUtil.greaterThan_1_6_5(acceptData.getPlatform(), acceptData.getVersion()))
                root.put("scoreExchange", getScoreExchangeInfo(acceptData));
            if (VersionUtil.greaterThan_2_0_0(acceptData.getPlatform(), acceptData.getVersion()))
            root.put("searchDiscovery", getSearchDiscoveryInfo(acceptData));
            out.print(JsonUtil.loadTrueResult(root));
        } catch (Exception e) {
            out.print(JsonUtil.loadFalseResult(1, "获取数据失败"));
@@ -351,7 +356,7 @@
     */
    private JSONObject getSearchDiscoveryInfo(AcceptData acceptData) {
        JSONArray array = new JSONArray();
        String keys = configService.get("search_discovery_keys");
        String keys = configService.getSearchDiscoveryKeys();
        if (!StringUtil.isNullOrEmpty(keys)) {
            JSONArray arrayKeys = JSONArray.fromObject(keys);
            for (int i = 0; i < arrayKeys.size(); i++) {
@@ -645,4 +650,35 @@
        out.print(JsonUtil.loadTrueResult(data));
    }
    @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();
//                }
//
//
//            }
//
//
//            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()));
//        }
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/config/ConfigServiceImpl.java
@@ -7,6 +7,7 @@
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.yeshi.utils.entity.ProxyIP;
@@ -19,6 +20,7 @@
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.dataoke.DaTaoKeApiUtil;
import net.sf.json.JSONArray;
@@ -192,4 +194,48 @@
        }
    }
    @Cacheable(value = "config", key = "'getSearchDiscoveryKeys'")
    @Override
    public String getSearchDiscoveryKeys() {
        List<Config> list = configMapper.listByKey("search_discovery_keys");
        if (list == null || list.size() == 0)
            return null;
        Config config = list.get(0);
        if (config == null)
            return null;
        // 更新
        updateSearchDiscoveryKeys(config);
        String value = config.getValue();
        return value;
    }
    /**
     * 更新搜索发现词
     * @param config
     */
    @Async
    private void updateSearchDiscoveryKeys(Config config) {
        long currentTime = java.lang.System.currentTimeMillis();
        String createtime = config.getCreatetime();
        if (!StringUtil.isNullOrEmpty(createtime)) {
            long diff = currentTime - Long.parseLong(createtime);
            if (diff < 1000 * 60 * 60)
                return; // 超过一个小时更新
        }
        String hotWords = DaTaoKeApiUtil.getHotWords();
        if (StringUtil.isNullOrEmpty(hotWords))
            return ;
        config.setValue(hotWords);
        config.setCreatetime(currentTime + "");
        configMapper.updateByPrimaryKeySelective(config);
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/DynamicInfoServiceImpl.java
@@ -272,6 +272,9 @@
        if (StringUtil.isNullOrEmpty(shopLink)) {
            taoBaoShop.setShopLink(TaoBaoUtil.getShopLink(taoBaoShop.getId()));
        }
        if(StringUtil.isNullOrEmpty(taoBaoShop.getShopIcon()))
            taoBaoShop.setShopIcon(dynamicShopInfo.getShopIcon());
        DynamicInfo dynamicVO = new DynamicInfo();
        dynamicVO.setId(brandId);
fanli/src/main/java/com/yeshi/fanli/service/inter/config/ConfigService.java
@@ -104,4 +104,10 @@
     * @return
     */
    public ProxyIP getTaoBaoProxyIP();
    /**
     * 搜索发现词
     * @return
     */
    public String getSearchDiscoveryKeys();
}
fanli/src/main/java/com/yeshi/fanli/util/VersionUtil.java
@@ -50,6 +50,14 @@
        else
            return false;
    }
    public static boolean greaterThan_2_0_0(String platform, String versionCode) {
        if ((("android".equalsIgnoreCase(platform) && Integer.parseInt(versionCode) >= 48))
                || (("ios".equalsIgnoreCase(platform) && Integer.parseInt(versionCode) >= 66)))
            return true;
        else
            return false;
    }
    public static boolean smallerThan_1_5_1(String platform, String versionCode) {
fanli/src/main/java/com/yeshi/fanli/util/dataoke/DaTaoKeApiUtil.java
@@ -189,6 +189,7 @@
                    taoBaoShopDTO.setSellerId(item.optLong("seller_id"));
                    taoBaoShopDTO.setBrandId(item.optString("brand_id"));
                    taoBaoShopDTO.setBrandDes(item.optString("brand_des"));
                    taoBaoShopDTO.setShopIcon(item.optString("brand_logo"));
                    taoBaoShopDTO.setUserType(0);
                    // 商品信息
@@ -542,6 +543,39 @@
        return detail;
    }
    /**
     * 各大榜单
     *
     * @param type
     * @return
     */
    public static String getHotWords() {
        TaoKeAppInfo app = getRandomApp();
        Map<String, String> params = new TreeMap<>();
        params.put("version", "v1.0.1");
        params.put("appKey", app.getAppKey());
        params.put("sign", getSign(params, app.getAppSecret()));
        String result = null;
        try {
            result = HttpUtil.get("https://openapi.dataoke.com/api/category/get-top100", params, new HashMap<>());
        } catch (Exception e) {
            result = HttpUtil.get("https://openapi.dataoke.com/api/category/get-top100", params, new HashMap<>());
        }
        String hotWords = null;
        JSONObject json = JSONObject.fromObject(result);
        if (json != null) {
            json = json.getJSONObject("data");
            if (json != null) {
                hotWords = json.optString("hotWords");
            }
        }
        return hotWords;
    }
    class DaTaoKeResult {
        Date updateTime;
        List<DaTaoKeDetail> dataList;
@@ -555,5 +589,4 @@
        }
    }
}