From b32729f2781789ff04f91eae39a06923cabd0833 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期五, 13 十月 2023 17:57:23 +0800
Subject: [PATCH] 唯品会链接解析增加
---
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/SearchController.java | 1992 ++++++++++++++++++++++++++++++----------------------------
1 files changed, 1,024 insertions(+), 968 deletions(-)
diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/SearchController.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/SearchController.java
index cb831d6..f92f37c 100644
--- a/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/SearchController.java
+++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/SearchController.java
@@ -1,968 +1,1024 @@
-package com.yeshi.fanli.controller.client.v1;
-
-import java.io.PrintWriter;
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import javax.annotation.Resource;
-
-import org.springframework.cache.annotation.Cacheable;
-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 org.yeshi.utils.taobao.TbImgUtil;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.yeshi.fanli.entity.accept.AcceptData;
-import com.yeshi.fanli.entity.bus.lable.QualityFactory;
-import com.yeshi.fanli.entity.bus.recommend.Honest;
-import com.yeshi.fanli.entity.bus.search.HotSearch;
-import com.yeshi.fanli.entity.bus.su.search.SuperHotSearch;
-import com.yeshi.fanli.entity.system.BusinessSystem;
-import com.yeshi.fanli.entity.taobao.PidUser;
-import com.yeshi.fanli.entity.taobao.SearchFilter;
-import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
-import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBriefExtra;
-import com.yeshi.fanli.entity.taobao.TaoBaoProvince;
-import com.yeshi.fanli.entity.taobao.TaoBaoSearchNav;
-import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult;
-import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig;
-import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetail;
-import com.yeshi.fanli.service.inter.config.BusinessSystemService;
-import com.yeshi.fanli.service.inter.config.ConfigService;
-import com.yeshi.fanli.service.inter.config.SuperHotSearchService;
-import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
-import com.yeshi.fanli.service.inter.lable.QualityGoodsService;
-import com.yeshi.fanli.service.inter.lable.TaoKeGoodsService;
-import com.yeshi.fanli.service.inter.taobao.TaoBaoShopService;
-import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService;
-import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailService;
-import com.yeshi.fanli.service.inter.user.HistorySearchService;
-import com.yeshi.fanli.util.Constant;
-import com.yeshi.fanli.util.EhcacheUtil;
-import com.yeshi.fanli.util.StringUtil;
-import com.yeshi.fanli.util.ThreadUtil;
-import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil;
-import com.yeshi.fanli.util.taobao.SearchFilterUtil;
-import com.yeshi.fanli.util.taobao.TaoBaoUtil;
-
-import net.sf.ehcache.Element;
-import net.sf.json.JSONArray;
-import net.sf.json.JSONObject;
-
-@Controller
-@RequestMapping("api/v1/search")
-public class SearchController {
-
- @Resource
- private BusinessSystemService businessSystemService;
-
- @Resource
- private ConfigService configService;
-
- @Resource
- private SuperHotSearchService superHotSearchSerivce;
-
- @Resource
- private HistorySearchService historySearchService;
-
- @Resource
- private HongBaoManageService manageService;
-
- @Resource
- private TaoBaoUnionConfigService taoBaoUnionConfigService;
-
- @Resource
- private TaoKeGoodsService taoKeGoodsService;
-
- @Resource
- private QualityGoodsService qualityGoodsService;
-
- @Resource
- private TaoBaoGoodsCacheUtil taoBaoGoodsCacheUtil;
-
- @Resource
- private TaoBaoShopService taoBaoShopService;
-
-
- @Resource
- private DaTaoKeGoodsDetailService daTaoKeGoodsDetailService;
-
- @RequestMapping(value = "gethotsearch", method = RequestMethod.POST)
- public void getHotSearch(AcceptData acceptData, PrintWriter out) {
- BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
- acceptData.getPackages());
- if (system == null) {
- out.print(JsonUtil.loadFalseResult("绯荤粺涓嶅瓨鍦�"));
- return;
- }
- List<SuperHotSearch> superHotSearchList = superHotSearchSerivce
- .getSuperHotSearchBySystemIdCache(system.getId());
- if (superHotSearchList == null || superHotSearchList.size() == 0) {
- out.print(JsonUtil.loadFalseResult("娌℃湁鏁版嵁"));
- return;
- }
- List<HotSearch> hotSearchList = new ArrayList<HotSearch>();
- for (SuperHotSearch superHotSearch : superHotSearchList) {
- HotSearch hotSearch = superHotSearch.getHotSearch();
- if (hotSearch != null)
- hotSearchList.add(hotSearch);
- }
-
- JSONObject data = new JSONObject();
- data.put("count", hotSearchList.size());
- data.put("hotSearchList", hotSearchList);
- String result = JsonUtil.loadTrueResult(data);
- out.print(result);
- return;
- }
-
- @RequestMapping("specialSearch")
- public void specialSearch(AcceptData acceptData, long hid, int page, PrintWriter out) {
- Honest honest = null;
- if (honest == null) {
- out.print(JsonUtil.loadFalseResult(""));
- return;
- }
- String key = hid + "#" + page;
- Element element = EhcacheUtil.getCache("temai").get(key);
- if (element != null) {
- String value = (String) element.getObjectValue();
- if (value != null) {
- out.print(value);
- return;
- }
- }
-
- List<TaoBaoUnionConfig> config = taoBaoUnionConfigService.getConfigByTypeCache(PidUser.TYPE_FANLI_ANDROID);
-
- SearchFilter searchFilter = SearchFilterUtil.getSearchFilter(honest, page);
- TaoBaoSearchResult result = TaoBaoUtil.search3(searchFilter, config.get(0));
- List<TaoBaoSearchNav> navList = TaoBaoUtil.getBaseNav();
- if (result.getNavList() != null)
- navList.addAll(result.getNavList());
- Gson gson = new GsonBuilder().create();
- JSONObject data = new JSONObject();
- data.put("nav", gson.toJson(navList));
- List<TaoBaoGoodsBriefExtra> re = new ArrayList<TaoBaoGoodsBriefExtra>();
- List<TaoBaoGoodsBrief> taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs();
- BigDecimal proportion = manageService.getFanLiRate();
- for (TaoBaoGoodsBrief bf : taoBaoGoodsBriefs) {
- re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion.toString(), ""));
- }
- Gson gson2 = JsonUtil.getApiCommonGson();
- data.put("result", gson2.toJson(re));
- int count = 0;
- if (result.getTaoBaoHead() != null) {
- count = result.getTaoBaoHead().getDocsfound();
- }
- data.put("count", count);
-
- String loadTrueResult = JsonUtil.loadTrueResult(data);
- if (count != 0) {
- EhcacheUtil.getCache("temai").put(new Element(key, loadTrueResult));
- }
- out.print(loadTrueResult);
- }
-
- @RequestMapping(value = "search")
- public void search(AcceptData acceptData, String kw, int page, String filter, String order, String startprice,
- String endprice, String fastFilter, PrintWriter out) {
- String bid = getHistorySearchBid(acceptData);
- historySearchService.addHistorySearch(kw, bid);
- BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
- acceptData.getPackages());
- if (system == null) {
- out.print(JsonUtil.loadFalseResult("绯荤粺涓嶅瓨鍦�"));
- return;
- }
-
- if (!StringUtil.isNullOrEmpty(kw) && (kw.startsWith("http://") || kw.startsWith("https://"))) {
- out.print(JsonUtil.loadFalseResult("鏃犳硶鎼滅储閾炬帴"));
- return;
- }
-
- if (!StringUtil.isNullOrEmpty(fastFilter)) {
- if (!StringUtil.isNullOrEmpty(filter)) {
- JSONArray filterArray = JSONArray.fromObject(filter);
- JSONArray fastFilterArray = JSONArray.fromObject(fastFilter);
- filterArray.addAll(fastFilterArray);
- filter = filterArray.toString();
- } else {
- filter = fastFilter;
- }
- }
- JSONObject data = search(kw, page, filter, order, startprice, endprice);
- out.print(JsonUtil.loadTrueResult(data));
- }
-
- @Cacheable(value = "goodsCache", key = "#md5")
- public JSONObject searchClass(AcceptData acceptData, String kw, int page, String filter, String order,
- String startprice, String endprice, String md5) {
- java.lang.System.out.println("searchClass");
- JSONObject data = search(kw, page, filter, order, startprice, endprice);
- return data;
- }
-
- private JSONObject search(String kw, int page, String filter, String order, String startprice, String endprice) {
- page = page + 1;
-
- SearchFilter sf = new SearchFilter();
- sf.setKey(SearchFilterUtil.filterSearchContent(kw));
- sf.setPage(page);
- sf.setSort(0);
-
- if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(startprice)) {
- sf.setStartPrice(new BigDecimal(startprice));
- }
-
- if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(endprice)) {
- sf.setEndPrice(new BigDecimal(endprice));
- }
-
- if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(order)) {
- if (Integer.parseInt(order) == 1) {
- sf.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW);
- } else if (Integer.parseInt(order) == 2) {
- sf.setSort(TaoBaoUtil.SORT_PRICE_HIGH_TO_LOW);
- } else if (Integer.parseInt(order) == 3) {
- sf.setSort(TaoBaoUtil.SORT_PRICE_LOW_TO_HIGH);
- }
- } else {
- // 榛樿閿�閲忎粠楂樺埌浣庢帓搴�
- sf.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW);
- }
-
- if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(filter)) {
- // 鏌ヨ娣樺疂澶╃尗
- JSONArray array = JSONArray.fromObject(filter);
- Set<String> params = new HashSet<String>();
- for (int i = 0; i < array.size(); i++) {
- // [{"type":'shoptype',id:12}]
- String ty = array.optJSONObject(i).optString("type");
- if ("shoptype".equalsIgnoreCase(ty)) {
- if (array.optJSONObject(i).optInt("id") == 21) {
- sf.setTmFlagship(false); // 涓嶇瓫锟�?
- } else {
- sf.setTmFlagship(true);
- sf.setTmall(true);
- sf.setShopTag("b2c");
- }
- } else if ("category".equalsIgnoreCase(ty)) {
- sf.setCateIds(array.optJSONObject(i).optString("id"));
- } else if ("userType".equalsIgnoreCase(ty)) {
- // if(array.optJSONObject(i).optInt("id") == 51)
- sf.setTmall(true);
- // else
- // sf.setTmall(false);
- } else if ("baoyou".equalsIgnoreCase(ty)) {
- // if(array.optJSONObject(i).optInt("id") == 61)
- sf.setBaoYou(true);
- // else
- // sf.setBaoYou(false);
- } else if ("quantype".equalsIgnoreCase(ty)) {
- // if (array.optJSONObject(i).optInt("id") == 31){
- sf.setQuan(1);
- if (sf.isTmFlagship()) {
- sf.setShopTag(sf.getShopTag() + ",dpyhq");
- } else {
- sf.setShopTag("dpyhq");
- }
- // }
- // else
- // sf.setQuan(2);
- } else if ("hongbaotype".equalsIgnoreCase(ty)) {
- if (array.optJSONObject(i).optInt("id") == 41)// 鏈夌孩锟�?
- sf.setHongbao(1);
- else// 鏃犵孩锟�?
- sf.setHongbao(2);
- } else if ("property".equalsIgnoreCase(ty)) {
- String pid = (String) array.optJSONObject(i).opt("pid");
- String id = (String) array.optJSONObject(i).opt("id");
- boolean flag = false;
- String str = null;
- for (String string : params) {
- flag = string.contains(pid + ":");
- if (flag) {
- str = string;
- break;
- }
- }
- if (flag) {
- params.add(str + "," + id);
- params.remove(str);
- } else {
- params.add(pid + ":" + id);
- }
- } else if ("fahuodi".equalsIgnoreCase(ty)) {
- int id = array.optJSONObject(i).optInt("id");
- sf.setProvinceId(id);
- } else if ("materialId".equalsIgnoreCase(ty)) {
- int id = array.optJSONObject(i).optInt("id");
- sf.setProvinceId(id);
- }
- }
- sf.setParams(params);
- }
- TaoBaoSearchResult result = TaoBaoUtil.search(sf);
- if (result == null) {
- return null;
- }
-
- List<TaoBaoSearchNav> navList = TaoBaoUtil.getBaseNav();
- if (result.getNavList() != null)
- navList.addAll(result.getNavList());
- Gson gson = new GsonBuilder().create();
- JSONObject data = new JSONObject();
- data.put("nav", gson.toJson(navList));
- List<TaoBaoGoodsBriefExtra> re = new ArrayList<TaoBaoGoodsBriefExtra>();
- List<TaoBaoGoodsBrief> taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs();
- int fq = sf.getQuan();
- int fh = sf.getHongbao();
- boolean ft = sf.isTmall();
- BigDecimal proportion = manageService.getFanLiRate();
- if (fq == 0 && fh == 0 && !ft) {
- if (result != null && result.getTaoBaoGoodsBriefs() != null)
- for (TaoBaoGoodsBrief bf : result.getTaoBaoGoodsBriefs()) {
- int count = bf.getBiz30day();
- if (count >= 10000) { // 瀵归攢閲忔暟鎹仛澶勭悊 椤甸潰灞曠ず7.3涓�
- double sales = count;
- String salesCountMidea = String.format("%.1f", sales / 10000);
- bf.setSalesCount(salesCountMidea + "涓�");
- re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion.toString(), ""));
- } else {
- bf.setSalesCount(count + "");
- re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion.toString(), ""));
- }
- }
- } else {
- TaoBaoGoodsBriefExtra taoBaoGoodsBriefExtra;
- if (taoBaoGoodsBriefs != null)
- for (TaoBaoGoodsBrief taoBaoGoodsBrief : taoBaoGoodsBriefs) {
- int count = taoBaoGoodsBrief.getBiz30day();
- if (count >= 10000) {
- double sales = count;
- String salesCountMidea = String.format("%.1f", sales / 10000);
- taoBaoGoodsBrief.setSalesCount(salesCountMidea + "涓�");
- taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief,
- proportion.toString(), "");
- re.add(taoBaoGoodsBriefExtra);
- } else {
- taoBaoGoodsBrief.setSalesCount(count + "");
- taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief,
- proportion.toString(), "");
- re.add(taoBaoGoodsBriefExtra);
- }
- }
- }
- Gson gson2 = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
- .excludeFieldsWithoutExposeAnnotation().create();
- data.put("result", gson2.toJson(re));
- data.put("count", result.getTaoBaoHead().getDocsfound());
- return data;
- }
-
- @RequestMapping(value = "suggestsearch", method = RequestMethod.POST)
- public void getSugguestSearch(AcceptData acceptData, String kw, PrintWriter out) {
- List<String> list = TaoBaoUtil.getSuguestSearch(kw);
- if (list != null && list.size() > 0) {
- JSONArray array = new JSONArray();
- for (String st : list)
- array.add(st);
- out.print(JsonUtil.loadTrueResult(array));
- } else {
- out.print(JsonUtil.loadFalseResult("鏆傛棤寤鸿鍐呭"));
- }
- return;
- }
-
- private String getHistorySearchBid(AcceptData acceptData) {
- StringBuffer sb = new StringBuffer();
- String link = "#$$$#";
- String platform = acceptData.getPlatform();
- String packages = acceptData.getPackages();
- String device = acceptData.getDevice();
- sb.append(platform).append(link).append(packages).append(link).append(device);
- return StringUtil.Md5(sb.toString());
- }
-
- /**
- * 鎼滅储-鏂扮増
- *
- * @param acceptData
- * @param kw
- * @param page
- * @param filter
- * @param order
- * 閿�閲忕敱楂樺埌浣�:1 銆� 浠锋牸浠庨珮鍒颁綆:2 銆� 浠锋牸浠庝綆鍒伴珮:3 銆� 鎺ㄥ箍閲忛珮鍒颁綆:4锛堢患鍚堥粯璁わ級銆佽繑鍒╂瘮楂樺埌浣�:5
- * 銆佽繑鍒╂瘮浣庡埌楂�:6 銆佹帹鑽�20
- * @param startprice
- * @param endprice
- * @param fastFilter
- * @param out
- */
- @RequestMapping(value = "searchgoods")
- public void searchgoods(AcceptData acceptData, String kw, int page, String filter, String order, String startprice,
- String endprice, Double startTkRate, Double endTkRate, String fastFilter, PrintWriter out) {
-
- String bid = getHistorySearchBid(acceptData);
-
- historySearchService.addHistorySearch(kw, bid);
-
-// BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
-// acceptData.getPackages());
-// if (system == null) {
-// out.print(JsonUtil.loadFalseResult("绯荤粺涓嶅瓨鍦�"));
-// return;
-// }
-
- if (!StringUtil.isNullOrEmpty(kw) && (kw.startsWith("http://") || kw.startsWith("https://"))) {
- out.print(JsonUtil.loadFalseResult("鏃犳硶鎼滅储閾炬帴"));
- return;
- }
-
- if (!StringUtil.isNullOrEmpty(fastFilter)) {
- if (!StringUtil.isNullOrEmpty(filter)) {
- JSONArray filterArray = JSONArray.fromObject(filter);
- JSONArray fastFilterArray = JSONArray.fromObject(fastFilter);
- filterArray.addAll(fastFilterArray);
- filter = filterArray.toString();
- } else {
- filter = fastFilter;
- }
- }
-
- // 鏄惁鏄帹鑽�
- boolean recommend = false;
- if (!StringUtil.isNullOrEmpty(fastFilter)) {
- // 鏌ヨ娣樺疂澶╃尗
- JSONArray array = JSONArray.fromObject(filter);
- for (int i = 0; i < array.size(); i++) {
- String ty = array.optJSONObject(i).optString("type");
-
- if ("recommend".equalsIgnoreCase(ty)) {
- recommend = true;
- }
- }
- }
-
- JSONObject data = null;
- if (!recommend) {
-
- // 娣樺疂鎺ュ彛璇锋眰
- data = searchGoods(kw, page, filter, order, startprice, endprice);
- } else {
- // 鎺ㄨ崘锛氱簿閫夊簱
- data = searchQualityGoods(kw, page, filter, order, startprice, endprice);
- }
-
- // 鑾峰彇鎺ㄨ崘璇�
- List<String> listRecommendWords = new ArrayList<String>();
- // 缁煎悎 鏌ヨ绗竴椤垫椂鑾峰彇鍊欓�夎瘝
- if (page == 0) {
- listRecommendWords = TaoBaoUtil.getSuguestSearch(kw);
- if (listRecommendWords == null || listRecommendWords.size() == 0) {
- listRecommendWords = new ArrayList<String>();
- }
- }
-
- Gson gson = new GsonBuilder().create();
- if (data != null)
- data.put("words", gson.toJson(listRecommendWords));
-
- out.print(JsonUtil.loadTrueResult(data));
- }
-
- /**
- * 鎵ц鎼滅储-鏂扮増
- *
- * @param kw
- * @param page
- * @param filter
- * @param order
- * @param startprice
- * @param endprice
- * @return
- */
- private JSONObject searchGoods(String kw, int page, String filter, String order, String startprice,
- String endprice) {
- page = page + 1;
-
- SearchFilter sf = new SearchFilter();
- sf.setKey(SearchFilterUtil.filterSearchContent(kw));
- sf.setPage(page);
- sf.setSort(0);
-
- if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(startprice)) {
- sf.setStartPrice(new BigDecimal(startprice));
- }
-
- if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(endprice)) {
- sf.setEndPrice(new BigDecimal(endprice));
- }
-
- if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(order)) {
- if (Integer.parseInt(order) == 1) {
- sf.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW);
- } else if (Integer.parseInt(order) == 2) {
- sf.setSort(TaoBaoUtil.SORT_PRICE_HIGH_TO_LOW);
- } else if (Integer.parseInt(order) == 3) {
- sf.setSort(TaoBaoUtil.SORT_PRICE_LOW_TO_HIGH);
- } else if (Integer.parseInt(order) == 4) {
- sf.setSort(TaoBaoUtil.SORT_TOTAL_SALES_HIGH_TO_LOW);
- } else if (Integer.parseInt(order) == 5) {
- sf.setSort(TaoBaoUtil.SORT_TKRATE_HIGH_TO_LOW);
- } else if (Integer.parseInt(order) == 6) {
- sf.setSort(TaoBaoUtil.SORT_TKRATE_LOW_TO_HIGH);
- }
- } else {
- // 榛樿閿�閲忎粠楂樺埌浣庢帓搴�
- sf.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW);
- }
-
- if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(filter)) {
- // 鏌ヨ娣樺疂澶╃尗
- JSONArray array = JSONArray.fromObject(filter);
- Set<String> params = new HashSet<String>();
- for (int i = 0; i < array.size(); i++) {
- // [{"type":'shoptype',id:12}]
- String ty = array.optJSONObject(i).optString("type");
- if ("shoptype".equalsIgnoreCase(ty)) {
- if (array.optJSONObject(i).optInt("id") == 21) {
- sf.setTmFlagship(false); // 涓嶇瓫锟�?
- } else {
- sf.setTmFlagship(true);
- sf.setTmall(true);
- sf.setShopTag("b2c");
- }
- } else if ("category".equalsIgnoreCase(ty)) {
- sf.setCateIds(array.optJSONObject(i).optString("id"));
- } else if ("userType".equalsIgnoreCase(ty)) {
- // if(array.optJSONObject(i).optInt("id") == 51)
- sf.setTmall(true);
- // else
- // sf.setTmall(false);
- } else if ("baoyou".equalsIgnoreCase(ty)) {
- // if(array.optJSONObject(i).optInt("id") == 61)
- sf.setBaoYou(true);
- // else
- // sf.setBaoYou(false);
- } else if ("quantype".equalsIgnoreCase(ty)) {
- // if (array.optJSONObject(i).optInt("id") == 31){
- sf.setQuan(1);
- if (sf.isTmFlagship()) {
- sf.setShopTag(sf.getShopTag() + ",dpyhq");
- } else {
- sf.setShopTag("dpyhq");
- }
- // }
- // else
- // sf.setQuan(2);
- } else if ("hongbaotype".equalsIgnoreCase(ty)) {
- if (array.optJSONObject(i).optInt("id") == 41)// 鏈夌孩锟�?
- sf.setHongbao(1);
- else// 鏃犵孩锟�?
- sf.setHongbao(2);
- } else if ("property".equalsIgnoreCase(ty)) {
- String pid = (String) array.optJSONObject(i).opt("pid");
- String id = (String) array.optJSONObject(i).opt("id");
- boolean flag = false;
- String str = null;
- for (String string : params) {
- flag = string.contains(pid + ":");
- if (flag) {
- str = string;
- break;
- }
- }
- if (flag) {
- params.add(str + "," + id);
- params.remove(str);
- } else {
- params.add(pid + ":" + id);
- }
- } else if ("fahuodi".equalsIgnoreCase(ty)) {
- int id = array.optJSONObject(i).optInt("id");
- sf.setProvinceId(id);
- } else if ("materialId".equalsIgnoreCase(ty)) {
- int id = array.optJSONObject(i).optInt("id");
- sf.setProvinceId(id);
- } else if ("tkRate1".equalsIgnoreCase(ty)) {
- setSearchTkRate(0, sf);
- } else if ("tkRate2".equalsIgnoreCase(ty)) {
- setSearchTkRate(1, sf);
- } else if ("tkRate3".equalsIgnoreCase(ty)) {
- setSearchTkRate(2, sf);
- } else if ("tkRate4".equalsIgnoreCase(ty)) {
- setSearchTkRate(3, sf);
- } else if ("tkRate5".equalsIgnoreCase(ty)) {
- setSearchTkRate(4, sf);
- }
- }
- sf.setParams(params);
- }
-
- // 鎼滅储澶ф窐瀹�
- List<DaTaoKeDetail> daTaoKeList = null;
- if (page == 1)
- daTaoKeList = daTaoKeGoodsDetailService.listByDtitle(kw);
-
- TaoBaoSearchResult result = TaoBaoUtil.search(sf);
- if (result == null) {
- return null;
- }
- // 鎼滅储鏄惁鍦ㄨ惀閿�涓诲晢鍝佸簱
- if (result != null && result.getTaoBaoGoodsBriefs() != null && result.getTaoBaoGoodsBriefs().size() > 0) {
- // 鏆傛椂鏀惧純鏇存柊鍒拌惀閿�鍟嗗搧搴�
- // String numIds = "";
- // for (TaoBaoGoodsBrief goods : result.getTaoBaoGoodsBriefs()) {
- // numIds += goods.getAuctionId() + ",";
- // }
- // if (numIds.endsWith(","))
- // numIds = numIds.substring(0, numIds.length() - 1);
- // try {
- // List<TaoBaoGoodsBrief> goodsList =
- // TaoKeApiUtil.getBatchGoodsInfos(numIds);
- // Map<Long, Integer> map = new HashMap<>();
- // for (TaoBaoGoodsBrief g : goodsList)
- // map.put(g.getAuctionId(), g.getMaterialLibType());
- // for (TaoBaoGoodsBrief goods : result.getTaoBaoGoodsBriefs())
- // goods.setMaterialLibType(map.get(goods.getAuctionId()));
-
- ThreadUtil.run(new Runnable() {
- @Override
- public void run() {
- // 鏇存柊鍒扮珐瀛�
- for (TaoBaoGoodsBrief goods : result.getTaoBaoGoodsBriefs())
- taoBaoGoodsCacheUtil.saveCommonTaoBaoGoodsInfo(goods);
- }
- });
- // } catch (Exception e) {
- // e.printStackTrace();
- // }
-
- }
-
- List<TaoBaoSearchNav> navList = TaoBaoUtil.getBaseNav();
- if (result.getNavList() != null)
- navList.addAll(result.getNavList());
- Gson gson = new GsonBuilder().create();
- JSONObject data = new JSONObject();
- data.put("nav", gson.toJson(navList));
- List<TaoBaoGoodsBriefExtra> re = new ArrayList<TaoBaoGoodsBriefExtra>();
- List<TaoBaoGoodsBrief> taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs();
- if (taoBaoGoodsBriefs == null)
- taoBaoGoodsBriefs = new ArrayList<>();
-
- try {
- if (daTaoKeList != null && daTaoKeList.size() > 0) {
- Collections.reverse(daTaoKeList);
- for (DaTaoKeDetail detail : daTaoKeList) {
- taoBaoGoodsBriefs.add(0,TaoBaoUtil.convert(detail));
- }
- }
- } catch (Exception e) {
- }
-
- int fq = sf.getQuan();
- int fh = sf.getHongbao();
- boolean ft = sf.isTmall();
- BigDecimal proportion = manageService.getFanLiRate();
- if (fq == 0 && fh == 0 && !ft) {
- if (result != null && taoBaoGoodsBriefs != null)
- for (TaoBaoGoodsBrief bf : taoBaoGoodsBriefs) {
- int count = bf.getBiz30day();
- if (count >= 10000) { // 瀵归攢閲忔暟鎹仛澶勭悊 椤甸潰灞曠ず7.3涓�
- double sales = count;
- String salesCountMidea = String.format("%.1f", sales / 10000);
- bf.setSalesCount(salesCountMidea + "涓�");
- re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion.toString(), ""));
- } else {
- bf.setSalesCount(count + "");
- re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion.toString(), ""));
- }
- }
- } else {
- TaoBaoGoodsBriefExtra taoBaoGoodsBriefExtra;
- if (taoBaoGoodsBriefs != null)
- for (TaoBaoGoodsBrief taoBaoGoodsBrief : taoBaoGoodsBriefs) {
- int count = taoBaoGoodsBrief.getBiz30day();
- if (count >= 10000) {
- double sales = count;
- String salesCountMidea = String.format("%.1f", sales / 10000);
- taoBaoGoodsBrief.setSalesCount(salesCountMidea + "涓�");
- taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief,
- proportion.toString(), "");
- re.add(taoBaoGoodsBriefExtra);
- } else {
- taoBaoGoodsBrief.setSalesCount(count + "");
- taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief,
- proportion.toString(), "");
- re.add(taoBaoGoodsBriefExtra);
- }
- }
- }
- Gson gson2 = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
- .excludeFieldsWithoutExposeAnnotation().create();
- data.put("result", gson2.toJson(re));
- data.put("count", result.getTaoBaoHead().getDocsfound());
- return data;
- }
-
- /**
- * 鎵ц鎼滅储绮鹃�夊簱
- *
- * @param kw
- * @param page
- * @param filter
- * @param order
- * @param startprice
- * @param endprice
- * @return
- */
- private JSONObject searchQualityGoods(String key, int page, String filter, String order, String startprice,
- String endprice) {
-
- Integer hasQuan = null;
- Integer userType = null;
- Double start_Price = null;
- Double end_Price = null;
- Integer sort = null;
- Double startTkRate = null;
- Double endTkRate = null;
-
- int provinceId = -100;
-
- // 璧峰浠锋牸
- if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(startprice)) {
- start_Price = Double.parseDouble(startprice);
- }
- // 缁撴潫浠锋牸
- if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(endprice)) {
- end_Price = Double.parseDouble(endprice);
- }
-
- // 鎺掑簭
- if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(order)) {
-
- if (Integer.parseInt(order) == 4) {
- sort = 20; // 缁煎悎鏃讹細閲囩敤榛樿鏉冮噸鎺掑簭
- } else {
- sort = Integer.parseInt(order);
- }
-
- }
-
- /* 鍏朵粬绛涢�夋潯浠� */
- if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(filter)) {
- // 鏌ヨ娣樺疂澶╃尗
- JSONArray array = JSONArray.fromObject(filter);
- for (int i = 0; i < array.size(); i++) {
- String ty = array.optJSONObject(i).optString("type");
-
- if ("userType".equalsIgnoreCase(ty)) {
- userType = 1; // 澶╃尗
- } else if ("quantype".equalsIgnoreCase(ty)) {
- hasQuan = 1; // 鏈夊埜
- } else if ("hongbaotype".equalsIgnoreCase(ty)) {
-
- } else if ("fahuodi".equalsIgnoreCase(ty)) {
- provinceId = array.optJSONObject(i).optInt("id");
- } else if ("tkRate1".equalsIgnoreCase(ty)) {
- // 鑾峰彇瀵瑰簲鍙傛暟
- String value = configService.get("tkRate_range");
- if (!StringUtil.isNullOrEmpty(value)) {
- JSONArray tkRatearray = JSONArray.fromObject(value);
- if (tkRatearray != null) {
- String start = tkRatearray.optJSONObject(0).optString("start");
- if (!StringUtil.isNullOrEmpty(start)) {
- startTkRate = Double.parseDouble(start);
- }
- String end = tkRatearray.optJSONObject(0).optString("end");
- if (!StringUtil.isNullOrEmpty(end)) {
- endTkRate = Double.parseDouble(end);
- }
- }
- }
- } else if ("tkRate2".equalsIgnoreCase(ty)) {
- // 鑾峰彇瀵瑰簲鍙傛暟
- String value = configService.get("tkRate_range");
- if (!StringUtil.isNullOrEmpty(value)) {
- JSONArray tkRatearray = JSONArray.fromObject(value);
- if (tkRatearray != null) {
- String start = tkRatearray.optJSONObject(1).optString("start");
- if (!StringUtil.isNullOrEmpty(start)) {
- startTkRate = Double.parseDouble(start);
- }
- String end = tkRatearray.optJSONObject(1).optString("end");
- if (!StringUtil.isNullOrEmpty(end)) {
- endTkRate = Double.parseDouble(end);
- }
- }
- }
- } else if ("tkRate3".equalsIgnoreCase(ty)) {
- // 鑾峰彇瀵瑰簲鍙傛暟
- String value = configService.get("tkRate_range");
- if (!StringUtil.isNullOrEmpty(value)) {
- JSONArray tkRatearray = JSONArray.fromObject(value);
- if (tkRatearray != null) {
- String start = tkRatearray.optJSONObject(2).optString("start");
- if (!StringUtil.isNullOrEmpty(start)) {
- startTkRate = Double.parseDouble(start);
- }
- String end = tkRatearray.optJSONObject(2).optString("end");
- if (!StringUtil.isNullOrEmpty(end)) {
- endTkRate = Double.parseDouble(end);
- }
- }
- }
- } else if ("tkRate4".equalsIgnoreCase(ty)) {
- // 鑾峰彇瀵瑰簲鍙傛暟
- String value = configService.get("tkRate_range");
- if (!StringUtil.isNullOrEmpty(value)) {
- JSONArray tkRatearray = JSONArray.fromObject(value);
- if (tkRatearray != null) {
- String start = tkRatearray.optJSONObject(3).optString("start");
- if (!StringUtil.isNullOrEmpty(start)) {
- startTkRate = Double.parseDouble(start);
- }
- String end = tkRatearray.optJSONObject(3).optString("end");
- if (!StringUtil.isNullOrEmpty(end)) {
- endTkRate = Double.parseDouble(end);
- }
- }
- }
- } else if ("tkRate5".equalsIgnoreCase(ty)) {
- // 鑾峰彇瀵瑰簲鍙傛暟
- String value = configService.get("tkRate_range");
- if (!StringUtil.isNullOrEmpty(value)) {
- JSONArray tkRatearray = JSONArray.fromObject(value);
- if (tkRatearray != null) {
- String start = tkRatearray.optJSONObject(4).optString("start");
- if (!StringUtil.isNullOrEmpty(start)) {
- startTkRate = Double.parseDouble(start);
- }
- String end = tkRatearray.optJSONObject(4).optString("end");
- if (!StringUtil.isNullOrEmpty(end)) {
- endTkRate = Double.parseDouble(end);
- }
- }
- }
- }
- }
- }
-
- int pageSize = Constant.PAGE_SIZE;
-
- List<QualityFactory> listQuery = qualityGoodsService.listRecommendBykey(page * pageSize, pageSize, key, hasQuan,
- userType, start_Price, end_Price, startTkRate, endTkRate, sort);
-
- List<TaoBaoGoodsBriefExtra> listExtra = new ArrayList<TaoBaoGoodsBriefExtra>();
- BigDecimal proportion = manageService.getFanLiRate();
- /* 閬嶅巻鍒楄〃鏁版嵁 */
- if (listQuery != null && listQuery.size() > 0) {
- for (QualityFactory selectionGoods : listQuery) {
-
- TaoBaoGoodsBrief taoBaoGoodsBrief = selectionGoods.getTaoBaoGoodsBrief();
-
- if (taoBaoGoodsBrief == null) {
- continue;
- }
-
- int biz30day = taoBaoGoodsBrief.getBiz30day();
- if (biz30day >= 10000) {
- double sales = biz30day;
- String salesCountMidea = String.format("%.1f", sales / 10000);
- taoBaoGoodsBrief.setSalesCount(salesCountMidea + "涓�");
- } else {
- taoBaoGoodsBrief.setSalesCount(biz30day + "");
- }
-
- // 鏀瑰彉鍥剧墖灏哄
- String pictUrl = taoBaoGoodsBrief.getPictUrl();
- if (!StringUtil.isNullOrEmpty(pictUrl) && !pictUrl.contains("320x320")) {
- taoBaoGoodsBrief.setPictUrl(TbImgUtil.getTBSize320Img(pictUrl));
- }
-
- listExtra.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), null));
- }
- }
-
- long count = qualityGoodsService.countRecommendBykey(key, hasQuan, userType, start_Price, end_Price,
- startTkRate, endTkRate);
-
- // 璁剧疆鍙戣揣鍦板潃
- TaoBaoSearchNav nav = new TaoBaoSearchNav();
- nav.setName("鍙戣揣鍦伴�夋嫨");
- nav.setFlag("address");
- nav.setId(11110);
- nav.setType("fahuodi");
-
- List<TaoBaoSearchNav> navList = new ArrayList<>();
-
- List<TaoBaoSearchNav> childNavList = new ArrayList<>();
- List<TaoBaoProvince> provinceList = TaoBaoUtil.getTaoBaoProvinceList();
- for (TaoBaoProvince province : provinceList) {
- TaoBaoSearchNav childNav = new TaoBaoSearchNav();
- childNav.setName(province.getName());
- childNav.setId(Integer.parseInt(province.getId()));
- childNav.setType("fahuodi-child");
- if (Integer.parseInt(province.getId()) == provinceId)
- childNav.setSelector(1);
- childNavList.add(childNav);
- }
-
- nav.setSubIds(childNavList);
- navList.add(nav);
-
- Gson gson = new GsonBuilder().create();
- Gson gson2 = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
- .excludeFieldsWithoutExposeAnnotation().create();
-
- JSONObject data = new JSONObject();
- data.put("nav", gson.toJson(navList));
- data.put("result", gson2.toJson(listExtra));
- data.put("count", count);
-
- return data;
- }
-
- /**
- * 璁剧疆鏌ヨ浣i噾姣斾緥鑼冨洿
- *
- * @param i
- * @param sf
- */
- public void setSearchTkRate(int i, SearchFilter sf) {
- // 鑾峰彇瀵瑰簲鍙傛暟
- String value = configService.get("tkRate_range");
-
- if (!StringUtil.isNullOrEmpty(value)) {
-
- JSONArray tkRatearray = JSONArray.fromObject(value);
-
- if (tkRatearray != null) {
-
- String start = tkRatearray.optJSONObject(i).optString("start");
-
- if (!StringUtil.isNullOrEmpty(start)) {
- int tkRate = (int) (Float.parseFloat(start) * 100);
- sf.setStartTkRate(tkRate);
- }
-
- String end = tkRatearray.optJSONObject(i).optString("end");
- if (!StringUtil.isNullOrEmpty(end)) {
- int tkRate = (int) (Float.parseFloat(end) * 100);
- sf.setEndTkRate(tkRate);
- }
- }
-
- }
- }
-}
+package com.yeshi.fanli.controller.client.v1;
+
+import java.io.PrintWriter;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.annotation.Resource;
+
+import com.yeshi.fanli.entity.SystemEnum;
+import com.yeshi.fanli.entity.bus.search.HistorySearch;
+import org.springframework.cache.annotation.Cacheable;
+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 org.yeshi.utils.taobao.TbImgUtil;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.yeshi.goods.facade.dto.taobao.dataoke.DaTaoKeGoodsResult;
+import com.yeshi.fanli.entity.accept.AcceptData;
+import com.yeshi.fanli.entity.bus.lable.QualityFactory;
+import com.yeshi.fanli.entity.bus.recommend.Honest;
+import com.yeshi.fanli.entity.bus.search.HotSearch;
+import com.yeshi.fanli.entity.system.BusinessSystem;
+import com.yeshi.fanli.entity.system.ConfigKeyEnum;
+import com.yeshi.fanli.entity.taobao.PidUser;
+import com.yeshi.fanli.entity.taobao.SearchFilter;
+import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief;
+import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBriefExtra;
+import com.yeshi.fanli.entity.taobao.TaoBaoProvince;
+import com.yeshi.fanli.entity.taobao.TaoBaoSearchNav;
+import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult;
+import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig;
+import com.yeshi.goods.facade.entity.taobao.dataoke.DaTaoKeDetailV2;
+import com.yeshi.fanli.service.inter.config.BusinessSystemService;
+import com.yeshi.fanli.service.inter.config.ConfigService;
+import com.yeshi.fanli.service.inter.config.HotSearchService;
+import com.yeshi.fanli.service.inter.lable.QualityGoodsService;
+import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
+import com.yeshi.fanli.service.inter.taobao.TaoBaoShopService;
+import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService;
+import com.yeshi.goods.facade.service.DaTaoKeGoodsDetailV2Service;
+import com.yeshi.fanli.service.inter.user.HistorySearchService;
+import com.yeshi.fanli.util.Constant;
+import com.yeshi.fanli.util.EhcacheUtil;
+import com.yeshi.fanli.util.StringUtil;
+import com.yeshi.fanli.util.ThreadUtil;
+import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil;
+import com.yeshi.goods.facade.utils.taobao.DaTaoKeApiUtil;
+import com.yeshi.fanli.util.taobao.SearchFilterUtil;
+import com.yeshi.fanli.util.taobao.TaoBaoUtil;
+import com.yeshi.fanli.vo.brand.TaoBaoShopVO;
+
+import net.sf.ehcache.Element;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
+@Controller
+@RequestMapping("api/v1/search")
+public class SearchController {
+
+ @Resource
+ private BusinessSystemService businessSystemService;
+
+ @Resource
+ private ConfigService configService;
+
+ @Resource
+ private HotSearchService hotSearchService;
+
+ @Resource
+ private HistorySearchService historySearchService;
+
+ @Resource
+ private HongBaoManageService manageService;
+
+ @Resource
+ private TaoBaoUnionConfigService taoBaoUnionConfigService;
+
+ @Resource
+ private QualityGoodsService qualityGoodsService;
+
+ @Resource
+ private TaoBaoGoodsCacheUtil taoBaoGoodsCacheUtil;
+
+ @Resource
+ private TaoBaoShopService taoBaoShopService;
+
+ @Resource
+ private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service;
+
+
+ /**
+ * 鐑棬鎼滅储
+ *
+ * @param acceptData
+ * @param goodsType
+ * @param out
+ */
+ @RequestMapping(value = "gethotsearch", method = RequestMethod.POST)
+ public void getHotSearch(AcceptData acceptData, Integer goodsType, PrintWriter out) {
+ // 榛樿娣樺疂
+ if (goodsType == null) {
+ goodsType = Constant.SOURCE_TYPE_TAOBAO;
+ }
+
+ List<HotSearch> list = hotSearchService.getHotSearchCache(goodsType, acceptData.getSystem());
+ if (list == null || list.size() == 0) {
+ out.print(JsonUtil.loadFalseResult("娌℃湁鏁版嵁"));
+ return;
+ }
+
+ JSONObject data = new JSONObject();
+ data.put("count", list.size());
+ data.put("hotSearchList", list);
+ out.print(JsonUtil.loadTrueResult(data));
+ }
+
+ @RequestMapping("specialSearch")
+ public void specialSearch(AcceptData acceptData, long hid, int page, PrintWriter out) {
+ Honest honest = null;
+ if (honest == null) {
+ out.print(JsonUtil.loadFalseResult(""));
+ return;
+ }
+ String key = hid + "#" + page;
+ Element element = EhcacheUtil.getCache("temai").get(key);
+ if (element != null) {
+ String value = (String) element.getObjectValue();
+ if (value != null) {
+ out.print(value);
+ return;
+ }
+ }
+
+ List<TaoBaoUnionConfig> config = taoBaoUnionConfigService.getConfigByTypeCache(PidUser.TYPE_FANLI_ANDROID);
+
+ SearchFilter searchFilter = SearchFilterUtil.getSearchFilter(honest, page);
+ TaoBaoSearchResult result = TaoBaoUtil.search3(searchFilter, config.get(0));
+ List<TaoBaoSearchNav> navList = TaoBaoUtil.getBaseNav();
+ if (result.getNavList() != null)
+ navList.addAll(result.getNavList());
+ Gson gson = new GsonBuilder().create();
+ JSONObject data = new JSONObject();
+ data.put("nav", gson.toJson(navList));
+ List<TaoBaoGoodsBriefExtra> re = new ArrayList<TaoBaoGoodsBriefExtra>();
+ List<TaoBaoGoodsBrief> taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs();
+ BigDecimal proportion = manageService.getFanLiRate(acceptData.getSystem());
+ for (TaoBaoGoodsBrief bf : taoBaoGoodsBriefs) {
+ re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion.toString(), ""));
+ }
+ Gson gson2 = JsonUtil.getApiCommonGson();
+ data.put("result", gson2.toJson(re));
+ int count = 0;
+ if (result.getTaoBaoHead() != null) {
+ count = result.getTaoBaoHead().getDocsfound();
+ }
+ data.put("count", count);
+
+ String loadTrueResult = JsonUtil.loadTrueResult(data);
+ if (count != 0) {
+ EhcacheUtil.getCache("temai").put(new Element(key, loadTrueResult));
+ }
+ out.print(loadTrueResult);
+ }
+
+ @RequestMapping(value = "search")
+ public void search(AcceptData acceptData, String kw, Long uid, int page, String filter, String order, String startprice,
+ String endprice, String fastFilter, PrintWriter out) {
+
+ ThreadUtil.run(new Runnable() {
+ @Override
+ public void run() {
+ HistorySearch search = new HistorySearch();
+ search.setDevice(StringUtil.isNullOrEmpty(acceptData.getUtdid()) ? acceptData.getDevice() : acceptData.getUtdid());
+ search.setKey(kw);
+ search.setSystem(acceptData.getSystem());
+ search.setUid(uid);
+ historySearchService.addHistorySearch(search);
+ }
+ });
+ BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
+ acceptData.getPackages(), acceptData.getSystem());
+ if (system == null) {
+ out.print(JsonUtil.loadFalseResult("绯荤粺涓嶅瓨鍦�"));
+ return;
+ }
+
+ if (!StringUtil.isNullOrEmpty(kw) && (kw.startsWith("http://") || kw.startsWith("https://"))) {
+ out.print(JsonUtil.loadFalseResult("鏃犳硶鎼滅储閾炬帴"));
+ return;
+ }
+
+ if (!StringUtil.isNullOrEmpty(fastFilter)) {
+ if (!StringUtil.isNullOrEmpty(filter)) {
+ JSONArray filterArray = JSONArray.fromObject(filter);
+ JSONArray fastFilterArray = JSONArray.fromObject(fastFilter);
+ filterArray.addAll(fastFilterArray);
+ filter = filterArray.toString();
+ } else {
+ filter = fastFilter;
+ }
+ }
+ JSONObject data = search(acceptData, kw, page, filter, order, startprice, endprice);
+ out.print(JsonUtil.loadTrueResult(data));
+ }
+
+ @Cacheable(value = "goodsCache", key = "#md5")
+ public JSONObject searchClass(AcceptData acceptData, String kw, int page, String filter, String order,
+ String startprice, String endprice, String md5) {
+ java.lang.System.out.println("searchClass");
+ JSONObject data = search(acceptData, kw, page, filter, order, startprice, endprice);
+ return data;
+ }
+
+ private JSONObject search(AcceptData acceptData, String kw, int page, String filter, String order, String startprice, String endprice) {
+ page = page + 1;
+
+ SearchFilter sf = new SearchFilter();
+ sf.setKey(SearchFilterUtil.filterSearchContent(kw));
+ sf.setPage(page);
+ sf.setSort(0);
+
+ if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(startprice)) {
+ sf.setStartPrice(new BigDecimal(startprice));
+ }
+
+ if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(endprice)) {
+ sf.setEndPrice(new BigDecimal(endprice));
+ }
+
+ if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(order)) {
+ if (Integer.parseInt(order) == 1) {
+ sf.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW);
+ } else if (Integer.parseInt(order) == 2) {
+ sf.setSort(TaoBaoUtil.SORT_PRICE_HIGH_TO_LOW);
+ } else if (Integer.parseInt(order) == 3) {
+ sf.setSort(TaoBaoUtil.SORT_PRICE_LOW_TO_HIGH);
+ }
+ } else {
+ // 榛樿閿�閲忎粠楂樺埌浣庢帓搴�
+ sf.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW);
+ }
+
+ if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(filter)) {
+ // 鏌ヨ娣樺疂澶╃尗
+ JSONArray array = JSONArray.fromObject(filter);
+ Set<String> params = new HashSet<String>();
+ for (int i = 0; i < array.size(); i++) {
+ // [{"type":'shoptype',id:12}]
+ String ty = array.optJSONObject(i).optString("type");
+ if ("shoptype".equalsIgnoreCase(ty)) {
+ if (array.optJSONObject(i).optInt("id") == 21) {
+ sf.setTmFlagship(false); // 涓嶇瓫锟�?
+ } else {
+ sf.setTmFlagship(true);
+ sf.setTmall(true);
+ sf.setShopTag("b2c");
+ }
+ } else if ("category".equalsIgnoreCase(ty)) {
+ sf.setCateIds(array.optJSONObject(i).optString("id"));
+ } else if ("userType".equalsIgnoreCase(ty)) {
+ // if(array.optJSONObject(i).optInt("id") == 51)
+ sf.setTmall(true);
+ // else
+ // sf.setTmall(false);
+ } else if ("baoyou".equalsIgnoreCase(ty)) {
+ // if(array.optJSONObject(i).optInt("id") == 61)
+ sf.setBaoYou(true);
+ // else
+ // sf.setBaoYou(false);
+ } else if ("quantype".equalsIgnoreCase(ty)) {
+ // if (array.optJSONObject(i).optInt("id") == 31){
+ sf.setQuan(1);
+ if (sf.isTmFlagship()) {
+ sf.setShopTag(sf.getShopTag() + ",dpyhq");
+ } else {
+ sf.setShopTag("dpyhq");
+ }
+ // }
+ // else
+ // sf.setQuan(2);
+ } else if ("hongbaotype".equalsIgnoreCase(ty)) {
+ if (array.optJSONObject(i).optInt("id") == 41)// 鏈夌孩锟�?
+ sf.setHongbao(1);
+ else// 鏃犵孩锟�?
+ sf.setHongbao(2);
+ } else if ("property".equalsIgnoreCase(ty)) {
+ String pid = (String) array.optJSONObject(i).opt("pid");
+ String id = (String) array.optJSONObject(i).opt("id");
+ boolean flag = false;
+ String str = null;
+ for (String string : params) {
+ flag = string.contains(pid + ":");
+ if (flag) {
+ str = string;
+ break;
+ }
+ }
+ if (flag) {
+ params.add(str + "," + id);
+ params.remove(str);
+ } else {
+ params.add(pid + ":" + id);
+ }
+ } else if ("fahuodi".equalsIgnoreCase(ty)) {
+ int id = array.optJSONObject(i).optInt("id");
+ sf.setProvinceId(id);
+ } else if ("materialId".equalsIgnoreCase(ty)) {
+ int id = array.optJSONObject(i).optInt("id");
+ sf.setProvinceId(id);
+ }
+ }
+ sf.setParams(params);
+ }
+ TaoBaoSearchResult result = TaoBaoUtil.search(sf, null, null);
+ if (result == null) {
+ return null;
+ }
+
+ List<TaoBaoSearchNav> navList = TaoBaoUtil.getBaseNav();
+ if (result.getNavList() != null)
+ navList.addAll(result.getNavList());
+ Gson gson = new GsonBuilder().create();
+ JSONObject data = new JSONObject();
+ data.put("nav", gson.toJson(navList));
+ List<TaoBaoGoodsBriefExtra> re = new ArrayList<TaoBaoGoodsBriefExtra>();
+ List<TaoBaoGoodsBrief> taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs();
+ int fq = sf.getQuan();
+ int fh = sf.getHongbao();
+ boolean ft = sf.isTmall();
+ BigDecimal proportion = manageService.getFanLiRate(acceptData.getSystem());
+ if (fq == 0 && fh == 0 && !ft) {
+ if (result != null && result.getTaoBaoGoodsBriefs() != null)
+ for (TaoBaoGoodsBrief bf : result.getTaoBaoGoodsBriefs()) {
+ int count = bf.getBiz30day();
+ if (count >= 10000) { // 瀵归攢閲忔暟鎹仛澶勭悊 椤甸潰灞曠ず7.3涓�
+ double sales = count;
+ String salesCountMidea = String.format("%.1f", sales / 10000);
+ bf.setSalesCount(salesCountMidea + "涓�");
+ re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion.toString(), ""));
+ } else {
+ bf.setSalesCount(count + "");
+ re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion.toString(), ""));
+ }
+ }
+ } else {
+ TaoBaoGoodsBriefExtra taoBaoGoodsBriefExtra;
+ if (taoBaoGoodsBriefs != null)
+ for (TaoBaoGoodsBrief taoBaoGoodsBrief : taoBaoGoodsBriefs) {
+ int count = taoBaoGoodsBrief.getBiz30day();
+ if (count >= 10000) {
+ double sales = count;
+ String salesCountMidea = String.format("%.1f", sales / 10000);
+ taoBaoGoodsBrief.setSalesCount(salesCountMidea + "涓�");
+ taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief,
+ proportion.toString(), "");
+ re.add(taoBaoGoodsBriefExtra);
+ } else {
+ taoBaoGoodsBrief.setSalesCount(count + "");
+ taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief,
+ proportion.toString(), "");
+ re.add(taoBaoGoodsBriefExtra);
+ }
+ }
+ }
+ Gson gson2 = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
+ .excludeFieldsWithoutExposeAnnotation().create();
+ data.put("result", gson2.toJson(re));
+ data.put("count", result.getTaoBaoHead().getDocsfound());
+ return data;
+ }
+
+ @RequestMapping(value = "suggestsearch", method = RequestMethod.POST)
+ public void getSugguestSearch(AcceptData acceptData, String kw, PrintWriter out) {
+ List<String> list = TaoBaoUtil.getSuguestSearch(kw);
+ if (list != null && list.size() > 0) {
+ JSONArray array = new JSONArray();
+ for (String st : list)
+ array.add(st);
+ out.print(JsonUtil.loadTrueResult(array));
+ } else {
+ out.print(JsonUtil.loadFalseResult("鏆傛棤寤鸿鍐呭"));
+ }
+ return;
+ }
+
+ private String getHistorySearchBid(AcceptData acceptData) {
+ StringBuffer sb = new StringBuffer();
+ String link = "#$$$#";
+ String platform = acceptData.getPlatform();
+ String packages = acceptData.getPackages();
+ String device = acceptData.getDevice();
+ sb.append(platform).append(link).append(packages).append(link).append(device);
+ return StringUtil.Md5(sb.toString());
+ }
+
+ /**
+ * 鎼滅储-鏂扮増
+ *
+ * @param acceptData
+ * @param kw
+ * @param page
+ * @param filter
+ * @param order 閿�閲忕敱楂樺埌浣�:1 銆� 浠锋牸浠庨珮鍒颁綆:2 銆� 浠锋牸浠庝綆鍒伴珮:3 銆� 鎺ㄥ箍閲忛珮鍒颁綆:4锛堢患鍚堥粯璁わ級銆佽繑鍒╂瘮楂樺埌浣�:5
+ * 銆佽繑鍒╂瘮浣庡埌楂�:6 銆佹帹鑽�20
+ * @param startprice
+ * @param endprice
+ * @param fastFilter
+ * @param out
+ */
+ @RequestMapping(value = "searchgoods")
+ public void searchgoods(AcceptData acceptData, String kw, Long uid, int page, String filter, String order, String startprice,
+ String endprice, Double startTkRate, Double endTkRate, String fastFilter, PrintWriter out) {
+
+ ThreadUtil.run(new Runnable() {
+ @Override
+ public void run() {
+ HistorySearch search = new HistorySearch();
+ search.setDevice(StringUtil.isNullOrEmpty(acceptData.getUtdid()) ? acceptData.getDevice() : acceptData.getUtdid());
+ search.setKey(kw);
+ search.setSystem(acceptData.getSystem());
+ search.setUid(uid);
+ historySearchService.addHistorySearch(search);
+ }
+ });
+
+ if (!StringUtil.isNullOrEmpty(kw) && (kw.startsWith("http://") || kw.startsWith("https://"))) {
+ JSONObject data = new JSONObject();
+ data.put("result", new JSONArray());
+ data.put("count", 0);
+ data.put("nav", new JSONArray());
+ out.print(JsonUtil.loadTrueResult(data));
+ return;
+ }
+
+ if (!StringUtil.isNullOrEmpty(fastFilter)) {
+ if (!StringUtil.isNullOrEmpty(filter)) {
+ JSONArray filterArray = JSONArray.fromObject(filter);
+ JSONArray fastFilterArray = JSONArray.fromObject(fastFilter);
+ filterArray.addAll(fastFilterArray);
+ filter = filterArray.toString();
+ } else {
+ filter = fastFilter;
+ }
+ }
+
+ // 鏄惁鏄帹鑽�
+ boolean recommend = false;
+ if (!StringUtil.isNullOrEmpty(fastFilter)) {
+ // 鏌ヨ娣樺疂澶╃尗
+ JSONArray array = JSONArray.fromObject(filter);
+ for (int i = 0; i < array.size(); i++) {
+ String ty = array.optJSONObject(i).optString("type");
+
+ if ("recommend".equalsIgnoreCase(ty)) {
+ recommend = true;
+ }
+ }
+ }
+
+ JSONObject data = null;
+ if (!recommend) {
+ // 娣樺疂鎺ュ彛璇锋眰
+ data = searchGoods(acceptData, kw, page, filter, order, startprice, endprice, acceptData.getSystem());
+ } else {
+ // 鎺ㄨ崘锛氱簿閫夊簱
+ // data = searchQualityGoods(kw, page, filter, order, startprice,
+ // endprice);
+ data = searchDaTaoKeGoods(acceptData, kw, page, filter, order, startprice, endprice);
+ }
+
+ // 鑾峰彇鎺ㄨ崘璇�
+ List<String> listRecommendWords = new ArrayList<String>();
+ // 缁煎悎 鏌ヨ绗竴椤垫椂鑾峰彇鍊欓�夎瘝
+ if (page == 0) {
+ listRecommendWords = TaoBaoUtil.getSuguestSearch(kw);
+ if (listRecommendWords == null || listRecommendWords.size() == 0) {
+ listRecommendWords = new ArrayList<String>();
+ }
+
+ List<TaoBaoShopVO> listShop = taoBaoShopService.getShopByKey(kw, acceptData.getSystem());
+ if (listShop != null && listShop.size() > 0 && listShop.get(0).getListGoods() != null
+ && listShop.get(0).getListGoods().size() > 2) {
+ data.put("shop", JsonUtil.getApiCommonGson().toJson(listShop.get(0)));
+ }
+ }
+
+ Gson gson = new GsonBuilder().create();
+ if (data != null)
+ data.put("words", gson.toJson(listRecommendWords));
+
+ out.print(JsonUtil.loadTrueResult(data));
+ }
+
+ /**
+ * 鎵ц鎼滅储-鏂扮増
+ *
+ * @param kw
+ * @param page
+ * @param filter
+ * @param order
+ * @param startprice
+ * @param endprice
+ * @return
+ */
+ private JSONObject searchGoods(AcceptData acceptData, String kw, int page, String filter, String order, String startprice,
+ String endprice, SystemEnum system) {
+ page = page + 1;
+
+ SearchFilter sf = new SearchFilter();
+ sf.setKey(SearchFilterUtil.filterSearchContent(kw));
+ sf.setPage(page);
+ sf.setSort(0);
+
+ if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(startprice)) {
+ sf.setStartPrice(new BigDecimal(startprice));
+ }
+
+ if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(endprice)) {
+ sf.setEndPrice(new BigDecimal(endprice));
+ }
+
+ if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(order)) {
+ if (Integer.parseInt(order) == 1) {
+ sf.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW);
+ } else if (Integer.parseInt(order) == 2) {
+ sf.setSort(TaoBaoUtil.SORT_PRICE_HIGH_TO_LOW);
+ } else if (Integer.parseInt(order) == 3) {
+ sf.setSort(TaoBaoUtil.SORT_PRICE_LOW_TO_HIGH);
+ } else if (Integer.parseInt(order) == 4) {
+ sf.setSort(TaoBaoUtil.SORT_TOTAL_SALES_HIGH_TO_LOW);
+ } else if (Integer.parseInt(order) == 5) {
+ sf.setSort(TaoBaoUtil.SORT_TKRATE_HIGH_TO_LOW);
+ } else if (Integer.parseInt(order) == 6) {
+ sf.setSort(TaoBaoUtil.SORT_TKRATE_LOW_TO_HIGH);
+ }
+ } else {
+ // 榛樿閿�閲忎粠楂樺埌浣庢帓搴�
+ sf.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW);
+ }
+
+ if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(filter)) {
+ // 鏌ヨ娣樺疂澶╃尗
+ JSONArray array = JSONArray.fromObject(filter);
+ Set<String> params = new HashSet<String>();
+ for (int i = 0; i < array.size(); i++) {
+ // [{"type":'shoptype',id:12}]
+ String ty = array.optJSONObject(i).optString("type");
+ if ("shoptype".equalsIgnoreCase(ty)) {
+ if (array.optJSONObject(i).optInt("id") == 21) {
+ sf.setTmFlagship(false); // 涓嶇瓫锟�?
+ } else {
+ sf.setTmFlagship(true);
+ sf.setTmall(true);
+ sf.setShopTag("b2c");
+ }
+ } else if ("category".equalsIgnoreCase(ty)) {
+ sf.setCateIds(array.optJSONObject(i).optString("id"));
+ } else if ("userType".equalsIgnoreCase(ty)) {
+ // if(array.optJSONObject(i).optInt("id") == 51)
+ sf.setTmall(true);
+ // else
+ // sf.setTmall(false);
+ } else if ("baoyou".equalsIgnoreCase(ty)) {
+ // if(array.optJSONObject(i).optInt("id") == 61)
+ sf.setBaoYou(true);
+ // else
+ // sf.setBaoYou(false);
+ } else if ("quantype".equalsIgnoreCase(ty)) {
+ // if (array.optJSONObject(i).optInt("id") == 31){
+ sf.setQuan(1);
+ if (sf.isTmFlagship()) {
+ sf.setShopTag(sf.getShopTag() + ",dpyhq");
+ } else {
+ sf.setShopTag("dpyhq");
+ }
+ // }
+ // else
+ // sf.setQuan(2);
+ } else if ("hongbaotype".equalsIgnoreCase(ty)) {
+ if (array.optJSONObject(i).optInt("id") == 41)// 鏈夌孩锟�?
+ sf.setHongbao(1);
+ else// 鏃犵孩锟�?
+ sf.setHongbao(2);
+ } else if ("property".equalsIgnoreCase(ty)) {
+ String pid = (String) array.optJSONObject(i).opt("pid");
+ String id = (String) array.optJSONObject(i).opt("id");
+ boolean flag = false;
+ String str = null;
+ for (String string : params) {
+ flag = string.contains(pid + ":");
+ if (flag) {
+ str = string;
+ break;
+ }
+ }
+ if (flag) {
+ params.add(str + "," + id);
+ params.remove(str);
+ } else {
+ params.add(pid + ":" + id);
+ }
+ } else if ("fahuodi".equalsIgnoreCase(ty)) {
+ int id = array.optJSONObject(i).optInt("id");
+ sf.setProvinceId(id);
+ } else if ("materialId".equalsIgnoreCase(ty)) {
+ int id = array.optJSONObject(i).optInt("id");
+ sf.setProvinceId(id);
+ } else if ("tkRate1".equalsIgnoreCase(ty)) {
+ setSearchTkRate(0, sf, system);
+ } else if ("tkRate2".equalsIgnoreCase(ty)) {
+ setSearchTkRate(1, sf, system);
+ } else if ("tkRate3".equalsIgnoreCase(ty)) {
+ setSearchTkRate(2, sf, system);
+ } else if ("tkRate4".equalsIgnoreCase(ty)) {
+ setSearchTkRate(3, sf, system);
+ } else if ("tkRate5".equalsIgnoreCase(ty)) {
+ setSearchTkRate(4, sf, system);
+ }
+ }
+ sf.setParams(params);
+ }
+
+ // 鎼滅储澶ф窐瀹�
+ List<DaTaoKeDetailV2> daTaoKeList = null;
+ if (page == 1)
+ daTaoKeList = daTaoKeGoodsDetailV2Service.listByDtitle(kw);
+
+ TaoBaoSearchResult result = TaoBaoUtil.search(sf, null, null);
+ if (result == null) {
+ return null;
+ }
+ // 鎼滅储鏄惁鍦ㄨ惀閿�涓诲晢鍝佸簱
+ if (result != null && result.getTaoBaoGoodsBriefs() != null && result.getTaoBaoGoodsBriefs().size() > 0) {
+ // 鏆傛椂鏀惧純鏇存柊鍒拌惀閿�鍟嗗搧搴�
+ // String numIds = "";
+ // for (TaoBaoGoodsBrief goods : result.getTaoBaoGoodsBriefs()) {
+ // numIds += goods.getAuctionId() + ",";
+ // }
+ // if (numIds.endsWith(","))
+ // numIds = numIds.substring(0, numIds.length() - 1);
+ // try {
+ // List<TaoBaoGoodsBrief> goodsList =
+ // TaoKeApiUtil.getBatchGoodsInfos(numIds);
+ // Map<Long, Integer> map = new HashMap<>();
+ // for (TaoBaoGoodsBrief g : goodsList)
+ // map.put(g.getAuctionId(), g.getMaterialLibType());
+ // for (TaoBaoGoodsBrief goods : result.getTaoBaoGoodsBriefs())
+ // goods.setMaterialLibType(map.get(goods.getAuctionId()));
+
+ ThreadUtil.run(new Runnable() {
+ @Override
+ public void run() {
+ // 鏇存柊鍒扮珐瀛�
+ for (TaoBaoGoodsBrief goods : result.getTaoBaoGoodsBriefs())
+ taoBaoGoodsCacheUtil.saveCommonTaoBaoGoodsInfo(goods);
+ }
+ });
+ // } catch (Exception e) {
+ // e.printStackTrace();
+ // }
+
+ }
+
+ List<TaoBaoSearchNav> navList = TaoBaoUtil.getBaseNav();
+ if (result.getNavList() != null)
+ navList.addAll(result.getNavList());
+ Gson gson = new GsonBuilder().create();
+ JSONObject data = new JSONObject();
+ data.put("nav", gson.toJson(navList));
+ List<TaoBaoGoodsBriefExtra> re = new ArrayList<TaoBaoGoodsBriefExtra>();
+ List<TaoBaoGoodsBrief> taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs();
+ if (taoBaoGoodsBriefs == null)
+ taoBaoGoodsBriefs = new ArrayList<>();
+
+ try {
+ if (daTaoKeList != null && daTaoKeList.size() > 0) {
+ Collections.reverse(daTaoKeList);
+ for (DaTaoKeDetailV2 detail : daTaoKeList) {
+ taoBaoGoodsBriefs.add(0, TaoBaoUtil.convert(detail));
+ }
+ }
+ } catch (Exception e) {
+ }
+
+ int fq = sf.getQuan();
+ int fh = sf.getHongbao();
+ boolean ft = sf.isTmall();
+ BigDecimal proportion = manageService.getFanLiRate(acceptData.getSystem());
+ if (fq == 0 && fh == 0 && !ft) {
+ if (result != null && taoBaoGoodsBriefs != null)
+ for (TaoBaoGoodsBrief bf : taoBaoGoodsBriefs) {
+ int count = bf.getBiz30day();
+ if (count >= 10000) { // 瀵归攢閲忔暟鎹仛澶勭悊 椤甸潰灞曠ず7.3涓�
+ double sales = count;
+ String salesCountMidea = String.format("%.1f", sales / 10000);
+ bf.setSalesCount(salesCountMidea + "涓�");
+ re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion.toString(), ""));
+ } else {
+ bf.setSalesCount(count + "");
+ re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion.toString(), ""));
+ }
+ }
+ } else {
+ TaoBaoGoodsBriefExtra taoBaoGoodsBriefExtra;
+ if (taoBaoGoodsBriefs != null)
+ for (TaoBaoGoodsBrief taoBaoGoodsBrief : taoBaoGoodsBriefs) {
+ int count = taoBaoGoodsBrief.getBiz30day();
+ if (count >= 10000) {
+ double sales = count;
+ String salesCountMidea = String.format("%.1f", sales / 10000);
+ taoBaoGoodsBrief.setSalesCount(salesCountMidea + "涓�");
+ taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief,
+ proportion.toString(), "");
+ re.add(taoBaoGoodsBriefExtra);
+ } else {
+ taoBaoGoodsBrief.setSalesCount(count + "");
+ taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief,
+ proportion.toString(), "");
+ re.add(taoBaoGoodsBriefExtra);
+ }
+ }
+ }
+ Gson gson2 = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
+ .excludeFieldsWithoutExposeAnnotation().create();
+ data.put("result", gson2.toJson(re));
+ data.put("count", result.getTaoBaoHead().getDocsfound());
+ return data;
+ }
+
+ /**
+ * 鎵ц鎼滅储绮鹃�夊簱
+ *
+ * @param key
+ * @param page
+ * @param filter
+ * @param order
+ * @param startprice
+ * @param endprice
+ * @return
+ */
+ private JSONObject searchQualityGoods(AcceptData acceptData, String key, int page, String filter, String order, String startprice,
+ String endprice, SystemEnum system) {
+
+ Integer hasQuan = null;
+ Integer userType = null;
+ Double start_Price = null;
+ Double end_Price = null;
+ Integer sort = null;
+ Double startTkRate = null;
+ Double endTkRate = null;
+
+ int provinceId = -100;
+
+ // 璧峰浠锋牸
+ if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(startprice)) {
+ start_Price = Double.parseDouble(startprice);
+ }
+ // 缁撴潫浠锋牸
+ if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(endprice)) {
+ end_Price = Double.parseDouble(endprice);
+ }
+
+ // 鎺掑簭
+ if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(order)) {
+
+ if (Integer.parseInt(order) == 4) {
+ sort = 20; // 缁煎悎鏃讹細閲囩敤榛樿鏉冮噸鎺掑簭
+ } else {
+ sort = Integer.parseInt(order);
+ }
+
+ }
+
+ /* 鍏朵粬绛涢�夋潯浠� */
+ if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(filter)) {
+ // 鏌ヨ娣樺疂澶╃尗
+ JSONArray array = JSONArray.fromObject(filter);
+ for (int i = 0; i < array.size(); i++) {
+ String ty = array.optJSONObject(i).optString("type");
+
+ if ("userType".equalsIgnoreCase(ty)) {
+ userType = 1; // 澶╃尗
+ } else if ("quantype".equalsIgnoreCase(ty)) {
+ hasQuan = 1; // 鏈夊埜
+ } else if ("hongbaotype".equalsIgnoreCase(ty)) {
+
+ } else if ("fahuodi".equalsIgnoreCase(ty)) {
+ provinceId = array.optJSONObject(i).optInt("id");
+ } else if ("tkRate1".equalsIgnoreCase(ty)) {
+ // 鑾峰彇瀵瑰簲鍙傛暟
+ String value = configService.getValue(ConfigKeyEnum.tkRateRange.getKey(), system);
+ if (!StringUtil.isNullOrEmpty(value)) {
+ JSONArray tkRatearray = JSONArray.fromObject(value);
+ if (tkRatearray != null) {
+ String start = tkRatearray.optJSONObject(0).optString("start");
+ if (!StringUtil.isNullOrEmpty(start)) {
+ startTkRate = Double.parseDouble(start);
+ }
+ String end = tkRatearray.optJSONObject(0).optString("end");
+ if (!StringUtil.isNullOrEmpty(end)) {
+ endTkRate = Double.parseDouble(end);
+ }
+ }
+ }
+ } else if ("tkRate2".equalsIgnoreCase(ty)) {
+ // 鑾峰彇瀵瑰簲鍙傛暟
+ String value = configService.getValue(ConfigKeyEnum.tkRateRange.getKey(), system);
+ if (!StringUtil.isNullOrEmpty(value)) {
+ JSONArray tkRatearray = JSONArray.fromObject(value);
+ if (tkRatearray != null) {
+ String start = tkRatearray.optJSONObject(1).optString("start");
+ if (!StringUtil.isNullOrEmpty(start)) {
+ startTkRate = Double.parseDouble(start);
+ }
+ String end = tkRatearray.optJSONObject(1).optString("end");
+ if (!StringUtil.isNullOrEmpty(end)) {
+ endTkRate = Double.parseDouble(end);
+ }
+ }
+ }
+ } else if ("tkRate3".equalsIgnoreCase(ty)) {
+ // 鑾峰彇瀵瑰簲鍙傛暟
+ String value = configService.getValue(ConfigKeyEnum.tkRateRange.getKey(), system);
+ if (!StringUtil.isNullOrEmpty(value)) {
+ JSONArray tkRatearray = JSONArray.fromObject(value);
+ if (tkRatearray != null) {
+ String start = tkRatearray.optJSONObject(2).optString("start");
+ if (!StringUtil.isNullOrEmpty(start)) {
+ startTkRate = Double.parseDouble(start);
+ }
+ String end = tkRatearray.optJSONObject(2).optString("end");
+ if (!StringUtil.isNullOrEmpty(end)) {
+ endTkRate = Double.parseDouble(end);
+ }
+ }
+ }
+ } else if ("tkRate4".equalsIgnoreCase(ty)) {
+ // 鑾峰彇瀵瑰簲鍙傛暟
+ String value = configService.getValue(ConfigKeyEnum.tkRateRange.getKey(), system);
+ if (!StringUtil.isNullOrEmpty(value)) {
+ JSONArray tkRatearray = JSONArray.fromObject(value);
+ if (tkRatearray != null) {
+ String start = tkRatearray.optJSONObject(3).optString("start");
+ if (!StringUtil.isNullOrEmpty(start)) {
+ startTkRate = Double.parseDouble(start);
+ }
+ String end = tkRatearray.optJSONObject(3).optString("end");
+ if (!StringUtil.isNullOrEmpty(end)) {
+ endTkRate = Double.parseDouble(end);
+ }
+ }
+ }
+ } else if ("tkRate5".equalsIgnoreCase(ty)) {
+ // 鑾峰彇瀵瑰簲鍙傛暟
+ String value = configService.getValue(ConfigKeyEnum.tkRateRange.getKey(), system);
+ if (!StringUtil.isNullOrEmpty(value)) {
+ JSONArray tkRatearray = JSONArray.fromObject(value);
+ if (tkRatearray != null) {
+ String start = tkRatearray.optJSONObject(4).optString("start");
+ if (!StringUtil.isNullOrEmpty(start)) {
+ startTkRate = Double.parseDouble(start);
+ }
+ String end = tkRatearray.optJSONObject(4).optString("end");
+ if (!StringUtil.isNullOrEmpty(end)) {
+ endTkRate = Double.parseDouble(end);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ int pageSize = Constant.PAGE_SIZE;
+
+ List<QualityFactory> listQuery = qualityGoodsService.listRecommendBykey(page * pageSize, pageSize, key, hasQuan,
+ userType, start_Price, end_Price, startTkRate, endTkRate, sort);
+
+ List<TaoBaoGoodsBriefExtra> listExtra = new ArrayList<TaoBaoGoodsBriefExtra>();
+ BigDecimal proportion = manageService.getFanLiRate(acceptData.getSystem());
+ /* 閬嶅巻鍒楄〃鏁版嵁 */
+ if (listQuery != null && listQuery.size() > 0) {
+ for (QualityFactory selectionGoods : listQuery) {
+
+ TaoBaoGoodsBrief taoBaoGoodsBrief = selectionGoods.getTaoBaoGoodsBrief();
+
+ if (taoBaoGoodsBrief == null) {
+ continue;
+ }
+
+ int biz30day = taoBaoGoodsBrief.getBiz30day();
+ if (biz30day >= 10000) {
+ double sales = biz30day;
+ String salesCountMidea = String.format("%.1f", sales / 10000);
+ taoBaoGoodsBrief.setSalesCount(salesCountMidea + "涓�");
+ } else {
+ taoBaoGoodsBrief.setSalesCount(biz30day + "");
+ }
+
+ // 鏀瑰彉鍥剧墖灏哄
+ String pictUrl = taoBaoGoodsBrief.getPictUrl();
+ if (!StringUtil.isNullOrEmpty(pictUrl) && !pictUrl.contains("320x320")) {
+ taoBaoGoodsBrief.setPictUrl(TbImgUtil.getTBSize320Img(pictUrl));
+ }
+
+ listExtra.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), null));
+ }
+ }
+
+ long count = qualityGoodsService.countRecommendBykey(key, hasQuan, userType, start_Price, end_Price,
+ startTkRate, endTkRate);
+
+ // 璁剧疆鍙戣揣鍦板潃
+ TaoBaoSearchNav nav = new TaoBaoSearchNav();
+ nav.setName("鍙戣揣鍦伴�夋嫨");
+ nav.setFlag("address");
+ nav.setId(11110);
+ nav.setType("fahuodi");
+
+ List<TaoBaoSearchNav> navList = new ArrayList<>();
+
+ List<TaoBaoSearchNav> childNavList = new ArrayList<>();
+ List<TaoBaoProvince> provinceList = TaoBaoUtil.getTaoBaoProvinceList();
+ for (TaoBaoProvince province : provinceList) {
+ TaoBaoSearchNav childNav = new TaoBaoSearchNav();
+ childNav.setName(province.getName());
+ childNav.setId(Integer.parseInt(province.getId()));
+ childNav.setType("fahuodi-child");
+ if (Integer.parseInt(province.getId()) == provinceId)
+ childNav.setSelector(1);
+ childNavList.add(childNav);
+ }
+
+ nav.setSubIds(childNavList);
+ navList.add(nav);
+
+ Gson gson = new GsonBuilder().create();
+ Gson gson2 = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
+ .excludeFieldsWithoutExposeAnnotation().create();
+
+ JSONObject data = new JSONObject();
+ data.put("nav", gson.toJson(navList));
+ data.put("result", gson2.toJson(listExtra));
+ data.put("count", count);
+
+ return data;
+ }
+
+ private JSONObject searchDaTaoKeGoods(AcceptData acceptData, String key, int page, String filter, String order, String startprice,
+ String endprice) {
+ page = page + 1;
+ int sort = DaTaoKeApiUtil.SORT_DEFAULT;
+ if ("5".equalsIgnoreCase(order)) {
+ sort = DaTaoKeApiUtil.SORT_COMMISSION;
+ } else if ("1".equalsIgnoreCase(order)) {
+ sort = DaTaoKeApiUtil.SORT_SALES;
+ } else if ("2".equalsIgnoreCase(order)) {
+ sort = DaTaoKeApiUtil.SORT_PRICE_HIGH_TO_LOW;
+ } else if ("3".equalsIgnoreCase(order)) {
+ sort = DaTaoKeApiUtil.SORT_PRICE_LOW_TO_HIGH;
+ }
+
+ List<TaoBaoGoodsBriefExtra> listExtra = new ArrayList<TaoBaoGoodsBriefExtra>();
+ BigDecimal proportion = manageService.getFanLiRate(acceptData.getSystem());
+
+ DaTaoKeGoodsResult result = DaTaoKeApiUtil.search(key, null, null, null, page, 20, sort);
+ if (result != null && result.getGoodsList() != null)
+ for (DaTaoKeDetailV2 goods : result.getGoodsList()) {
+ listExtra.add(
+ TaoBaoUtil.getTaoBaoGoodsBriefExtra(TaoBaoUtil.convert(goods), proportion.toString(), null));
+ }
+
+ List<TaoBaoSearchNav> navList = new ArrayList<>();
+ Gson gson = new GsonBuilder().create();
+ Gson gson2 = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
+ .excludeFieldsWithoutExposeAnnotation().create();
+
+ JSONObject data = new JSONObject();
+ data.put("nav", gson.toJson(navList));
+ data.put("result", gson2.toJson(listExtra));
+ data.put("count", result.getTotalCount());
+
+ return data;
+ }
+
+ /**
+ * 璁剧疆鏌ヨ浣i噾姣斾緥鑼冨洿
+ *
+ * @param i
+ * @param sf
+ */
+ public void setSearchTkRate(int i, SearchFilter sf, SystemEnum system) {
+ // 鑾峰彇瀵瑰簲鍙傛暟
+ String value = configService.getValue(ConfigKeyEnum.tkRateRange.getKey(), system);
+
+ if (!StringUtil.isNullOrEmpty(value)) {
+
+ JSONArray tkRatearray = JSONArray.fromObject(value);
+
+ if (tkRatearray != null) {
+
+ String start = tkRatearray.optJSONObject(i).optString("start");
+
+ if (!StringUtil.isNullOrEmpty(start)) {
+ int tkRate = (int) (Float.parseFloat(start) * 100);
+ sf.setStartTkRate(tkRate);
+ }
+
+ String end = tkRatearray.optJSONObject(i).optString("end");
+ if (!StringUtil.isNullOrEmpty(end)) {
+ int tkRate = (int) (Float.parseFloat(end) * 100);
+ sf.setEndTkRate(tkRate);
+ }
+ }
+
+ }
+ }
+}
--
Gitblit v1.8.0