| | |
| | | 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.entity.SystemEnum; |
| | | import com.yeshi.fanli.entity.SystemPIDInfo; |
| | | import com.yeshi.fanli.exception.pdd.PDDApiException; |
| | | import com.yeshi.fanli.exception.taobao.TaoBaoTokenParseException; |
| | | import com.yeshi.fanli.lijin.manager.GoodsLijinMnager; |
| | | import com.yeshi.fanli.service.inter.pdd.PDDAuthService; |
| | | import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService; |
| | | import com.yeshi.fanli.service.manger.PIDManager; |
| | | import com.yeshi.fanli.util.suning.SuningUtil; |
| | | import com.yeshi.fanli.util.vipshop.VipShopUtil; |
| | | import com.yeshi.goods.facade.utils.taobao.DaTaoKeApiUtil; |
| | | 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.JsonUtil; |
| | | |
| | | 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.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.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.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.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.inter.user.tb.UserExtraTaoBaoInfoService; |
| | | import com.yeshi.fanli.service.manger.ClipboardAnalysisManager; |
| | | import com.yeshi.fanli.service.manger.IClipboardAnalysisResult; |
| | | import com.yeshi.common.entity.PageEntity; |
| | | 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.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.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; |
| | |
| | | // 去除前后空格 |
| | | text = text.trim(); |
| | | String originalText = text; |
| | | if (acceptData.getSystem() == SystemEnum.yhqjx) { |
| | | if (acceptData.getSystem() == SystemEnum.yhqjx || acceptData.getSystem() == SystemEnum.hsb) { |
| | | Integer sourceType = clipboardAnalysisManager.tejiaParseSourceType(text); |
| | | JSONObject root = new JSONObject(); |
| | | root.put("type", 2); |
| | |
| | | |
| | | @Override |
| | | public void onResult(GoodsDocParseResultVO result) { |
| | | if (uid == null || acceptData.getSystem() == SystemEnum.yhqjx) { |
| | | if (uid == null || (acceptData.getSystem() == SystemEnum.yhqjx || acceptData.getSystem() == SystemEnum.hsb)) { |
| | | out.print(JsonUtil.loadFalseResult("无推荐")); |
| | | return; |
| | | } |
| | |
| | | int platformCode = Constant.getPlatformCode(acceptData.getPlatform()); |
| | | int version = Integer.parseInt(acceptData.getVersion()); |
| | | JumpDetailContentVO convert = new JumpDetailContentVO(); |
| | | convert.setJumpDetail(jumpDetailV2Service.getByTypeCache("web", platformCode, version)); |
| | | 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); |
| | |
| | | if (result.getFirstGoods().getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) { |
| | | view = new JumpDetailContentVO(); |
| | | view.setJumpDetail( |
| | | jumpDetailV2Service.getByTypeCache("goodsdetail", platformCode, version)); |
| | | 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)); |
| | | 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)); |
| | | jumpDetailV2Service.getByTypeCache("goodsdetail_pdd", platformCode, version, acceptData.getSystem())); |
| | | view.setParams(params); |
| | | } |
| | | |
| | |
| | | state = 2; |
| | | data.put("stateDesc", "选择搜券或转链"); |
| | | view = new JumpDetailContentVO(); |
| | | view.setJumpDetail(jumpDetailV2Service.getByTypeCache("web", platformCode, version)); |
| | | view.setJumpDetail(jumpDetailV2Service.getByTypeCache("web", platformCode, version, acceptData.getSystem())); |
| | | JSONObject params = new JSONObject(); |
| | | params.put("url", result.getFirstLink()); |
| | | view.setParams(params); |
| | |
| | | TaoBaoGoodsBrief goodsBrief = null; |
| | | String specialId = userExtraTaoBaoInfoService.getSpecialIdByUid(uid); |
| | | try { |
| | | goodsBrief = TaoKeApiUtil.searchGoodsDetail(goods.getGoodsId(), specialId, null); |
| | | goodsBrief = TaoKeApiUtil.searchGoodsDetail(StringUtil.isNullOrEmpty(goods.getGoodsSign()) ? goods.getGoodsId() : goods.getGoodsSign(), specialId, null); |
| | | } catch (TaobaoGoodsDownException e) { |
| | | e.printStackTrace(); |
| | | } |
| | |
| | | acceptData.getPlatform(), |
| | | acceptData.getVersion(), acceptData.getSystem())); |
| | | |
| | | goodsDetailVO = goodsLijinMnager.loadTBMoneyInfo(acceptData.getSystem(), uid, goodsBrief, goodsDetailVO); |
| | | goodsDetailVO = goodsLijinMnager.loadTBMoneyInfo(acceptData.getSystem(), uid, goodsBrief, goodsDetailVO, false); |
| | | |
| | | data.put("goods", |
| | | gson.toJson(goodsDetailVO)); |
| | |
| | | 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"; |
| | |
| | | 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())), params); |
| | | Constant.getPlatformCode(acceptData.getPlatform()), Integer.parseInt(acceptData.getVersion()), acceptData.getSystem()), params); |
| | | data.put("left", gson.toJson(left)); |
| | | |
| | | // 去网页 |
| | |
| | | params.put("url", rightValue); |
| | | |
| | | RecommendJumpInfoVO right = new RecommendJumpInfoVO("有更高返利?", jumpDetailV2Service.getByTypeCache("web", |
| | | Constant.getPlatformCode(acceptData.getPlatform()), Integer.parseInt(acceptData.getVersion())), |
| | | Constant.getPlatformCode(acceptData.getPlatform()), Integer.parseInt(acceptData.getVersion()), acceptData.getSystem()), |
| | | params); |
| | | data.put("right", gson.toJson(right)); |
| | | } |
| | |
| | | */ |
| | | @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) { |
| | | Integer order, Long uid, String notifyType, HttpSession session, HttpServletRequest request, PrintWriter out) { |
| | | |
| | | if (goodsType == null || goodsType < 1 || goodsType > 5) { |
| | | if (goodsType == null || goodsType < 1 || goodsType > 7) { |
| | | out.print(JsonUtil.loadFalseResult(1, "请传递正确平台参数")); |
| | | return; |
| | | } |
| | |
| | | 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); |
| | | 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(); |
| | |
| | | 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, PrintWriter out) { |
| | | Integer order, Long uid, String notifyType, HttpSession session, HttpServletRequest request, PrintWriter out) { |
| | | |
| | | if (goodsType == null || goodsType < 1 || goodsType > 5) { |
| | | out.print(JsonUtil.loadFalseResult(1, "请传递正确平台参数")); |
| | |
| | | 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); |
| | | 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); |
| | | } |
| | | }); |
| | | |
| | |
| | | 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); |
| | | |
| | |
| | | */ |
| | | private void searchTaoBaoGoods(AcceptData acceptData, Long uid, String key, Integer page, String filter, Integer order, |
| | | AppPageNotification ap, PrintWriter out) { |
| | | Long goodsId = null; |
| | | String goodsId = null; |
| | | //是否包含淘宝链接/口令 |
| | | if (page == 1) { |
| | | List<String> linkList = HttpUtil.getUrlListFromText(key); |
| | | if ((linkList != null && linkList.size() > 0) || TaoBaoUtil.isHaveNewVersionTaoBaoToken(key)) { |
| | | try { |
| | | TaoKeApiUtil.TokenConvertResult result = TaoKeApiUtil.tokenConvert(key); |
| | | if (result != null) { |
| | | goodsId = result.getNum_iid(); |
| | | } |
| | | } catch (TaoBaoTokenParseException e) { |
| | | e.printStackTrace(); |
| | | if (((linkList != null && linkList.size() > 0) || TaoBaoUtil.isHaveNewVersionTaoBaoToken(key))&&false) { |
| | | // 暂时不通过链接搜索 |
| | | String id = DaTaoKeApiUtil.parseGoodsIdFromToken(key); |
| | | if (id != null) { |
| | | goodsId = id; |
| | | } |
| | | if (goodsId == null) { |
| | | Long id = DaTaoKeApiUtil.parseTaoBaoToken(key); |
| | | if (id != null) { |
| | | goodsId = id; |
| | | try { |
| | | TaoKeApiUtil.TokenConvertResult result = TaoKeApiUtil.tokenConvert(key); |
| | | if (result != null) { |
| | | goodsId = result.getNum_iid(); |
| | | } |
| | | } catch (TaoBaoTokenParseException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | |
| | | } |
| | | if (goodsId == null) { |
| | | //解析链接 |
| | | // 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; |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | // 淘宝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())) { |
| | | //有一个商品且里面的商品ID为空的情况 |
| | | 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; |
| | |
| | | GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), |
| | | acceptData.getVersion(), acceptData.getSystem()); |
| | | |
| | | List<GoodsDetailVO> list = goodsLijinMnager.loadTBMoneyInfo(acceptData.getSystem(), uid, goodsBriefList, paramsDTO); |
| | | List<GoodsDetailVO> list = goodsLijinMnager.loadTBMoneyInfo(acceptData.getSystem(), uid, goodsBriefList, paramsDTO, false); |
| | | |
| | | Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) |
| | | .excludeFieldsWithoutExposeAnnotation().create(); |
| | |
| | | |
| | | boolean hasCoupon = false; |
| | | if (goodsId != null) { |
| | | JDGoods goods = JDApiUtil.getGoodsDetail(Long.parseLong(goodsId)); |
| | | JDGoods goods = JDApiUtil.getGoodsDetail(goodsId); |
| | | if (goods != null) { |
| | | count = 1; |
| | | goodsList.add(goods); |
| | |
| | | |
| | | if (goodsId != null) { |
| | | try { |
| | | PDDGoodsDetail pddGoodsDetail = PinDuoDuoApiUtil.getGoodsDetail(Long.parseLong(goodsId), PinDuoDuoApiUtil.PID_DEFAULT, customParams); |
| | | 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(); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 搜索唯品会商品 |
| | | * 搜索抖音商品 |
| | | * |
| | | * @param acceptData |
| | | * @param key |
| | |
| | | * @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: // 价格—desc |
| | | searchFilter.setSearch_type(2); |
| | | searchFilter.setOrder_type(1); |
| | | break; |
| | | case 3: // 价格—asc |
| | | 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; |