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; @@ -166,8 +169,10 @@ root.put("spikeGoods", getSpikeGoodsContent(acceptData)); if (VersionUtil.greaterThan_1_6_5(acceptData.getPlatform(), acceptData.getVersion())) root.put("scoreExchange", getScoreExchangeInfo(acceptData)); root.put("searchDiscovery", getSearchDiscoveryInfo(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 @@ } } }