From 30d8e227e8d823b6c38c3b9c90ac2df03b63befe Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 25 二月 2025 16:41:22 +0800 Subject: [PATCH] 淘宝转链接口更新 --- fanli/src/main/java/com/yeshi/fanli/controller/client/v2/SearchControllerV2.java | 2857 ++++++++++++++++++++++++++++++++++------------------------ 1 files changed, 1,677 insertions(+), 1,180 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/SearchControllerV2.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/SearchControllerV2.java index 24575f2..bbabc4e 100644 --- a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/SearchControllerV2.java +++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/SearchControllerV2.java @@ -1,1180 +1,1677 @@ -package com.yeshi.fanli.controller.client.v2; - -import java.io.PrintWriter; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import javax.annotation.Resource; -import javax.servlet.http.HttpSession; - -import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService; -import org.springframework.core.task.TaskExecutor; -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; -import com.google.gson.GsonBuilder; -import com.yeshi.fanli.dto.ConfigParamsDTO; -import com.yeshi.fanli.dto.jd.JDFilter; -import com.yeshi.fanli.dto.jd.JDSearchFilter; -import com.yeshi.fanli.dto.jd.JDSearchResult; -import com.yeshi.fanli.dto.pdd.PDDGoodsDetail; -import com.yeshi.fanli.dto.pdd.PDDGoodsResult; -import com.yeshi.fanli.dto.pdd.PDDSearchFilter; -import com.yeshi.fanli.dto.suning.SuningCommodityInfo; -import com.yeshi.fanli.dto.suning.SuningGoodsInfo; -import com.yeshi.fanli.dto.suning.SuningQueryModel; -import com.yeshi.fanli.dto.vip.VIPSearchFilter; -import com.yeshi.fanli.dto.vip.VIPSearchResult; -import com.yeshi.fanli.dto.vip.goods.VIPGoodsInfo; -import com.yeshi.fanli.entity.accept.AcceptData; -import com.yeshi.fanli.entity.bus.help.AppPageNotification; -import com.yeshi.fanli.entity.goods.CommonGoods; -import com.yeshi.fanli.entity.jd.JDGoods; -import com.yeshi.fanli.entity.system.ConfigKeyEnum; -import com.yeshi.fanli.entity.taobao.SearchFilter; -import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief; -import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult; -import com.yeshi.goods.facade.entity.taobao.dataoke.DaTaoKeDetailV2; -import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; -import com.yeshi.fanli.exception.user.TokenRecordException; -import com.yeshi.fanli.service.inter.brand.BrandInfoService; -import com.yeshi.fanli.service.inter.common.JumpDetailV2Service; -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.help.AppPageNotificationService; -import com.yeshi.fanli.service.inter.lable.QualityGoodsService; -import com.yeshi.fanli.service.inter.lable.TaoKeGoodsService; -import com.yeshi.fanli.service.inter.order.OrderHongBaoMoneyComputeService; -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.service.inter.user.TokenRecordService; -import com.yeshi.fanli.service.inter.user.integral.IntegralGetService; -import com.yeshi.fanli.service.manger.ClipboardAnalysisManager; -import com.yeshi.fanli.service.manger.IClipboardAnalysisResult; -import com.yeshi.fanli.service.manger.goods.jd.JDGoodsLinkParseManager; -import com.yeshi.common.entity.PageEntity; -import com.yeshi.fanli.util.Constant; -import com.yeshi.fanli.util.StringUtil; -import com.yeshi.fanli.util.ThreadUtil; -import com.yeshi.fanli.util.VersionUtil; -import com.yeshi.fanli.util.annotation.RequestSerializableByKey; -import com.yeshi.fanli.util.cache.IntegralGetCacheManager; -import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil; -import com.yeshi.fanli.util.factory.CommonGoodsFactory; -import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory; -import com.yeshi.fanli.util.jd.JDApiUtil; -import com.yeshi.fanli.util.jd.JDUtil; -import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil; -import com.yeshi.fanli.util.pinduoduo.PinDuoDuoUtil; -import com.yeshi.fanli.util.suning.SuningApiUtil; -import com.yeshi.fanli.util.taobao.SearchFilterUtil; -import com.yeshi.fanli.util.taobao.TaoBaoUtil; -import com.yeshi.fanli.util.taobao.TaoKeApiUtil; -import com.yeshi.fanli.util.vipshop.VipShopApiUtil; -import com.yeshi.fanli.vo.brand.BrandInfoVO; -import com.yeshi.fanli.vo.brand.TaoBaoShopVO; -import com.yeshi.fanli.vo.common.JumpDetailContentVO; -import com.yeshi.fanli.vo.goods.GoodsDetailVO; -import com.yeshi.fanli.vo.msg.TokenVO; -import com.yeshi.fanli.vo.recommend.RecommendJumpInfoVO; -import com.yeshi.fanli.vo.search.GoodsDocParseResultVO; - -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; - -@Controller -@RequestMapping("api/v2/search") -public class SearchControllerV2 { - - @Resource - private ConfigService configService; - - @Resource - private HistorySearchService historySearchService; - - @Resource - private TaoBaoGoodsCacheUtil taoBaoGoodsCacheUtil; - - @Resource - private TaoBaoShopService taoBaoShopService; - - @Resource - private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service; - - @Resource(name = "taskExecutor") - private TaskExecutor executor; - - @Resource - private TokenRecordService tokenRecordService; - - @Resource - private IntegralGetService integralGetService; - - @Resource - private IntegralGetCacheManager integralGetCacheManager; - - @Resource - private BrandInfoService brandInfoService; - - @Resource - private ClipboardAnalysisManager clipboardAnalysisManager; - - @Resource - private JumpDetailV2Service jumpDetailV2Service; - - @Resource - private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService; - - @Resource - private AppPageNotificationService appPageNotificationService; - - @Resource - private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService; - - /** - * 绮樿创鏉夸俊鎭帹鑽� - * - * @param acceptData - * @param text - * @param uid - * @param out - */ - @RequestMapping(value = "getRecommendInfo", method = RequestMethod.POST) - public void getRecommendInfo(AcceptData acceptData, String text, Long uid, PrintWriter out) { - if (StringUtil.isNullOrEmpty(text)) { - out.print(JsonUtil.loadFalseResult("鍊间负绌�")); - return; - } - // 鍘婚櫎鍓嶅悗绌烘牸 - text = text.trim(); - String originalText = text; - - JSONObject data = new JSONObject(); - - clipboardAnalysisManager.parse(acceptData.getPlatform(), acceptData.getVersion(), originalText, uid, - new IClipboardAnalysisResult() { - - @Override - public void onResult(GoodsDocParseResultVO result) { - if (uid == null) { - out.print(JsonUtil.loadFalseResult("鏃犳帹鑽�")); - return; - } - - JSONObject root = new JSONObject(); - root.put("type", 20); - JSONObject data = new JSONObject(); - data.put("text", originalText); - // - int platformCode = Constant.getPlatformCode(acceptData.getPlatform()); - int version = Integer.parseInt(acceptData.getVersion()); - JumpDetailContentVO convert = new JumpDetailContentVO(); - convert.setJumpDetail(jumpDetailV2Service.getByTypeCache("web", platformCode, version)); - JSONObject convertParams = new JSONObject(); - convertParams.put("url", configService.getValue(ConfigKeyEnum.convertDocWebLink.getKey(), acceptData.getSystem())); - convertParams.put("clipboard", false); - convert.setParams(convertParams); - - JumpDetailContentVO view = null; - JumpDetailContentVO guessLike = null; - - Gson gson = JsonUtil.getApiCommonGson(); - data.put("title", "鏅鸿兘鎼滅储"); - - int state = 0; - if (result.getFirstGoods() != null && result.getFirstGoods().getGoodsId() != null) { - state = 2; - data.put("stateDesc", "閫夋嫨鎼滃埜鎴栬浆閾�"); - JSONObject params = new JSONObject(); - params.put("id", result.getFirstGoods().getGoodsId() + ""); - params.put("from", "杞摼"); - if (result.getFirstGoods().getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) { - view = new JumpDetailContentVO(); - view.setJumpDetail( - jumpDetailV2Service.getByTypeCache("goodsdetail", platformCode, version)); - view.setParams(params); - } else if (result.getFirstGoods().getGoodsType() == Constant.SOURCE_TYPE_JD) { - view = new JumpDetailContentVO(); - view.setJumpDetail( - jumpDetailV2Service.getByTypeCache("goodsdetail_jd", platformCode, version)); - view.setParams(params); - } else if (result.getFirstGoods().getGoodsType() == Constant.SOURCE_TYPE_PDD) { - view = new JumpDetailContentVO(); - view.setJumpDetail( - jumpDetailV2Service.getByTypeCache("goodsdetail_pdd", platformCode, version)); - view.setParams(params); - } - - } else if (!StringUtil.isNullOrEmpty(result.getFirstLink())) { - state = 2; - data.put("stateDesc", "閫夋嫨鎼滃埜鎴栬浆閾�"); - view = new JumpDetailContentVO(); - view.setJumpDetail(jumpDetailV2Service.getByTypeCache("web", platformCode, version)); - JSONObject params = new JSONObject(); - params.put("url", result.getFirstLink()); - view.setParams(params); - } else { - data.put("stateDesc", "鍘昏瘯璇曡浆閾�"); - state = 1; - } - data.put("state", state); - if (convert != null) - data.put("convert", gson.toJson(convert)); - if (view != null) - data.put("view", gson.toJson(view)); - - if (guessLike != null) - data.put("guessLike", gson.toJson(guessLike)); - - root.put("data", data); - out.print(JsonUtil.loadTrueResult(root)); - return; - } - - @Override - public void onResult(String result) { - JSONObject root = new JSONObject(); - root.put("type", 2); - JSONObject data = new JSONObject(); - data.put("title", result); - root.put("data", data); - out.print(JsonUtil.loadTrueResult(root)); - return; - } - - @Override - public void onResult(CommonGoods goods) { - if (goods.getGoodsId() != null) { - if (VersionUtil.greaterThan_1_6_5(acceptData.getPlatform(), acceptData.getVersion())) {// 1.6.5鐗堟湰鍚庤繑鍥炲晢鍝佽鎯� - if (goods.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) { - TaoBaoGoodsBrief goodsBrief = null; - String specialId = userExtraTaoBaoInfoService.getSpecialIdByUid(uid); - try { - goodsBrief = TaoKeApiUtil.searchGoodsDetail(goods.getGoodsId(),specialId,null); - } catch (TaobaoGoodsDownException e) { - e.printStackTrace(); - } - - if (goodsBrief != null) { - goods = CommonGoodsFactory.create(goodsBrief); - Gson gson = JsonUtil - .getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) - .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd") - .create(); - data.put("type", 3); - data.put("goods", - gson.toJson( - GoodsDetailVOFactory.convertCommonGoods(goods, - orderHongBaoMoneyComputeService.getShowComputeRate( - acceptData.getPlatform(), - acceptData.getVersion(), acceptData.getSystem())))); - // 璺宠浆璇︽儏 - if (VersionUtil.greaterThan_2_1_3(acceptData.getPlatform(), - acceptData.getVersion())) { - buildGoodsClick(data, goods, acceptData, gson); - } - - out.print(JsonUtil.loadTrueResult(data)); - return; - } - } else { - Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) - .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd") - .create(); - data.put("type", 3); - data.put("goods", - gson.toJson( - GoodsDetailVOFactory.convertCommonGoods(goods, - orderHongBaoMoneyComputeService.getShowComputeRate( - acceptData.getPlatform(), - acceptData.getVersion(), acceptData.getSystem())))); - // if - // (VersionUtil.greaterThan_2_1_2(acceptData.getPlatform(), - // acceptData.getVersion())) { - // buildGoodsClick(data, goods, acceptData, - // gson); - // } - out.print(JsonUtil.loadTrueResult(data)); - return; - } - } else { - // 浣庝簬1.6.5鐗堟湰 - JSONObject taoBaoGoodsJSON = new JSONObject(); - taoBaoGoodsJSON.put("title", goods.getTitle()); - taoBaoGoodsJSON.put("zkPrice", goods.getPrice() + ""); - taoBaoGoodsJSON.put("id", goods.getGoodsId()); - taoBaoGoodsJSON.put("goodsType", goods.getGoodsType()); - if (goods.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) { - taoBaoGoodsJSON.put("url", - "http://item.taobao.com/item.htm?id=" + goods.getGoodsId()); - } else if (goods.getGoodsType() == Constant.SOURCE_TYPE_JD) { - taoBaoGoodsJSON.put("url", - String.format("https://item.jd.com/%s.html", goods.getGoodsId() + "")); - } else if (goods.getGoodsType() == Constant.SOURCE_TYPE_PDD) { - taoBaoGoodsJSON.put("url", - "http://yangkeduo.com/goods.html?goods_id=" + goods.getGoodsId()); - } - data.put("goods", taoBaoGoodsJSON); - List<String> picList = new ArrayList<>(); - picList.add(goods.getPicture()); - data.put("imgs", picList); - JSONObject root = new JSONObject(); - root.put("type", 1); - root.put("data", data); - out.print(JsonUtil.loadTrueResult(root)); - return; - } - } - - JSONObject goodsJSON = new JSONObject(); - goodsJSON.put("title", goods.getTitle()); - goodsJSON.put("pictUrl", goods.getPicture()); - - data.put("type", 4); - data.put("desc", "璇ュ晢鍝佹棤鎺ㄥ箍淇℃伅"); - data.put("goods", goodsJSON); - out.print(JsonUtil.loadTrueResult(data)); - return; - } - - @Override - public void onResult(TokenVO tokenVO) { - out.print(JsonUtil.loadTrueResult(tokenVO)); - return; - } - - @Override - public void none() { - out.print(JsonUtil.loadFalseResult("鏃犳帹鑽�")); - } - - @Override - public void needLogin(String msg) { - out.print(JsonUtil.loadFalseResult(1001, msg)); - } - }); - } - - private void buildGoodsClick(JSONObject data, CommonGoods goods, AcceptData acceptData, Gson gson) { - - JSONObject params = new JSONObject(); - params.put("id", goods.getGoodsId() + ""); - params.put("from", "鐚滀綘鍠滄"); - - String type = ""; - switch (goods.getGoodsType()) { - case Constant.SOURCE_TYPE_TAOBAO: - type = "goodsdetail"; - break; - case Constant.SOURCE_TYPE_JD: - type = "goodsdetail_jd"; - break; - case Constant.SOURCE_TYPE_PDD: - type = "goodsdetail_pdd"; - break; - case Constant.SOURCE_TYPE_VIP: - type = "goodsdetail_vip"; - break; - case Constant.SOURCE_TYPE_SUNING: - type = "goodsdetail_suning"; - break; - - } - - RecommendJumpInfoVO left = new RecommendJumpInfoVO("鍘荤湅鐪�", jumpDetailV2Service.getByTypeCache(type, - Constant.getPlatformCode(acceptData.getPlatform()), Integer.parseInt(acceptData.getVersion())), params); - data.put("left", gson.toJson(left)); - - // 鍘荤綉椤� - String rightValue = configService.getByVersion(ConfigKeyEnum.clipboardRecommendGoodsMakeMore.getKey(), - acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion()), acceptData.getSystem()); - - if (StringUtil.isNullOrEmpty(rightValue)) { - data.remove("left"); - } else { - params = new JSONObject(); - params.put("url", rightValue); - - RecommendJumpInfoVO right = new RecommendJumpInfoVO("鏈夋洿楂樿繑鍒╋紵", jumpDetailV2Service.getByTypeCache("web", - Constant.getPlatformCode(acceptData.getPlatform()), Integer.parseInt(acceptData.getVersion())), - params); - data.put("right", gson.toJson(right)); - } - } - - /** - * 鍙d护棰嗗彇 - * - * @param acceptData - * @param uid - * @param token - * @param out - */ - @RequestSerializableByKey(key = "'tokenReceive-'+#uid") - @RequestMapping(value = "tokenReceive", method = RequestMethod.POST) - public void tokenReceive(AcceptData acceptData, Long uid, String token, PrintWriter out) { - try { - String msg = tokenRecordService.receiveToken(token, uid, acceptData); - out.print(JsonUtil.loadTrueResult(msg)); - } catch (TokenRecordException e) { - out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg())); - } - } - - /** - * 鎼滅储鍊欓�夎瘝 - * - * @param acceptData - * @param kw - * @param out - */ - @RequestMapping(value = "suggestSearch", method = RequestMethod.POST) - public void getSugguestSearch(AcceptData acceptData, String kw, Integer goodsType, PrintWriter out) { - if (goodsType == null) { - out.print(JsonUtil.loadFalseResult("骞冲彴绫诲瀷涓嶈兘涓虹┖")); - return; - } - - List<String> list = null; - if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { - list = TaoBaoUtil.getSuguestSearch(kw); - } else if (goodsType == Constant.SOURCE_TYPE_JD) { - list = JDUtil.suggestSearch(kw); - } else if (goodsType == Constant.SOURCE_TYPE_PDD) { - list = PinDuoDuoUtil.suggestSearch(kw); - } - - if (list == null || list.size() == 0) { - out.print(JsonUtil.loadFalseResult("鏆傛棤寤鸿鍐呭")); - return; - } - - JSONArray array = new JSONArray(); - for (String words : list) { - array.add(words); - } - out.print(JsonUtil.loadTrueResult(array)); - } - - /** - * @param acceptData - * @param goodsType - * @param key - * @param page - * @param filter - * @param order 閿�閲忕敱楂樺埌浣�:1 銆� 浠锋牸浠庨珮鍒颁綆:2 銆� 浠锋牸浠庝綆鍒伴珮:3 銆� 鎺ㄥ箍閲忛珮鍒颁綆:4锛堢患鍚堥粯璁わ級銆佽繑鍒╂瘮楂樺埌浣�:5 - * * 銆佽繑鍒╂瘮浣庡埌楂�:6 銆佹帹鑽�20 - * @param uid - * @param notifyType - * @param session - * @param out - */ - @RequestMapping(value = "searchGoods") - public void searchGoods(AcceptData acceptData, Integer goodsType, String key, Integer page, String filter, - Integer order, Long uid, String notifyType, HttpSession session, PrintWriter out) { - - if (goodsType == null || goodsType < 1 || goodsType > 5) { - out.print(JsonUtil.loadFalseResult(1, "璇蜂紶閫掓纭钩鍙板弬鏁�")); - return; - } - - if (page == null || page < 1) { - out.print(JsonUtil.loadFalseResult(1, "椤电爜涓嶈兘灏忎簬1")); - return; - } - - if (StringUtil.isNullOrEmpty(key)) { - out.print(JsonUtil.loadFalseResult(1, "璇疯緭鍏ユ悳绱㈠唴瀹�")); - return; - } - final String searchkey = key.trim(); - - if (uid != null) { - if (page == 1) { - integralGetCacheManager.cacheSearchGoods(acceptData.getDevice(), System.currentTimeMillis()); - } else if (page > 1) { - Long lastTime = integralGetCacheManager.getLastSearchTime(acceptData.getDevice()); - if (lastTime != null && System.currentTimeMillis() - lastTime >= 15 * 1000L) {// 瓒呰繃15s娴忚 - integralGetCacheManager.clearSearchTime(acceptData.getDevice()); - ThreadUtil.run(new Runnable() { - @Override - public void run() { - // 澧炲姞閲戝竵 - integralGetService.addSearchResultScan(uid, key); - } - }); - } - } - } - - executor.execute(new Runnable() { - @Override - public void run() { - 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); - String bid = StringUtil.Md5(sb.toString()); - - // 鍔犲叆鎼滅储鍘嗗彶璁板綍 - historySearchService.addHistorySearch(searchkey, bid); - } - }); - - if (searchkey.startsWith("http://") || searchkey.startsWith("https://")) { - JSONObject data = new JSONObject(); - data.put("result", new JSONArray()); - data.put("count", 0); - out.print(JsonUtil.loadTrueResult(data)); - return; - } - AppPageNotification ap = null; - if (page == 1) { - ap = appPageNotificationService.getValidNotificationByTypeCache(notifyType, acceptData.getPlatform(), - Integer.parseInt(acceptData.getVersion()), acceptData.getSystem()); - // 娌℃湁閫氱煡 - if (ap == null || !ap.getShow()) { - ap = null; - } - - // else {// 鏈夐�氱煡 - // Gson gson = new - // GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); - // out.print(JsonUtil.loadTrueResult(gson.toJson(ap))); - // } - } - - /*--------- 浜笢鍟嗗搧 -------*/ - if (goodsType.intValue() == Constant.SOURCE_TYPE_JD) { - searchJDGoods(acceptData, searchkey, page, filter, order, ap, out); - return; - } - - /*-------- 鎷煎澶氬晢鍝� -------*/ - if (goodsType.intValue() == Constant.SOURCE_TYPE_PDD) { - searchPDDGoods(acceptData, searchkey, page, filter, order, ap, out); - return; - } - - /*-------- 鍞搧浼氬晢鍝� ------*/ - if (goodsType.intValue() == Constant.SOURCE_TYPE_VIP) { - searchVIPGoods(acceptData, searchkey, page, filter, order, ap, out); - return; - } - - /*-------- 鑻忓畞鍟嗗搧 ------*/ - if (goodsType.intValue() == Constant.SOURCE_TYPE_SUNING) { - searchSuningGoods(acceptData, searchkey, page, filter, order, ap, out); - return; - } - - /*-------- 娣樺疂鍟嗗搧 -------*/ - searchTaoBaoGoods(acceptData, uid, searchkey, page, filter, order, ap, out); - - } - - /** - * 鎵ц鎼滅储-鏂扮増 - * - * @param acceptData - * @param uid - * @param key - * @param page - * @param filter - * @param order - * @param ap - * @param out - */ - private void searchTaoBaoGoods(AcceptData acceptData, Long uid, String key, Integer page, String filter, Integer order, - AppPageNotification ap, PrintWriter out) { - SearchFilter sf = new SearchFilter(); - sf.setKey(SearchFilterUtil.filterSearchContent(key)); - sf.setPage(page); - sf.setPageSize(Constant.PAGE_SIZE); - - if (order != null) { - if (order == 1) { // 閿�閲忛珮鍒颁綆 - sf.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW); - } else if (order == 2) { // 浠锋牸楂樺埌浣� - sf.setSort(TaoBaoUtil.SORT_PRICE_HIGH_TO_LOW); - } else if (order == 3) { // 浠锋牸浣庡埌楂� - sf.setSort(TaoBaoUtil.SORT_PRICE_LOW_TO_HIGH); - } else if (order == 4) { // 杩斿埄姣旈珮鍒颁綆 - sf.setSort(TaoBaoUtil.SORT_TKRATE_HIGH_TO_LOW); - } - } - - if (!StringUtil.isNullOrEmpty(filter)) { - JSONObject jsonfilter = JSONObject.fromObject(filter); - Boolean coupon = jsonfilter.optBoolean("coupon"); - if (coupon != null && coupon) { - sf.setQuan(1); // 鏈夊埜 - } - - Boolean tmall = jsonfilter.optBoolean("tmall"); - if (tmall != null && tmall) { - sf.setTmall(true); // 澶╃尗 - } - - String minPrice = jsonfilter.optString("minPrice"); - if (!StringUtil.isNullOrEmpty(minPrice)) { - sf.setStartPrice(new BigDecimal(minPrice)); - } - - String maxPrice = jsonfilter.optString("maxPrice"); - if (!StringUtil.isNullOrEmpty(maxPrice)) { - sf.setEndPrice(new BigDecimal(maxPrice)); - } - } - - // 鎼滅储澶ф窐瀹� - List<DaTaoKeDetailV2> daTaoKeList = null; - if (page == 1) { - daTaoKeList = daTaoKeGoodsDetailV2Service.listByDtitle(key); - } - - String specialId = null; - if (uid != null) { - specialId = userExtraTaoBaoInfoService.getSpecialIdByUid(uid); - } - - // 娣樺疂api鎼滅储鍟嗗搧 - TaoBaoSearchResult result = TaoBaoUtil.search(sf, specialId, null); - - // 鎼滅储缁撴灉缂撳瓨鍒皉edis - if (result != null && result.getTaoBaoGoodsBriefs() != null && result.getTaoBaoGoodsBriefs().size() > 0) { - ThreadUtil.run(new Runnable() { - @Override - public void run() { - // 鏇存柊鍒扮珐瀛� - for (TaoBaoGoodsBrief goods : result.getTaoBaoGoodsBriefs()) - taoBaoGoodsCacheUtil.saveCommonTaoBaoGoodsInfo(goods); - } - }); - } - - List<TaoBaoGoodsBrief> taoBaoGoodsBriefs = null; - if (result != null) { - taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs(); - } - if (taoBaoGoodsBriefs == null) { - taoBaoGoodsBriefs = new ArrayList<>(); - } - - if (daTaoKeList != null && daTaoKeList.size() > 0) { - try { - Collections.reverse(daTaoKeList); - for (DaTaoKeDetailV2 detail : daTaoKeList) { - taoBaoGoodsBriefs.add(0, TaoBaoUtil.convert(detail)); - } - } catch (Exception e) { - } - } - - List<GoodsDetailVO> list = new ArrayList<GoodsDetailVO>(); - ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), - acceptData.getVersion(), acceptData.getSystem()); - - for (TaoBaoGoodsBrief goods : taoBaoGoodsBriefs) { - list.add(GoodsDetailVOFactory.convertTaoBao(goods, paramsDTO)); - } - - Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) - .excludeFieldsWithoutExposeAnnotation().create(); - - JSONObject data = new JSONObject(); - data.put("result", gson.toJson(list)); - data.put("count", result.getTaoBaoHead().getDocsfound()); - - if (page == 1) { // 绗竴椤佃繑鍥炲簵閾轰俊鎭� - String platform = acceptData.getPlatform(); - String version = acceptData.getVersion(); - if (("ios".equalsIgnoreCase(platform) && VersionUtil.greaterThan_2_0_5(platform, version)) - || ("android".equalsIgnoreCase(platform) && VersionUtil.greaterThan_2_0_2(platform, version))) { - BrandInfoVO brandInfoVO = null; - try { - brandInfoVO = brandInfoService.listByAlikeName(key, acceptData.getPlatform(), - acceptData.getVersion(), acceptData.getSystem()); - } catch (Exception e) { - } - if (brandInfoVO != null) - data.put("shop", JsonUtil.getApiCommonGson().toJson(brandInfoVO)); - } else { - List<TaoBaoShopVO> listShop = taoBaoShopService.getShopByKeyV2(key, acceptData.getPlatform(), - acceptData.getVersion(), acceptData.getSystem()); - if (listShop != null && listShop.size() > 0 && listShop.get(0).getListGoodsVO() != null - && listShop.get(0).getListGoodsVO().size() > 2) { - TaoBaoShopVO taoBaoShop = listShop.get(0); - if (("ios".equalsIgnoreCase(platform) && VersionUtil.greaterThan_2_0(platform, version)) - || ("android".equalsIgnoreCase(platform) - && VersionUtil.greaterThan_2_0_1(platform, version))) { - BrandInfoVO brandInfoVO = new BrandInfoVO(); - brandInfoVO.setId(taoBaoShop.getId()); - brandInfoVO.setName(taoBaoShop.getShopName()); - brandInfoVO.setIcon(taoBaoShop.getShopIcon()); - brandInfoVO.setListGoods(taoBaoShop.getListGoodsVO()); - data.put("shop", JsonUtil.getApiCommonGson().toJson(brandInfoVO)); - } else { - data.put("shop", JsonUtil.getApiCommonGson().toJson(taoBaoShop)); - } - } - } - } - - out.print(JsonUtil.loadTrueResult(buildSearchResult(data, ap))); - } - - private JSONObject buildSearchResult(JSONObject data, AppPageNotification ap) { - if (ap != null && data != null) { - Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); - data.put("notification", gson.toJson(ap)); - } - return data; - } - - /** - * @param acceptData - * @param key - * @param page - * @param filter - * @param order - * @param ap - * @param out - */ - private void searchJDGoods(AcceptData acceptData, String key, Integer page, String filter, Integer order, - AppPageNotification ap, PrintWriter out) { - - JDSearchResult result = null; - boolean hasCoupon = false; - String way = configService.getValue(ConfigKeyEnum.jdApiSearchKey.getKey(), acceptData.getSystem()); - if ("1".equals(way)) { - JDFilter filterAPI = new JDFilter(); - filterAPI.setKeyword(SearchFilterUtil.filterSearchContent(key)); - filterAPI.setPageIndex(page); - filterAPI.setPageSize(Constant.PAGE_SIZE); - - if (order != null) { - int sort = order.intValue(); - switch (sort) { - case 1: // 閿�閲� desc - filterAPI.setSort(JDFilter.SORT_DESC); - filterAPI.setSortName(JDFilter.SORTNAME_ORDER_COUNT_30DAYS); - break; - case 2: // 浠锋牸鈥攄esc - filterAPI.setSort(JDFilter.SORT_DESC); - filterAPI.setSortName(JDFilter.SORTNAME_PRICE); - break; - case 3: // 浠锋牸鈥攁sc - filterAPI.setSort(JDFilter.SORT_ASC); - filterAPI.setSortName(JDFilter.SORTNAME_PRICE); - break; - case 4: // 杩斿埄姣斺�擠ESC - filterAPI.setSort(JDFilter.SORT_DESC); - filterAPI.setSortName(JDFilter.SORTNAME_COMMISSION_SHARE); - break; - default: - break; - } - } - - if (!StringUtil.isNullOrEmpty(filter)) { - JSONObject jsonfilter = JSONObject.fromObject(filter); - Boolean coupon = jsonfilter.optBoolean("coupon"); - if (coupon != null && coupon) { - hasCoupon = true; - filterAPI.setIsCoupon(1); // 鏈夊埜 - } - - Boolean zy = jsonfilter.optBoolean("zy"); - if (zy != null && zy) { - filterAPI.setOwner("g"); // 鑷惀 - } - - String minPrice = jsonfilter.optString("minPrice"); - if (!StringUtil.isNullOrEmpty(minPrice)) { - filterAPI.setPricefrom(Double.parseDouble(minPrice)); - } - - String maxPrice = jsonfilter.optString("maxPrice"); - if (!StringUtil.isNullOrEmpty(maxPrice)) { - filterAPI.setPriceto(Double.parseDouble(maxPrice)); - } - } - - result = JDApiUtil.queryByKey(filterAPI); - } else { - // 缃戦〉鐖彇 - JDSearchFilter jdfilter = new JDSearchFilter(); - jdfilter.setKey(SearchFilterUtil.filterSearchContent(key)); - jdfilter.setPageNo(page); - jdfilter.setPageSize(Constant.PAGE_SIZE); - - if (order != null) { - int sort = order.intValue(); - switch (sort) { - case 1: // 閿�閲� desc - jdfilter.setSort(JDSearchFilter.SORT_DESC); - jdfilter.setSortName(JDSearchFilter.SORTNAME_ORDER_COUNT_30DAYS); - break; - case 2: // 浠锋牸鈥攄esc - jdfilter.setSort(JDSearchFilter.SORT_DESC); - jdfilter.setSortName(JDSearchFilter.SORTNAME_PRICE); - break; - case 3: // 浠锋牸鈥攁sc - jdfilter.setSort(JDSearchFilter.SORT_ASC); - jdfilter.setSortName(JDSearchFilter.SORTNAME_PRICE); - break; - case 4: // 杩斿埄姣斺�擠ESC - jdfilter.setSort(JDSearchFilter.SORT_DESC); - jdfilter.setSortName(JDSearchFilter.SORTNAME_COMMISSION_SHARE); - break; - default: - break; - } - } - - if (!StringUtil.isNullOrEmpty(filter)) { - JSONObject jsonfilter = JSONObject.fromObject(filter); - Boolean coupon = jsonfilter.optBoolean("coupon"); - if (coupon != null && coupon) { - hasCoupon = true; - jdfilter.setHasCoupon(1); // 鏈夊埜 - } - - Boolean zy = jsonfilter.optBoolean("zy"); - if (zy != null && zy) { - jdfilter.setIsZY(1); // 鑷惀 - } - - Boolean delivery = jsonfilter.optBoolean("delivery"); - if (delivery != null && delivery) { - jdfilter.setDeliveryType(1); // 浜笢閰嶉�� - } - - String minPrice = jsonfilter.optString("minPrice"); - if (!StringUtil.isNullOrEmpty(minPrice)) { - if (minPrice.contains(".")) { - minPrice = minPrice.replace(".", "-"); - minPrice = minPrice.split("-")[0]; - } - jdfilter.setFromPrice(Integer.parseInt(minPrice)); - } - - String maxPrice = jsonfilter.optString("maxPrice"); - if (!StringUtil.isNullOrEmpty(maxPrice)) { - if (maxPrice.contains(".")) { - maxPrice = maxPrice.replace(".", "-"); - maxPrice = maxPrice.split("-")[0]; - } - jdfilter.setToPrice(Integer.parseInt(maxPrice)); - } - } - result = JDUtil.searchByKey(jdfilter); - - } - - long count = 0; - JSONObject data = new JSONObject(); - JSONArray array = new JSONArray(); - if (result != null) { - PageEntity pageEntity = result.getPageEntity(); - if (pageEntity != null) { - count = pageEntity.getTotalCount(); - } - - List<JDGoods> goodsList = result.getGoodsList(); - if (goodsList != null && goodsList.size() > 0) { - Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) - .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); - ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), - acceptData.getVersion(), acceptData.getSystem()); - for (JDGoods goods : goodsList) { - GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertJDGoods(goods, paramsDTO); - if (hasCoupon) { - if (goodsDetailVO.isHasCoupon()) { - array.add(gson.toJson(goodsDetailVO)); - } - } else { - array.add(gson.toJson(goodsDetailVO)); - } - } - } - } - - data.put("result", array); - data.put("count", count); - out.print(JsonUtil.loadTrueResult(buildSearchResult(data, ap))); - } - - - /** - * 鎷煎澶� - * - * @param acceptData - * @param key - * @param page - * @param filter - * @param order - * @param ap - * @param out - */ - private void searchPDDGoods(AcceptData acceptData, String key, Integer page, String filter, Integer order, - AppPageNotification ap, PrintWriter out) { - PDDSearchFilter pddfilter = new PDDSearchFilter(); - pddfilter.setKw(SearchFilterUtil.filterSearchContent(key)); - pddfilter.setPage(page); - pddfilter.setPageSize(Constant.PAGE_SIZE); - - if (order != null) { - int sort = order.intValue(); - switch (sort) { - case 1: // 閿�閲� desc - pddfilter.setSortType(6); - break; - case 2: // 浠锋牸鈥攄esc - pddfilter.setSortType(4); - break; - case 3: // 浠锋牸鈥攁sc - pddfilter.setSortType(3); - break; - case 4: // 杩斿埄姣斺�攄esc - pddfilter.setSortType(2); - break; - default: // 缁煎悎鎺掑簭 - pddfilter.setSortType(0); - break; - } - } - - if (!StringUtil.isNullOrEmpty(filter)) { - JSONObject jsonfilter = JSONObject.fromObject(filter); - Boolean coupon = jsonfilter.optBoolean("coupon"); - if (coupon != null && coupon) { - pddfilter.setHasCoupon(true); // 鏈夊埜 - } - - Boolean brand = jsonfilter.optBoolean("brand"); - if (brand != null && brand) { - pddfilter.setIsBrand(true); // 鏄惁鏄搧鐗� - } - } - - int count = 0; - JSONObject data = new JSONObject(); - JSONArray array = new JSONArray(); - - PDDGoodsResult result = PinDuoDuoApiUtil.searchGoods(pddfilter); - if (result != null) { - count = result.getTotalCount(); - Gson gson = JsonUtil.getApiCommonGson(); - List<PDDGoodsDetail> goodsList = result.getGoodsList(); - if (goodsList != null && goodsList.size() > 0) { - ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), - acceptData.getVersion(), acceptData.getSystem()); - - for (PDDGoodsDetail goods : goodsList) { - GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertPDDGoods(goods, paramsDTO); - array.add(gson.toJson(goodsDetailVO)); - } - } - } - - data.put("result", array); - data.put("count", count); - out.print(JsonUtil.loadTrueResult(buildSearchResult(data, ap))); - } - - /** - * 鎼滅储鍞搧浼氬晢鍝� - * - * @param acceptData - * @param key - * @param page - * @param filter - * @param order - * @param out void 杩斿洖绫诲瀷 - * @throws - * @Title: searchVIPGoods - * @Description: - */ - private void searchVIPGoods(AcceptData acceptData, String key, Integer page, String filter, Integer order, - AppPageNotification ap, PrintWriter out) { - VIPSearchFilter searchFilter = new VIPSearchFilter(); - searchFilter.setKeyword(key); - searchFilter.setPage(page); - searchFilter.setPageSize(Constant.PAGE_SIZE); - - if (order != null) { - int sort = order.intValue(); - switch (sort) { - case 2: // 浠锋牸鈥攄esc - searchFilter.setFieldName("price"); - searchFilter.setOrder(1); - break; - case 3: // 浠锋牸鈥攁sc - searchFilter.setFieldName("price"); - searchFilter.setOrder(0); - break; - case 5: // 鎶樻墸鈥攁ec - searchFilter.setFieldName("discount"); - searchFilter.setOrder(0); - break; - default: // 缁煎悎鎺掑簭 - break; - } - } - - if (!StringUtil.isNullOrEmpty(filter)) { - JSONObject jsonfilter = JSONObject.fromObject(filter); - String minPrice = jsonfilter.optString("minPrice"); - if (!StringUtil.isNullOrEmpty(minPrice)) { - searchFilter.setPriceStart(minPrice); - } - - String maxPrice = jsonfilter.optString("maxPrice"); - if (!StringUtil.isNullOrEmpty(maxPrice)) { - searchFilter.setPriceEnd(maxPrice); - } - } - - int count = 0; - JSONObject data = new JSONObject(); - JSONArray array = new JSONArray(); - - VIPSearchResult result = VipShopApiUtil.search(searchFilter); - if (result != null) { - count = result.getTotal(); - Gson gson = JsonUtil.getApiCommonGson(); - List<VIPGoodsInfo> goodsList = result.getGoodsList(); - if (goodsList != null && goodsList.size() > 0) { - ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), - acceptData.getVersion(), acceptData.getSystem()); - - for (VIPGoodsInfo goods : goodsList) { - GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertVIPGoods(goods, paramsDTO); - array.add(gson.toJson(goodsDetailVO)); - } - } - } - - data.put("result", array); - data.put("count", count); - out.print(JsonUtil.loadTrueResult(buildSearchResult(data, ap))); - } - - /** - * 鎼滅储鍞搧浼氬晢鍝� - * - * @param acceptData - * @param key - * @param page - * @param filter - * @param order - * @param out void 杩斿洖绫诲瀷 - * @throws - * @Title: searchVIPGoods - * @Description: - */ - private void searchSuningGoods(AcceptData acceptData, String key, Integer page, String filter, Integer order, - AppPageNotification ap, PrintWriter out) { - SuningQueryModel searchFilter = new SuningQueryModel(); - searchFilter.setKeyword(key); - searchFilter.setPageIndex(page); - searchFilter.setSize(10); - - if (order != null) { - if (order == 1) { // 閿�閲忛珮鍒颁綆 - searchFilter.setSortType(2); - } else if (order == 2) { // 浠锋牸楂樺埌浣� - searchFilter.setSortType(3); - } else if (order == 3) { // 浠锋牸浣庡埌楂� - searchFilter.setSortType(4); - } else if (order == 4) { // 杩斿埄姣旈珮鍒颁綆 - searchFilter.setSortType(5); - } - } - - if (!StringUtil.isNullOrEmpty(filter)) { - JSONObject jsonfilter = JSONObject.fromObject(filter); - Boolean coupon = jsonfilter.optBoolean("coupon"); - if (coupon != null && coupon) { - searchFilter.setCoupon(1); // 鏈夊埜 - } - - Boolean snfwservice = jsonfilter.optBoolean("snfwservice");// 鑻忓畞鏈嶅姟 - if (snfwservice != null && snfwservice) { - searchFilter.setSnfwservice(1); - } - - Boolean snhwg = jsonfilter.optBoolean("snhwg");// 鑻忓畞鍥介檯 - if (snhwg != null && snhwg) { - searchFilter.setSnhwg(1); - } - - Boolean suningService = jsonfilter.optBoolean("suningService");// 鑻忓畞鑷惀 - if (suningService != null && suningService) { - searchFilter.setSuningService(1); - } - - Boolean pgSearch = jsonfilter.optBoolean("pgSearch");// 鎷艰喘 - if (pgSearch != null && pgSearch) { - searchFilter.setPgSearch(1); - } - - String minPrice = jsonfilter.optString("minPrice"); - if (!StringUtil.isNullOrEmpty(minPrice)) { - searchFilter.setStartPrice(minPrice); - } - - String maxPrice = jsonfilter.optString("maxPrice"); - if (!StringUtil.isNullOrEmpty(maxPrice)) { - searchFilter.setEndPrice(maxPrice); - } - } - - JSONObject data = new JSONObject(); - JSONArray array = new JSONArray(); - - List<SuningGoodsInfo> resultList = null; - List<SuningGoodsInfo> list = SuningApiUtil.searchGoodsOld(searchFilter); - if (list != null && list.size() > 0) { - List<String> listId = new ArrayList<>(); - for (SuningGoodsInfo goodsInfo : list) { - SuningCommodityInfo info = goodsInfo.getCommodityInfo(); - if (info != null) { - listId.add(info.getCommodityCode() + "-" + info.getSupplierCode()); - } - } - resultList = SuningApiUtil.getGoodsDetailList(listId); - } - - if (resultList != null) { - Gson gson = JsonUtil.getApiCommonGson(); - if (resultList != null && resultList.size() > 0) { - ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), - acceptData.getVersion(), acceptData.getSystem()); - - for (SuningGoodsInfo goods : resultList) { - GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertSuningGoods(goods, paramsDTO); - array.add(gson.toJson(goodsDetailVO)); - } - } - } - - data.put("result", array); - data.put("count", 1000); - out.print(JsonUtil.loadTrueResult(buildSearchResult(data, ap))); - } - -} +package com.yeshi.fanli.controller.client.v2; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.yeshi.common.entity.PageEntity; +import com.yeshi.fanli.dto.GoodsMoneyConfigParamsDTO; +import com.yeshi.fanli.dto.jd.JDFilter; +import com.yeshi.fanli.dto.jd.JDSearchFilter; +import com.yeshi.fanli.dto.jd.JDSearchResult; +import com.yeshi.fanli.dto.pdd.PDDGoodsDetail; +import com.yeshi.fanli.dto.pdd.PDDGoodsResult; +import com.yeshi.fanli.dto.pdd.PDDSearchFilter; +import com.yeshi.fanli.dto.suning.SuningCommodityInfo; +import com.yeshi.fanli.dto.suning.SuningGoodsInfo; +import com.yeshi.fanli.dto.suning.SuningQueryModel; +import com.yeshi.fanli.dto.vip.VIPSearchFilter; +import com.yeshi.fanli.dto.vip.VIPSearchResult; +import com.yeshi.fanli.dto.vip.goods.VIPGoodsInfo; +import com.yeshi.fanli.entity.SystemEnum; +import com.yeshi.fanli.entity.SystemPIDInfo; +import com.yeshi.fanli.entity.accept.AcceptData; +import com.yeshi.fanli.entity.bus.help.AppPageNotification; +import com.yeshi.fanli.entity.bus.search.HistorySearch; +import com.yeshi.fanli.entity.goods.BaseGoodsInfo; +import com.yeshi.fanli.entity.goods.CommonGoods; +import com.yeshi.fanli.entity.jd.JDGoods; +import com.yeshi.fanli.entity.system.ConfigKeyEnum; +import com.yeshi.fanli.entity.taobao.SearchFilter; +import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult; +import com.yeshi.fanli.exception.pdd.PDDApiException; +import com.yeshi.fanli.exception.taobao.TaoBaoTokenParseException; +import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; +import com.yeshi.fanli.exception.user.TokenRecordException; +import com.yeshi.fanli.lijin.manager.GoodsLijinMnager; +import com.yeshi.fanli.service.inter.brand.BrandInfoService; +import com.yeshi.fanli.service.inter.common.JumpDetailV2Service; +import com.yeshi.fanli.service.inter.config.ConfigService; +import com.yeshi.fanli.service.inter.help.AppPageNotificationService; +import com.yeshi.fanli.service.inter.order.OrderHongBaoMoneyComputeService; +import com.yeshi.fanli.service.inter.pdd.PDDAuthService; +import com.yeshi.fanli.service.inter.taobao.TaoBaoShopService; +import com.yeshi.fanli.service.inter.user.HistorySearchService; +import com.yeshi.fanli.service.inter.user.TokenRecordService; +import com.yeshi.fanli.service.inter.user.integral.IntegralGetService; +import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService; +import com.yeshi.fanli.service.manger.ClipboardAnalysisManager; +import com.yeshi.fanli.service.manger.IClipboardAnalysisResult; +import com.yeshi.fanli.service.manger.PIDManager; +import com.yeshi.fanli.util.Constant; +import com.yeshi.fanli.util.StringUtil; +import com.yeshi.fanli.util.ThreadUtil; +import com.yeshi.fanli.util.VersionUtil; +import com.yeshi.fanli.util.annotation.RequestSerializableByKey; +import com.yeshi.fanli.util.cache.IntegralGetCacheManager; +import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil; +import com.yeshi.fanli.util.factory.CommonGoodsFactory; +import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory; +import com.yeshi.fanli.util.goods.douyin.CSJCPSApiUtil; +import com.yeshi.fanli.util.goods.douyin.DYUtil; +import com.yeshi.fanli.util.goods.douyin.vo.DYGoods; +import com.yeshi.fanli.util.goods.douyin.vo.DYGoodsDetail; +import com.yeshi.fanli.util.goods.douyin.vo.DYGoodsSearchFilter; +import com.yeshi.fanli.util.goods.douyin.vo.ListResult; +import com.yeshi.fanli.util.jd.JDApiUtil; +import com.yeshi.fanli.util.jd.JDUtil; +import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil; +import com.yeshi.fanli.util.pinduoduo.PinDuoDuoUtil; +import com.yeshi.fanli.util.suning.SuningApiUtil; +import com.yeshi.fanli.util.suning.SuningUtil; +import com.yeshi.fanli.util.taobao.SearchFilterUtil; +import com.yeshi.fanli.util.taobao.TaoBaoUtil; +import com.yeshi.fanli.util.taobao.TaoKeApiUtil; +import com.yeshi.fanli.util.vipshop.VipShopApiUtil; +import com.yeshi.fanli.util.vipshop.VipShopUtil; +import com.yeshi.fanli.vo.brand.BrandInfoVO; +import com.yeshi.fanli.vo.brand.TaoBaoShopVO; +import com.yeshi.fanli.vo.common.JumpDetailContentVO; +import com.yeshi.fanli.vo.goods.GoodsDetailVO; +import com.yeshi.fanli.vo.msg.TokenVO; +import com.yeshi.fanli.vo.recommend.RecommendJumpInfoVO; +import com.yeshi.fanli.vo.search.GoodsDocParseResultVO; +import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief; +import com.yeshi.goods.facade.entity.taobao.dataoke.DaTaoKeDetailV2; +import com.yeshi.goods.facade.service.DaTaoKeGoodsDetailV2Service; +import com.yeshi.goods.facade.utils.taobao.DaTaoKeApiUtil; +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.core.task.TaskExecutor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.yeshi.utils.HttpUtil; +import org.yeshi.utils.IPUtil; +import org.yeshi.utils.JsonUtil; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; +import java.io.PrintWriter; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +@Controller +@RequestMapping("api/v2/search") +public class SearchControllerV2 { + + Logger logger = LoggerFactory.getLogger(SearchControllerV2.class); + + @Resource + private ConfigService configService; + + @Resource + private HistorySearchService historySearchService; + + @Resource + private TaoBaoGoodsCacheUtil taoBaoGoodsCacheUtil; + + @Resource + private TaoBaoShopService taoBaoShopService; + + @Resource + private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service; + + @Resource(name = "taskExecutor") + private TaskExecutor executor; + + @Resource + private TokenRecordService tokenRecordService; + + @Resource + private IntegralGetService integralGetService; + + @Resource + private IntegralGetCacheManager integralGetCacheManager; + + @Resource + private BrandInfoService brandInfoService; + + @Resource + private ClipboardAnalysisManager clipboardAnalysisManager; + + @Resource + private JumpDetailV2Service jumpDetailV2Service; + + @Resource + private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService; + + @Resource + private AppPageNotificationService appPageNotificationService; + + @Resource + private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService; + + @Resource + private PDDAuthService pddAuthService; + + @Resource + private GoodsLijinMnager goodsLijinMnager; + + @Resource + private PIDManager pidManager; + + + /** + * 绮樿创鏉夸俊鎭帹鑽� + * + * @param acceptData + * @param text + * @param uid + * @param out + */ + @RequestMapping(value = "getRecommendInfo", method = RequestMethod.POST) + public void getRecommendInfo(AcceptData acceptData, String text, Long uid, PrintWriter out) { + if (StringUtil.isNullOrEmpty(text)) { + out.print(JsonUtil.loadFalseResult("鍊间负绌�")); + return; + } + // 鍘婚櫎鍓嶅悗绌烘牸 + text = text.trim(); + String originalText = text; + if (acceptData.getSystem() == SystemEnum.yhqjx || acceptData.getSystem() == SystemEnum.hsb) { + Integer sourceType = clipboardAnalysisManager.tejiaParseSourceType(text); + JSONObject root = new JSONObject(); + root.put("type", 2); + JSONObject data = new JSONObject(); + data.put("title", text); + data.put("sourceType", sourceType); + root.put("data", data); + out.print(JsonUtil.loadTrueResult(root)); + return; + } else { + JSONObject data = new JSONObject(); + clipboardAnalysisManager.parse(acceptData.getPlatform(), acceptData.getVersion(), originalText, uid, + new IClipboardAnalysisResult() { + + @Override + public void onResult(GoodsDocParseResultVO result) { + if (uid == null || (acceptData.getSystem() == SystemEnum.yhqjx || acceptData.getSystem() == SystemEnum.hsb)) { + out.print(JsonUtil.loadFalseResult("鏃犳帹鑽�")); + return; + } + + JSONObject root = new JSONObject(); + root.put("type", 20); + JSONObject data = new JSONObject(); + data.put("text", originalText); + // + int platformCode = Constant.getPlatformCode(acceptData.getPlatform()); + int version = Integer.parseInt(acceptData.getVersion()); + JumpDetailContentVO convert = new JumpDetailContentVO(); + convert.setJumpDetail(jumpDetailV2Service.getByTypeCache("web", platformCode, version, acceptData.getSystem())); + JSONObject convertParams = new JSONObject(); + convertParams.put("url", configService.getValue(ConfigKeyEnum.convertDocWebLink.getKey(), acceptData.getSystem())); + convertParams.put("clipboard", false); + convert.setParams(convertParams); + + JumpDetailContentVO view = null; + JumpDetailContentVO guessLike = null; + + Gson gson = JsonUtil.getApiCommonGson(); + data.put("title", "鏅鸿兘鎼滅储"); + + int state = 0; + if (result.getFirstGoods() != null && result.getFirstGoods().getGoodsId() != null) { + state = 2; + data.put("stateDesc", "閫夋嫨鎼滃埜鎴栬浆閾�"); + JSONObject params = new JSONObject(); + params.put("id", result.getFirstGoods().getGoodsId() + ""); + params.put("from", "杞摼"); + if (result.getFirstGoods().getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) { + view = new JumpDetailContentVO(); + view.setJumpDetail( + jumpDetailV2Service.getByTypeCache("goodsdetail", platformCode, version, acceptData.getSystem())); + view.setParams(params); + } else if (result.getFirstGoods().getGoodsType() == Constant.SOURCE_TYPE_JD) { + view = new JumpDetailContentVO(); + view.setJumpDetail( + jumpDetailV2Service.getByTypeCache("goodsdetail_jd", platformCode, version, acceptData.getSystem())); + view.setParams(params); + } else if (result.getFirstGoods().getGoodsType() == Constant.SOURCE_TYPE_PDD) { + view = new JumpDetailContentVO(); + view.setJumpDetail( + jumpDetailV2Service.getByTypeCache("goodsdetail_pdd", platformCode, version, acceptData.getSystem())); + view.setParams(params); + } + + } else if (!StringUtil.isNullOrEmpty(result.getFirstLink())) { + state = 2; + data.put("stateDesc", "閫夋嫨鎼滃埜鎴栬浆閾�"); + view = new JumpDetailContentVO(); + view.setJumpDetail(jumpDetailV2Service.getByTypeCache("web", platformCode, version, acceptData.getSystem())); + JSONObject params = new JSONObject(); + params.put("url", result.getFirstLink()); + view.setParams(params); + } else { + data.put("stateDesc", "鍘昏瘯璇曡浆閾�"); + state = 1; + } + data.put("state", state); + if (convert != null) + data.put("convert", gson.toJson(convert)); + if (view != null) + data.put("view", gson.toJson(view)); + + if (guessLike != null) + data.put("guessLike", gson.toJson(guessLike)); + + root.put("data", data); + out.print(JsonUtil.loadTrueResult(root)); + return; + } + + @Override + public void onResult(String result) { + JSONObject root = new JSONObject(); + root.put("type", 2); + JSONObject data = new JSONObject(); + data.put("title", result); + root.put("data", data); + out.print(JsonUtil.loadTrueResult(root)); + return; + } + + @Override + public void onResult(CommonGoods goods) { + if (goods.getGoodsId() != null) { + if (VersionUtil.greaterThan_1_6_5(acceptData.getPlatform(), acceptData.getVersion())) {// 1.6.5鐗堟湰鍚庤繑鍥炲晢鍝佽鎯� + if (goods.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) { + TaoBaoGoodsBrief goodsBrief = null; + String specialId = userExtraTaoBaoInfoService.getSpecialIdByUid(uid); + try { + goodsBrief = TaoKeApiUtil.searchGoodsDetail(StringUtil.isNullOrEmpty(goods.getGoodsSign()) ? goods.getGoodsId() : goods.getGoodsSign(), specialId, null); + } catch (TaobaoGoodsDownException e) { + e.printStackTrace(); + } + + if (goodsBrief != null) { + goods = CommonGoodsFactory.create(goodsBrief); + Gson gson = JsonUtil + .getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) + .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd") + .create(); + data.put("type", 3); + + + GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertCommonGoods(goods, + orderHongBaoMoneyComputeService.getShowComputeRate( + acceptData.getPlatform(), + acceptData.getVersion(), acceptData.getSystem())); + + goodsDetailVO = goodsLijinMnager.loadTBMoneyInfo(acceptData.getSystem(), uid, goodsBrief, goodsDetailVO, false); + + data.put("goods", + gson.toJson(goodsDetailVO)); + // 璺宠浆璇︽儏 + if (VersionUtil.greaterThan_2_1_3(acceptData.getPlatform(), + acceptData.getVersion())) { + buildGoodsClick(data, goods, acceptData, gson); + } + + out.print(JsonUtil.loadTrueResult(data)); + return; + } + } else { + Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) + .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd") + .create(); + data.put("type", 3); + data.put("goods", + gson.toJson( + goodsLijinMnager.loadOtherMoneyInfo(acceptData.getSystem(), uid, goods, + GoodsDetailVOFactory.convertCommonGoods(goods, + orderHongBaoMoneyComputeService.getShowComputeRate( + acceptData.getPlatform(), + acceptData.getVersion(), acceptData.getSystem()))))); + // if + // (VersionUtil.greaterThan_2_1_2(acceptData.getPlatform(), + // acceptData.getVersion())) { + // buildGoodsClick(data, goods, acceptData, + // gson); + // } + out.print(JsonUtil.loadTrueResult(data)); + return; + } + } else { + // 浣庝簬1.6.5鐗堟湰 + JSONObject taoBaoGoodsJSON = new JSONObject(); + taoBaoGoodsJSON.put("title", goods.getTitle()); + taoBaoGoodsJSON.put("zkPrice", goods.getPrice() + ""); + taoBaoGoodsJSON.put("id", goods.getGoodsId()); + taoBaoGoodsJSON.put("goodsType", goods.getGoodsType()); + if (goods.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) { + taoBaoGoodsJSON.put("url", + "http://item.taobao.com/item.htm?id=" + goods.getGoodsId()); + } else if (goods.getGoodsType() == Constant.SOURCE_TYPE_JD) { + taoBaoGoodsJSON.put("url", + String.format("https://item.jd.com/%s.html", goods.getGoodsId() + "")); + } else if (goods.getGoodsType() == Constant.SOURCE_TYPE_PDD) { + taoBaoGoodsJSON.put("url", + "http://yangkeduo.com/goods.html?goods_id=" + goods.getGoodsId()); + } + data.put("goods", taoBaoGoodsJSON); + List<String> picList = new ArrayList<>(); + picList.add(goods.getPicture()); + data.put("imgs", picList); + JSONObject root = new JSONObject(); + root.put("type", 1); + root.put("data", data); + out.print(JsonUtil.loadTrueResult(root)); + return; + } + } + + JSONObject goodsJSON = new JSONObject(); + goodsJSON.put("title", goods.getTitle()); + goodsJSON.put("pictUrl", goods.getPicture()); + + data.put("type", 4); + data.put("desc", "璇ュ晢鍝佹棤鎺ㄥ箍淇℃伅"); + data.put("goods", goodsJSON); + out.print(JsonUtil.loadTrueResult(data)); + return; + } + + @Override + public void onResult(TokenVO tokenVO) { + out.print(JsonUtil.loadTrueResult(tokenVO)); + return; + } + + @Override + public void none() { + out.print(JsonUtil.loadFalseResult("鏃犳帹鑽�")); + } + + @Override + public void needLogin(String msg) { + out.print(JsonUtil.loadFalseResult(1001, msg)); + } + }); + } + } + + @RequestMapping(value = "getRecommendInfoTJ", method = RequestMethod.POST) + public void getRecommendInfoTJ(AcceptData acceptData, String text, Long uid, PrintWriter out) { + if (StringUtil.isNullOrEmpty(text)) { + out.print(JsonUtil.loadFalseResult("鍊间负绌�")); + return; + } + // 鍘婚櫎鍓嶅悗绌烘牸 + text = text.trim(); + Integer sourceType = clipboardAnalysisManager.tejiaParseSourceType(text); + JSONObject root = new JSONObject(); + root.put("type", 2); + JSONObject data = new JSONObject(); + data.put("title", text); + data.put("sourceType", sourceType); + root.put("data", data); + out.print(JsonUtil.loadTrueResult(root)); + } + + private void buildGoodsClick(JSONObject data, CommonGoods goods, AcceptData acceptData, Gson gson) { + + JSONObject params = new JSONObject(); + params.put("id", goods.getGoodsId() + ""); + params.put("from", "鐚滀綘鍠滄"); + + String type = ""; + switch (goods.getGoodsType()) { + case Constant.SOURCE_TYPE_TAOBAO: + type = "goodsdetail"; + if (!StringUtil.isNullOrEmpty(goods.getGoodsSign())) { + params.put("id", goods.getGoodsSign() + ""); + } + break; + case Constant.SOURCE_TYPE_JD: + type = "goodsdetail_jd"; + break; + case Constant.SOURCE_TYPE_PDD: + type = "goodsdetail_pdd"; + break; + case Constant.SOURCE_TYPE_VIP: + type = "goodsdetail_vip"; + break; + case Constant.SOURCE_TYPE_SUNING: + type = "goodsdetail_suning"; + break; + case Constant.SOURCE_TYPE_DY: + type = "goodsdetail_dy"; + break; + + } + + RecommendJumpInfoVO left = new RecommendJumpInfoVO("鍘荤湅鐪�", jumpDetailV2Service.getByTypeCache(type, + Constant.getPlatformCode(acceptData.getPlatform()), Integer.parseInt(acceptData.getVersion()), acceptData.getSystem()), params); + data.put("left", gson.toJson(left)); + + // 鍘荤綉椤� + String rightValue = configService.getByVersion(ConfigKeyEnum.clipboardRecommendGoodsMakeMore.getKey(), + acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion()), acceptData.getSystem()); + + if (StringUtil.isNullOrEmpty(rightValue)) { + data.remove("left"); + } else { + params = new JSONObject(); + params.put("url", rightValue); + + RecommendJumpInfoVO right = new RecommendJumpInfoVO("鏈夋洿楂樿繑鍒╋紵", jumpDetailV2Service.getByTypeCache("web", + Constant.getPlatformCode(acceptData.getPlatform()), Integer.parseInt(acceptData.getVersion()), acceptData.getSystem()), + params); + data.put("right", gson.toJson(right)); + } + } + + /** + * 鍙d护棰嗗彇 + * + * @param acceptData + * @param uid + * @param token + * @param out + */ + @RequestSerializableByKey(key = "'tokenReceive-'+#uid") + @RequestMapping(value = "tokenReceive", method = RequestMethod.POST) + public void tokenReceive(AcceptData acceptData, Long uid, String token, PrintWriter out) { + try { + String msg = tokenRecordService.receiveToken(token, uid, acceptData); + out.print(JsonUtil.loadTrueResult(msg)); + } catch (TokenRecordException e) { + out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg())); + } + } + + /** + * 鎼滅储鍊欓�夎瘝 + * + * @param acceptData + * @param kw + * @param out + */ + @RequestMapping(value = "suggestSearch", method = RequestMethod.POST) + public void getSugguestSearch(AcceptData acceptData, String kw, Integer goodsType, PrintWriter out) { + if (goodsType == null) { + out.print(JsonUtil.loadFalseResult("骞冲彴绫诲瀷涓嶈兘涓虹┖")); + return; + } + + List<String> list = null; + if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { + list = TaoBaoUtil.getSuguestSearch(kw); + } else if (goodsType == Constant.SOURCE_TYPE_JD) { + list = JDUtil.suggestSearch(kw); + } else if (goodsType == Constant.SOURCE_TYPE_PDD) { + list = PinDuoDuoUtil.suggestSearch(kw); + } + + if (list == null || list.size() == 0) { + out.print(JsonUtil.loadFalseResult("鏆傛棤寤鸿鍐呭")); + return; + } + + JSONArray array = new JSONArray(); + for (String words : list) { + array.add(words); + } + out.print(JsonUtil.loadTrueResult(array)); + } + + /** + * @param acceptData + * @param goodsType + * @param key + * @param page + * @param filter + * @param order 閿�閲忕敱楂樺埌浣�:1 銆� 浠锋牸浠庨珮鍒颁綆:2 銆� 浠锋牸浠庝綆鍒伴珮:3 銆� 鎺ㄥ箍閲忛珮鍒颁綆:4锛堢患鍚堥粯璁わ級銆佽繑鍒╂瘮楂樺埌浣�:5 + * * 銆佽繑鍒╂瘮浣庡埌楂�:6 銆佹帹鑽�20 + * @param uid + * @param notifyType + * @param session + * @param out + */ + @RequestMapping(value = "searchGoods") + public void searchGoods(AcceptData acceptData, Integer goodsType, String key, Integer page, String filter, + Integer order, Long uid, String notifyType, HttpSession session, HttpServletRequest request, PrintWriter out) { + + if (goodsType == null || goodsType < 1 || goodsType > 7) { + out.print(JsonUtil.loadFalseResult(1, "璇蜂紶閫掓纭钩鍙板弬鏁�")); + return; + } + + if (page == null || page < 1) { + out.print(JsonUtil.loadFalseResult(1, "椤电爜涓嶈兘灏忎簬1")); + return; + } + + if (StringUtil.isNullOrEmpty(key)) { + out.print(JsonUtil.loadFalseResult(1, "璇疯緭鍏ユ悳绱㈠唴瀹�")); + return; + } + final String searchkey = key.trim(); + + if (uid != null) { + if (page == 1) { + integralGetCacheManager.cacheSearchGoods(acceptData.getDevice(), System.currentTimeMillis()); + } else if (page > 1) { + Long lastTime = integralGetCacheManager.getLastSearchTime(acceptData.getDevice()); + if (lastTime != null && System.currentTimeMillis() - lastTime >= 15 * 1000L) {// 瓒呰繃15s娴忚 + integralGetCacheManager.clearSearchTime(acceptData.getDevice()); + ThreadUtil.run(new Runnable() { + @Override + public void run() { + // 澧炲姞閲戝竵 + integralGetService.addSearchResultScan(uid, key); + } + }); + } + } + } + + executor.execute(new Runnable() { + @Override + public void run() { + HistorySearch search = new HistorySearch(); + search.setDevice(StringUtil.isNullOrEmpty(acceptData.getUtdid()) ? acceptData.getDevice() : acceptData.getUtdid()); + search.setKey(key); + search.setSystem(acceptData.getSystem()); + search.setUid(uid); + search.setGoodsType(goodsType); + search.setIpInfo(IPUtil.getRemotIP(request) + ":" + request.getRemotePort()); + historySearchService.addHistorySearch(search); + } + }); + + + if (searchkey.startsWith("http://") || searchkey.startsWith("https://")) { + JSONObject data = new JSONObject(); + data.put("result", new JSONArray()); + data.put("count", 0); + out.print(JsonUtil.loadTrueResult(data)); + return; + } + AppPageNotification ap = null; + if (page == 1) { + ap = appPageNotificationService.getValidNotificationByTypeCache(notifyType, acceptData.getPlatform(), + Integer.parseInt(acceptData.getVersion()), acceptData.getSystem()); + // 娌℃湁閫氱煡 + if (ap == null || !ap.getShow()) { + ap = null; + } + + // else {// 鏈夐�氱煡 + // Gson gson = new + // GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); + // out.print(JsonUtil.loadTrueResult(gson.toJson(ap))); + // } + } + + /*--------- 浜笢鍟嗗搧 -------*/ + if (goodsType.intValue() == Constant.SOURCE_TYPE_JD) { + searchJDGoods(acceptData, uid, searchkey, page, filter, order, ap, out); + return; + } + + /*-------- 鎷煎澶氬晢鍝� -------*/ + if (goodsType.intValue() == Constant.SOURCE_TYPE_PDD) { + searchPDDGoods(acceptData, uid, searchkey, page, filter, order, ap, out); + return; + } + + /*-------- 鍞搧浼氬晢鍝� ------*/ + if (goodsType.intValue() == Constant.SOURCE_TYPE_VIP) { + searchVIPGoods(acceptData, uid, searchkey, page, filter, order, ap, out); + return; + } + + /*-------- 鑻忓畞鍟嗗搧 ------*/ + if (goodsType.intValue() == Constant.SOURCE_TYPE_SUNING) { + searchSuningGoods(acceptData, uid, searchkey, page, filter, order, ap, out); + return; + } + + + /*-------- 鎶栭煶鍟嗗搧 ------*/ + if (goodsType.intValue() == Constant.SOURCE_TYPE_DY) { + searchDYGoods(acceptData, uid, searchkey, page, filter, order, ap, out); + return; + } + + /*-------- 娣樺疂鍟嗗搧 -------*/ + searchTaoBaoGoods(acceptData, uid, searchkey, page, filter, order, ap, out); + + } + + + @RequestMapping(value = "searchGoodsTJ") + public void searchGoodsTJ(AcceptData acceptData, Integer goodsType, String key, Integer page, String filter, + Integer order, Long uid, String notifyType, HttpSession session, HttpServletRequest request, PrintWriter out) { + + if (goodsType == null || goodsType < 1 || goodsType > 5) { + out.print(JsonUtil.loadFalseResult(1, "璇蜂紶閫掓纭钩鍙板弬鏁�")); + return; + } + + if (page == null || page < 1) { + out.print(JsonUtil.loadFalseResult(1, "椤电爜涓嶈兘灏忎簬1")); + return; + } + + if (StringUtil.isNullOrEmpty(key)) { + out.print(JsonUtil.loadFalseResult(1, "璇疯緭鍏ユ悳绱㈠唴瀹�")); + return; + } + final String searchkey = key.trim(); + + + executor.execute(new Runnable() { + @Override + public void run() { + HistorySearch search = new HistorySearch(); + search.setDevice(StringUtil.isNullOrEmpty(acceptData.getUtdid()) ? acceptData.getDevice() : acceptData.getUtdid()); + search.setKey(key); + search.setSystem(acceptData.getSystem()); + search.setUid(uid); + search.setGoodsType(goodsType); + search.setIpInfo(IPUtil.getRemotIP(request) + ":" + request.getRemotePort()); + historySearchService.addHistorySearch(search); + } + }); + + + AppPageNotification ap = null; + if (page == 1) { + ap = appPageNotificationService.getValidNotificationByTypeCache(notifyType, acceptData.getPlatform(), + Integer.parseInt(acceptData.getVersion()), acceptData.getSystem()); + // 娌℃湁閫氱煡 + if (ap == null || !ap.getShow()) { + ap = null; + } + + // else {// 鏈夐�氱煡 + // Gson gson = new + // GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); + // out.print(JsonUtil.loadTrueResult(gson.toJson(ap))); + // } + } + + /*--------- 浜笢鍟嗗搧 -------*/ + if (goodsType.intValue() == Constant.SOURCE_TYPE_JD) { + searchJDGoods(acceptData, uid, searchkey, page, filter, order, ap, out); + return; + } + + /*-------- 鎷煎澶氬晢鍝� -------*/ + if (goodsType.intValue() == Constant.SOURCE_TYPE_PDD) { + searchPDDGoods(acceptData, uid, searchkey, page, filter, order, ap, out); + return; + } + + /*-------- 鍞搧浼氬晢鍝� ------*/ + if (goodsType.intValue() == Constant.SOURCE_TYPE_VIP) { + searchVIPGoods(acceptData, uid, searchkey, page, filter, order, ap, out); + return; + } + + /*-------- 鑻忓畞鍟嗗搧 ------*/ + if (goodsType.intValue() == Constant.SOURCE_TYPE_SUNING) { + searchSuningGoods(acceptData, uid, searchkey, page, filter, order, ap, out); + return; + } + + + /*-------- 鎶栭煶鍟嗗搧 ------*/ + if (goodsType.intValue() == Constant.SOURCE_TYPE_DY) { + searchDYGoods(acceptData, uid, searchkey, page, filter, order, ap, out); + return; + } + + + /*-------- 娣樺疂鍟嗗搧 -------*/ + searchTaoBaoGoods(acceptData, uid, searchkey, page, filter, order, ap, out); + + } + + /** + * 鎵ц鎼滅储-鏂扮増 + * + * @param acceptData + * @param uid + * @param key + * @param page + * @param filter + * @param order + * @param ap + * @param out + */ + private void searchTaoBaoGoods(AcceptData acceptData, Long uid, String key, Integer page, String filter, Integer order, + AppPageNotification ap, PrintWriter out) { + String goodsId = null; + //鏄惁鍖呭惈娣樺疂閾炬帴/鍙d护 + if (page == 1) { + List<String> linkList = HttpUtil.getUrlListFromText(key); + if (((linkList != null && linkList.size() > 0) || TaoBaoUtil.isHaveNewVersionTaoBaoToken(key))&&false) { + // 鏆傛椂涓嶉�氳繃閾炬帴鎼滅储 + String id = DaTaoKeApiUtil.parseGoodsIdFromToken(key); + if (id != null) { + goodsId = id; + } + if (goodsId == null) { + try { + TaoKeApiUtil.TokenConvertResult result = TaoKeApiUtil.tokenConvert(key); + if (result != null) { + goodsId = result.getNum_iid(); + } + } catch (TaoBaoTokenParseException e) { + e.printStackTrace(); + } + + + } + if (goodsId == null) { + //瑙f瀽閾炬帴 +// if (linkList != null && linkList.size() > 0) { +// String tempGoodsId = clipboardAnalysisManager.parseTBAuctionIdFromLink(linkList.get(0)); +// if (!StringUtil.isNullOrEmpty(tempGoodsId)) { +// goodsId = tempGoodsId; +// } +// } + } + } + + //鍟嗗搧ID涓虹┖锛屼笖鏄彛浠ょ殑褰㈠紡灏变互鏈姞鍏ユ窐瀹濊仈鐩熺殑鍟嗗搧澶勭悊 + if (goodsId == null && (linkList != null && linkList.size() > 0) && TaoBaoUtil.isHaveNewVersionTaoBaoToken(key)) { + String title = TaoBaoUtil.getGoodsTitleFromTokenText(key); + if (StringUtil.isNullOrEmpty(title)) { + String[] ks = key.trim().split(" "); + if (ks.length > 1) + key = ks[1].trim(); + } else { + key = title; + } + } + } + + + List<TaoBaoGoodsBrief> goodsBriefList = new ArrayList<>(); + int count = 0; + try { + if (goodsId != null) { + try { + TaoBaoGoodsBrief goods = TaoKeApiUtil.searchGoodsDetail(goodsId); + goods.setCreatetime(null); + goodsBriefList.add(goods); + count = 1; + } catch (TaobaoGoodsDownException e) { + e.printStackTrace(); + } + } else { + SearchFilter sf = new SearchFilter(); + sf.setKey(SearchFilterUtil.filterSearchContent(key)); + sf.setPage(page); + sf.setPageSize(Constant.PAGE_SIZE); + + if (order != null) { + if (order == 1) { // 閿�閲忛珮鍒颁綆 + sf.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW); + } else if (order == 2) { // 浠锋牸楂樺埌浣� + sf.setSort(TaoBaoUtil.SORT_PRICE_HIGH_TO_LOW); + } else if (order == 3) { // 浠锋牸浣庡埌楂� + sf.setSort(TaoBaoUtil.SORT_PRICE_LOW_TO_HIGH); + } else if (order == 4) { // 杩斿埄姣旈珮鍒颁綆 + sf.setSort(TaoBaoUtil.SORT_TKRATE_HIGH_TO_LOW); + } + } + + if (!StringUtil.isNullOrEmpty(filter)) { + JSONObject jsonfilter = JSONObject.fromObject(filter); + Boolean coupon = jsonfilter.optBoolean("coupon"); + if (coupon != null && coupon) { + sf.setQuan(1); // 鏈夊埜 + } + + Boolean tmall = jsonfilter.optBoolean("tmall"); + if (tmall != null && tmall) { + sf.setTmall(true); // 澶╃尗 + } + + String minPrice = jsonfilter.optString("minPrice"); + if (!StringUtil.isNullOrEmpty(minPrice)) { + sf.setStartPrice(new BigDecimal(minPrice)); + } + + String maxPrice = jsonfilter.optString("maxPrice"); + if (!StringUtil.isNullOrEmpty(maxPrice)) { + sf.setEndPrice(new BigDecimal(maxPrice)); + } + } + + // 鎼滅储澶ф窐瀹� + List<DaTaoKeDetailV2> daTaoKeList = null; + if (page == 1) { + daTaoKeList = daTaoKeGoodsDetailV2Service.listByDtitle(key); + } + + String specialId = null; + if (uid != null) { + specialId = userExtraTaoBaoInfoService.getSpecialIdByUid(uid); + } + + // 娣樺疂api鎼滅储鍟嗗搧 + //TODO 娴嬭瘯娉ㄩ噴 + TaoBaoSearchResult result = taoBaoGoodsCacheUtil.getSearchResult(sf); // TaoBaoUtil.search(sf, specialId, null); + if (result == null) { + result = TaoBaoUtil.search(sf, specialId, null); + if (result != null && result.getTaoBaoGoodsBriefs() != null && result.getTaoBaoGoodsBriefs().size() > 1) { + for (TaoBaoGoodsBrief g : result.getTaoBaoGoodsBriefs()) { + if (StringUtil.isNullOrEmpty(g.getAuctionId())) { + logger.error("鎼滅储缁撴灉鏈夌┖ID鐨勬儏鍐� 鍏抽敭瀛梴}", key); + } + } + } + + //濡傛灉鏄崟涓晢鍝侊紝涓旈噷闈㈢殑鍟嗗搧ID涓虹┖锛屽氨闇�瑕佸�熷姪澶ф窐瀹㈡悳绱� + if (result.getTaoBaoGoodsBriefs() != null && result.getTaoBaoGoodsBriefs().size() == 1 && StringUtil.isNullOrEmpty(result.getTaoBaoGoodsBriefs().get(0).getAuctionId())) { + //鏈変竴涓晢鍝佷笖閲岄潰鐨勫晢鍝両D涓虹┖鐨勬儏鍐� + JSONArray darray = DaTaoKeApiUtil.tbSearch(key); + if (darray != null && darray.size() > 0) { + String auctionId = darray.optJSONObject(0).optString("item_id"); + result.getTaoBaoGoodsBriefs().set(0, TaoKeApiUtil.searchGoodsDetail(auctionId)); + }else{ + // 澶ф窐瀹㈡棤娉曟悳绱㈠埌锛屽氨灏嗘渶鍚庝竴涓瓧鍘绘帀鐒跺悗鍐嶆悳绱� + String originText = sf.getKey(); + sf.setKey(originText.substring(0,originText.length()-1)); + result = TaoBaoUtil.search(sf, specialId, null); +// if(result.getTaoBaoGoodsBriefs() != null) +// for(TaoBaoGoodsBrief tb: result.getTaoBaoGoodsBriefs()){ +// if(originText.equalsIgnoreCase(tb.getTitle())){ +// +// break; +// } +// } + } + } + taoBaoGoodsCacheUtil.saveSearchResult(sf, result); + } + TaoBaoSearchResult finalResult = result; + // 鎼滅储缁撴灉缂撳瓨鍒皉edis + if (result != null && result.getTaoBaoGoodsBriefs() != null && result.getTaoBaoGoodsBriefs().size() > 0) { + ThreadUtil.run(new Runnable() { + @Override + public void run() { + // 鏇存柊鍒扮珐瀛� + for (TaoBaoGoodsBrief goods : finalResult.getTaoBaoGoodsBriefs()) + taoBaoGoodsCacheUtil.saveCommonTaoBaoGoodsInfo(goods); + } + }); + } + + List<TaoBaoGoodsBrief> taoBaoGoodsBriefs = null; + if (result != null) { + taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs(); + } + if (taoBaoGoodsBriefs == null) { + taoBaoGoodsBriefs = new ArrayList<>(); + } + + if (daTaoKeList != null && daTaoKeList.size() > 0) { + try { + Collections.reverse(daTaoKeList); + for (DaTaoKeDetailV2 detail : daTaoKeList) { + taoBaoGoodsBriefs.add(0, TaoBaoUtil.convert(detail)); + } + } catch (Exception e) { + } + } + + count = result.getTaoBaoHead().getDocsfound(); + if (taoBaoGoodsBriefs != null) + goodsBriefList.addAll(taoBaoGoodsBriefs); + } + } catch (Exception e) { + + } + + GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), + acceptData.getVersion(), acceptData.getSystem()); + + List<GoodsDetailVO> list = goodsLijinMnager.loadTBMoneyInfo(acceptData.getSystem(), uid, goodsBriefList, paramsDTO, false); + + Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) + .excludeFieldsWithoutExposeAnnotation().create(); + + JSONObject data = new JSONObject(); + data.put("result", gson.toJson(list)); + data.put("count", count); + + if (page == 1) { // 绗竴椤佃繑鍥炲簵閾轰俊鎭� + String platform = acceptData.getPlatform(); + String version = acceptData.getVersion(); + if (("ios".equalsIgnoreCase(platform) && VersionUtil.greaterThan_2_0_5(platform, version)) + || ("android".equalsIgnoreCase(platform) && VersionUtil.greaterThan_2_0_2(platform, version))) { + BrandInfoVO brandInfoVO = null; + try { + brandInfoVO = brandInfoService.listByAlikeName(key, acceptData.getPlatform(), + acceptData.getVersion(), acceptData.getSystem()); + } catch (Exception e) { + } + if (brandInfoVO != null) + data.put("shop", JsonUtil.getApiCommonGson().toJson(brandInfoVO)); + } else { + List<TaoBaoShopVO> listShop = taoBaoShopService.getShopByKeyV2(key, acceptData.getPlatform(), + acceptData.getVersion(), acceptData.getSystem()); + if (listShop != null && listShop.size() > 0 && listShop.get(0).getListGoodsVO() != null + && listShop.get(0).getListGoodsVO().size() > 2) { + TaoBaoShopVO taoBaoShop = listShop.get(0); + if (("ios".equalsIgnoreCase(platform) && VersionUtil.greaterThan_2_0(platform, version)) + || ("android".equalsIgnoreCase(platform) + && VersionUtil.greaterThan_2_0_1(platform, version))) { + BrandInfoVO brandInfoVO = new BrandInfoVO(); + brandInfoVO.setId(taoBaoShop.getId()); + brandInfoVO.setName(taoBaoShop.getShopName()); + brandInfoVO.setIcon(taoBaoShop.getShopIcon()); + brandInfoVO.setListGoods(taoBaoShop.getListGoodsVO()); + data.put("shop", JsonUtil.getApiCommonGson().toJson(brandInfoVO)); + } else { + data.put("shop", JsonUtil.getApiCommonGson().toJson(taoBaoShop)); + } + } + } + } + + out.print(JsonUtil.loadTrueResult(buildSearchResult(data, ap))); + } + + private JSONObject buildSearchResult(JSONObject data, AppPageNotification ap) { + if (ap != null && data != null) { + Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); + data.put("notification", gson.toJson(ap)); + } + return data; + } + + /** + * @param acceptData + * @param key + * @param page + * @param filter + * @param order + * @param ap + * @param out + */ + private void searchJDGoods(AcceptData acceptData, Long uid, String key, Integer page, String filter, Integer order, + AppPageNotification ap, PrintWriter out) { + + String goodsId = null; + long count = 0; + List<JDGoods> goodsList = new ArrayList<>(); + + if (page == 1) { + List<String> linkList = HttpUtil.getUrlListFromText(key); + if (linkList != null && linkList.size() > 0) { + String jdId = clipboardAnalysisManager.parseJDSkuIdFromLink(linkList.get(0)); + if (!StringUtil.isNullOrEmpty(jdId)) { + goodsId = jdId; + } + } + } + + boolean hasCoupon = false; + if (goodsId != null) { + JDGoods goods = JDApiUtil.getGoodsDetail(goodsId); + if (goods != null) { + count = 1; + goodsList.add(goods); + } + } else { + JDSearchResult result = null; + String way = configService.getValue(ConfigKeyEnum.jdApiSearchKey.getKey(), acceptData.getSystem()); + if ("1".equals(way)) { + JDFilter filterAPI = new JDFilter(); + filterAPI.setKeyword(SearchFilterUtil.filterSearchContent(key)); + filterAPI.setPageIndex(page); + filterAPI.setPageSize(Constant.PAGE_SIZE); + + if (order != null) { + int sort = order.intValue(); + switch (sort) { + case 1: // 閿�閲� desc + filterAPI.setSort(JDFilter.SORT_DESC); + filterAPI.setSortName(JDFilter.SORTNAME_ORDER_COUNT_30DAYS); + break; + case 2: // 浠锋牸鈥攄esc + filterAPI.setSort(JDFilter.SORT_DESC); + filterAPI.setSortName(JDFilter.SORTNAME_PRICE); + break; + case 3: // 浠锋牸鈥攁sc + filterAPI.setSort(JDFilter.SORT_ASC); + filterAPI.setSortName(JDFilter.SORTNAME_PRICE); + break; + case 4: // 杩斿埄姣斺�擠ESC + filterAPI.setSort(JDFilter.SORT_DESC); + filterAPI.setSortName(JDFilter.SORTNAME_COMMISSION_SHARE); + break; + default: + break; + } + } + + if (!StringUtil.isNullOrEmpty(filter)) { + JSONObject jsonfilter = JSONObject.fromObject(filter); + Boolean coupon = jsonfilter.optBoolean("coupon"); + if (coupon != null && coupon) { + hasCoupon = true; + filterAPI.setIsCoupon(1); // 鏈夊埜 + } + + Boolean zy = jsonfilter.optBoolean("zy"); + if (zy != null && zy) { + filterAPI.setOwner("g"); // 鑷惀 + } + + String minPrice = jsonfilter.optString("minPrice"); + if (!StringUtil.isNullOrEmpty(minPrice)) { + filterAPI.setPricefrom(Double.parseDouble(minPrice)); + } + + String maxPrice = jsonfilter.optString("maxPrice"); + if (!StringUtil.isNullOrEmpty(maxPrice)) { + filterAPI.setPriceto(Double.parseDouble(maxPrice)); + } + } + + result = JDApiUtil.queryByKey(filterAPI); + } else { + // 缃戦〉鐖彇 + JDSearchFilter jdfilter = new JDSearchFilter(); + jdfilter.setKey(SearchFilterUtil.filterSearchContent(key)); + jdfilter.setPageNo(page); + jdfilter.setPageSize(Constant.PAGE_SIZE); + + if (order != null) { + int sort = order.intValue(); + switch (sort) { + case 1: // 閿�閲� desc + jdfilter.setSort(JDSearchFilter.SORT_DESC); + jdfilter.setSortName(JDSearchFilter.SORTNAME_ORDER_COUNT_30DAYS); + break; + case 2: // 浠锋牸鈥攄esc + jdfilter.setSort(JDSearchFilter.SORT_DESC); + jdfilter.setSortName(JDSearchFilter.SORTNAME_PRICE); + break; + case 3: // 浠锋牸鈥攁sc + jdfilter.setSort(JDSearchFilter.SORT_ASC); + jdfilter.setSortName(JDSearchFilter.SORTNAME_PRICE); + break; + case 4: // 杩斿埄姣斺�擠ESC + jdfilter.setSort(JDSearchFilter.SORT_DESC); + jdfilter.setSortName(JDSearchFilter.SORTNAME_COMMISSION_SHARE); + break; + default: + break; + } + } + + if (!StringUtil.isNullOrEmpty(filter)) { + JSONObject jsonfilter = JSONObject.fromObject(filter); + Boolean coupon = jsonfilter.optBoolean("coupon"); + if (coupon != null && coupon) { + hasCoupon = true; + jdfilter.setHasCoupon(1); // 鏈夊埜 + } + + Boolean zy = jsonfilter.optBoolean("zy"); + if (zy != null && zy) { + jdfilter.setIsZY(1); // 鑷惀 + } + + Boolean delivery = jsonfilter.optBoolean("delivery"); + if (delivery != null && delivery) { + jdfilter.setDeliveryType(1); // 浜笢閰嶉�� + } + + String minPrice = jsonfilter.optString("minPrice"); + if (!StringUtil.isNullOrEmpty(minPrice)) { + if (minPrice.contains(".")) { + minPrice = minPrice.replace(".", "-"); + minPrice = minPrice.split("-")[0]; + } + jdfilter.setFromPrice(Integer.parseInt(minPrice)); + } + + String maxPrice = jsonfilter.optString("maxPrice"); + if (!StringUtil.isNullOrEmpty(maxPrice)) { + if (maxPrice.contains(".")) { + maxPrice = maxPrice.replace(".", "-"); + maxPrice = maxPrice.split("-")[0]; + } + jdfilter.setToPrice(Integer.parseInt(maxPrice)); + } + } + result = JDUtil.searchByKey(jdfilter); + } + + if (result != null) { + PageEntity pageEntity = result.getPageEntity(); + if (pageEntity != null) { + count = pageEntity.getTotalCount(); + } + + goodsList = result.getGoodsList(); + } + } + + JSONObject data = new JSONObject(); + JSONArray array = new JSONArray(); + + if (goodsList != null && goodsList.size() > 0) { + Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) + .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); + GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), + acceptData.getVersion(), acceptData.getSystem()); + + + List<GoodsDetailVO> voList = goodsLijinMnager.loadOtherMoneyInfo(acceptData.getSystem(), uid, goodsList, paramsDTO); + + for (GoodsDetailVO vo : voList) { + if (hasCoupon) { + if (vo.isHasCoupon()) { + array.add(gson.toJson(vo)); + } + } else { + array.add(gson.toJson(vo)); + } + } + } + + + data.put("result", array); + data.put("count", count); + out.print(JsonUtil.loadTrueResult(buildSearchResult(data, ap))); + } + + + /** + * 鎷煎澶� + * + * @param acceptData + * @param key + * @param page + * @param filter + * @param order + * @param ap + * @param out + */ + private void searchPDDGoods(AcceptData acceptData, Long uid, String key, Integer page, String filter, Integer order, + AppPageNotification ap, PrintWriter out) { + String goodsId = null; + if (page == 1) { + List<String> linkList = HttpUtil.getUrlListFromText(key); + if (linkList != null && linkList.size() > 0) { + String pddGoodsId = PinDuoDuoUtil.getPDDGoodsId(linkList.get(0)); + if (!StringUtil.isNullOrEmpty(pddGoodsId)) { + goodsId = pddGoodsId; + } + } + } + int count = 0; + List<PDDGoodsDetail> goodsList = new ArrayList<>(); + + String customParams = Constant.PDD_SEARCH_CUSTOMER_PARAMS; + if (uid != null) { + String cp = pddAuthService.getFanliCustomParams(uid); + if (PinDuoDuoApiUtil.isAuth(pidManager.getPidCache(acceptData.getSystem(), Constant.SOURCE_TYPE_PDD, SystemPIDInfo.PidType.fanli), cp)) { + customParams = cp; + } + } + + if (goodsId != null) { + try { + PDDGoodsDetail pddGoodsDetail = PinDuoDuoApiUtil.getGoodsDetail(goodsId, PinDuoDuoApiUtil.PID_DEFAULT, customParams); + if (pddGoodsDetail != null) { + count = 1; + goodsList.add(pddGoodsDetail); + } + } catch (PDDApiException e) { + e.printStackTrace(); + if (e.getCode() == PDDApiException.CODE_NOT_AUTH) { + try { + PDDGoodsDetail pddGoodsDetail = PinDuoDuoApiUtil.getGoodsDetail(goodsId, PinDuoDuoApiUtil.PID_DEFAULT, Constant.PDD_SEARCH_CUSTOMER_PARAMS); + if (pddGoodsDetail != null) { + count = 1; + goodsList.add(pddGoodsDetail); + } + } catch (Exception e1) { + + } + } + } + } else { + PDDSearchFilter pddfilter = new PDDSearchFilter(); + pddfilter.setKw(SearchFilterUtil.filterSearchContent(key)); + pddfilter.setPage(page); + pddfilter.setPageSize(Constant.PAGE_SIZE); + + if (order != null) { + int sort = order.intValue(); + switch (sort) { + case 1: // 閿�閲� desc + pddfilter.setSortType(6); + break; + case 2: // 浠锋牸鈥攄esc + pddfilter.setSortType(4); + break; + case 3: // 浠锋牸鈥攁sc + pddfilter.setSortType(3); + break; + case 4: // 杩斿埄姣斺�攄esc + pddfilter.setSortType(2); + break; + default: // 缁煎悎鎺掑簭 + pddfilter.setSortType(0); + break; + } + } + + if (!StringUtil.isNullOrEmpty(filter)) { + JSONObject jsonfilter = JSONObject.fromObject(filter); + Boolean coupon = jsonfilter.optBoolean("coupon"); + if (coupon != null && coupon) { + pddfilter.setHasCoupon(true); // 鏈夊埜 + } + + Boolean brand = jsonfilter.optBoolean("brand"); + if (brand != null && brand) { + pddfilter.setIsBrand(true); // 鏄惁鏄搧鐗� + } + } + + + PDDGoodsResult result = null; + try { + result = PinDuoDuoApiUtil.searchGoods(pddfilter, customParams); + } catch (PDDApiException e) { + e.printStackTrace(); + if (e.getCode() == PDDApiException.CODE_NOT_AUTH) { + try { + result = PinDuoDuoApiUtil.searchGoods(pddfilter, Constant.PDD_SEARCH_CUSTOMER_PARAMS); + } catch (PDDApiException e1) { + e1.printStackTrace(); + } + } + } + + if (result != null) { + count = result.getTotalCount(); + goodsList = result.getGoodsList(); + } + + } + + JSONObject data = new JSONObject(); + JSONArray array = new JSONArray(); + Gson gson = JsonUtil.getApiCommonGson(); + if (goodsList != null && goodsList.size() > 0) { + GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), + acceptData.getVersion(), acceptData.getSystem()); + List<GoodsDetailVO> voList = goodsLijinMnager.loadOtherMoneyInfo(acceptData.getSystem(), uid, goodsList, paramsDTO); + for (GoodsDetailVO goodsDetailVO : voList) { + array.add(gson.toJson(goodsDetailVO)); + } + } + + data.put("result", array); + data.put("count", count); + out.print(JsonUtil.loadTrueResult(buildSearchResult(data, ap))); + } + + /** + * 鎼滅储鎶栭煶鍟嗗搧 + * + * @param acceptData + * @param key + * @param page + * @param filter + * @param order + * @param out void 杩斿洖绫诲瀷 + * @throws + * @Title: searchVIPGoods + * @Description: + */ + private void searchDYGoods(AcceptData acceptData, Long uid, String key, Integer page, String filter, Integer order, + AppPageNotification ap, PrintWriter out) { + String goodsId = null; + if (page == 1) { + List<String> linkList = HttpUtil.getUrlListFromText(key); + if (linkList != null && linkList.size() > 0) { + String productId = DYUtil.parseProdectIdFromLink(linkList.get(0)); + if (!StringUtil.isNullOrEmpty(productId)) { + goodsId = productId; + } + } + } + + + long count = 0; + List<BaseGoodsInfo> goodsList = new ArrayList<>(); + if (goodsId != null) { + DYGoodsDetail goodsInfo = CSJCPSApiUtil.goodsDetail(Long.parseLong(goodsId)); + if (goodsInfo != null) { + goodsList.add(goodsInfo); + count = 1; + } + } else { + DYGoodsSearchFilter searchFilter = new DYGoodsSearchFilter(); + searchFilter.setTitle(key); + searchFilter.setPage(page); + searchFilter.setPageSize(Constant.PAGE_SIZE); + + if (order != null) { + int sort = order.intValue(); + switch (sort) { + case 1: // 閿�閲� desc + searchFilter.setSearch_type(1); + searchFilter.setOrder_type(1); + break; + case 2: // 浠锋牸鈥攄esc + searchFilter.setSearch_type(2); + searchFilter.setOrder_type(1); + break; + case 3: // 浠锋牸鈥攁sc + searchFilter.setSearch_type(2); + searchFilter.setOrder_type(0); + break; + case 4: // 杩斿埄姣� + searchFilter.setSearch_type(4); + searchFilter.setOrder_type(1); + break; + default: // 缁煎悎鎺掑簭 + searchFilter.setSearch_type(0); + searchFilter.setOrder_type(0); + break; + } + } + + if (!StringUtil.isNullOrEmpty(filter)) { + JSONObject jsonfilter = JSONObject.fromObject(filter); + String minPrice = jsonfilter.optString("minPrice"); + if (!StringUtil.isNullOrEmpty(minPrice)) { + searchFilter.setPrice_min(new BigDecimal(minPrice).min(new BigDecimal(100)).intValue()); + } + + String maxPrice = jsonfilter.optString("maxPrice"); + if (!StringUtil.isNullOrEmpty(maxPrice)) { + searchFilter.setPrice_max(new BigDecimal(maxPrice).min(new BigDecimal(100)).intValue()); + } + } + + + ListResult result = CSJCPSApiUtil.searchGoods(searchFilter); + if (result != null) { + count = result.getCount(); + List<Object> tempList = result.getDataList(); + if (tempList != null) { + for (Object o : tempList) { + goodsList.add((DYGoods) o); + } + } + + } + } + + JSONObject data = new JSONObject(); + JSONArray array = new JSONArray(); + + if (goodsList != null && goodsList.size() > 0) { + Gson gson = JsonUtil.getApiCommonGson(); + GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), + acceptData.getVersion(), acceptData.getSystem()); + + List<GoodsDetailVO> voList = goodsLijinMnager.loadOtherMoneyInfo(acceptData.getSystem(), uid, goodsList, paramsDTO); + for (GoodsDetailVO goodsDetailVO : voList) { + array.add(gson.toJson(goodsDetailVO)); + } + } + + data.put("result", array); + data.put("count", count); + out.print(JsonUtil.loadTrueResult(buildSearchResult(data, ap))); + } + + + private void searchVIPGoods(AcceptData acceptData, Long uid, String key, Integer page, String filter, Integer order, + AppPageNotification ap, PrintWriter out) { + String goodsId = null; + if (page == 1) { + List<String> linkList = HttpUtil.getUrlListFromText(key); + if (linkList != null && linkList.size() > 0) { + String vipId = VipShopUtil.parseGoodsIdByUrl(linkList.get(0)); + if (!StringUtil.isNullOrEmpty(vipId)) { + goodsId = vipId; + } + } + } + + + long count = 0; + List<VIPGoodsInfo> goodsList = new ArrayList<>(); + if (goodsId != null) { + VIPGoodsInfo goodsInfo = VipShopApiUtil.getGoodsDetail(goodsId); + if (goodsInfo != null) { + goodsList.add(goodsInfo); + count = 1; + } + } else { + VIPSearchFilter searchFilter = new VIPSearchFilter(); + searchFilter.setKeyword(key); + searchFilter.setPage(page); + searchFilter.setPageSize(Constant.PAGE_SIZE); + + if (order != null) { + int sort = order.intValue(); + switch (sort) { + case 2: // 浠锋牸鈥攄esc + searchFilter.setFieldName("price"); + searchFilter.setOrder(1); + break; + case 3: // 浠锋牸鈥攁sc + searchFilter.setFieldName("price"); + searchFilter.setOrder(0); + break; + case 5: // 鎶樻墸鈥攁ec + searchFilter.setFieldName("discount"); + searchFilter.setOrder(0); + break; + default: // 缁煎悎鎺掑簭 + break; + } + } + + if (!StringUtil.isNullOrEmpty(filter)) { + JSONObject jsonfilter = JSONObject.fromObject(filter); + String minPrice = jsonfilter.optString("minPrice"); + if (!StringUtil.isNullOrEmpty(minPrice)) { + searchFilter.setPriceStart(minPrice); + } + + String maxPrice = jsonfilter.optString("maxPrice"); + if (!StringUtil.isNullOrEmpty(maxPrice)) { + searchFilter.setPriceEnd(maxPrice); + } + } + + + VIPSearchResult result = VipShopApiUtil.search(searchFilter); + if (result != null) { + count = result.getTotal(); + + goodsList = result.getGoodsList(); + } + } + + JSONObject data = new JSONObject(); + JSONArray array = new JSONArray(); + + if (goodsList != null && goodsList.size() > 0) { + Gson gson = JsonUtil.getApiCommonGson(); + GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), + acceptData.getVersion(), acceptData.getSystem()); + + List<GoodsDetailVO> voList = goodsLijinMnager.loadOtherMoneyInfo(acceptData.getSystem(), uid, goodsList, paramsDTO); + for (GoodsDetailVO goodsDetailVO : voList) { + array.add(gson.toJson(goodsDetailVO)); + } + } + + data.put("result", array); + data.put("count", count); + out.print(JsonUtil.loadTrueResult(buildSearchResult(data, ap))); + } + + /** + * 鎼滅储鍞搧浼氬晢鍝� + * + * @param acceptData + * @param key + * @param page + * @param filter + * @param order + * @param out void 杩斿洖绫诲瀷 + * @throws + * @Title: searchVIPGoods + * @Description: + */ + private void searchSuningGoods(AcceptData acceptData, Long uid, String key, Integer page, String filter, Integer order, + AppPageNotification ap, PrintWriter out) { + + String goodsId = null; + if (page == 1) { + List<String> linkList = HttpUtil.getUrlListFromText(key); + if (linkList != null && linkList.size() > 0) { + String suningId = SuningUtil.parseGoodsIdByUrl(linkList.get(0)); + if (!StringUtil.isNullOrEmpty(suningId)) { + goodsId = suningId; + } + } + } + + long count = 0; + List<SuningGoodsInfo> goodsList = new ArrayList<>(); + if (goodsId != null) { + + String[] ids = SuningUtil.getGoodsIdDetail(goodsId); + if (ids != null && ids.length == 2) { + SuningGoodsInfo goodsInfo = SuningApiUtil.getGoodsDetail(ids[1], ids[0]); + if (goodsInfo != null) { + goodsList.add(goodsInfo); + count = 1; + } + } + } else { + SuningQueryModel searchFilter = new SuningQueryModel(); + searchFilter.setKeyword(key); + searchFilter.setPageIndex(page); + searchFilter.setSize(10); + + if (order != null) { + if (order == 1) { // 閿�閲忛珮鍒颁綆 + searchFilter.setSortType(2); + } else if (order == 2) { // 浠锋牸楂樺埌浣� + searchFilter.setSortType(3); + } else if (order == 3) { // 浠锋牸浣庡埌楂� + searchFilter.setSortType(4); + } else if (order == 4) { // 杩斿埄姣旈珮鍒颁綆 + searchFilter.setSortType(5); + } + } + + if (!StringUtil.isNullOrEmpty(filter)) { + JSONObject jsonfilter = JSONObject.fromObject(filter); + Boolean coupon = jsonfilter.optBoolean("coupon"); + if (coupon != null && coupon) { + searchFilter.setCoupon(1); // 鏈夊埜 + } + + Boolean snfwservice = jsonfilter.optBoolean("snfwservice");// 鑻忓畞鏈嶅姟 + if (snfwservice != null && snfwservice) { + searchFilter.setSnfwservice(1); + } + + Boolean snhwg = jsonfilter.optBoolean("snhwg");// 鑻忓畞鍥介檯 + if (snhwg != null && snhwg) { + searchFilter.setSnhwg(1); + } + + Boolean suningService = jsonfilter.optBoolean("suningService");// 鑻忓畞鑷惀 + if (suningService != null && suningService) { + searchFilter.setSuningService(1); + } + + Boolean pgSearch = jsonfilter.optBoolean("pgSearch");// 鎷艰喘 + if (pgSearch != null && pgSearch) { + searchFilter.setPgSearch(1); + } + + String minPrice = jsonfilter.optString("minPrice"); + if (!StringUtil.isNullOrEmpty(minPrice)) { + searchFilter.setStartPrice(minPrice); + } + + String maxPrice = jsonfilter.optString("maxPrice"); + if (!StringUtil.isNullOrEmpty(maxPrice)) { + searchFilter.setEndPrice(maxPrice); + } + } + + goodsList = SuningApiUtil.searchGoodsOld(searchFilter); + count = 1000; + } + + JSONObject data = new JSONObject(); + JSONArray array = new JSONArray(); + + List<SuningGoodsInfo> resultList = null; + + if (goodsList != null && goodsList.size() > 0) { + List<String> listId = new ArrayList<>(); + for (SuningGoodsInfo goodsInfo : goodsList) { + SuningCommodityInfo info = goodsInfo.getCommodityInfo(); + if (info != null) { + listId.add(info.getCommodityCode() + "-" + info.getSupplierCode()); + } + } + resultList = SuningApiUtil.getGoodsDetailList(listId); + } + + if (resultList != null) { + Gson gson = JsonUtil.getApiCommonGson(); + if (resultList != null && resultList.size() > 0) { + GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), + acceptData.getVersion(), acceptData.getSystem()); + + List<GoodsDetailVO> voList = goodsLijinMnager.loadOtherMoneyInfo(acceptData.getSystem(), uid, resultList, paramsDTO); + for (GoodsDetailVO goodsDetailVO : voList) { + array.add(gson.toJson(goodsDetailVO)); + } + } + } + + data.put("result", array); + data.put("count", count); + out.print(JsonUtil.loadTrueResult(buildSearchResult(data, ap))); + } + +} -- Gitblit v1.8.0