| | |
| | | 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.exception.pdd.PDDApiException; |
| | | 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 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.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; |
| | |
| | | @Resource |
| | | private GoodsLijinMnager goodsLijinMnager; |
| | | |
| | | @Resource |
| | | private PIDManager pidManager; |
| | | |
| | | |
| | | /** |
| | | * 粘贴板信息推荐 |
| | |
| | | // 去除前后空格 |
| | | 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() { |
| | | |
| | | JSONObject data = new JSONObject(); |
| | | @Override |
| | | public void onResult(GoodsDocParseResultVO result) { |
| | | if (uid == null || (acceptData.getSystem() == SystemEnum.yhqjx || acceptData.getSystem() == SystemEnum.hsb)) { |
| | | out.print(JsonUtil.loadFalseResult("无推荐")); |
| | | return; |
| | | } |
| | | |
| | | clipboardAnalysisManager.parse(acceptData.getPlatform(), acceptData.getVersion(), originalText, uid, |
| | | new IClipboardAnalysisResult() { |
| | | 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); |
| | | |
| | | @Override |
| | | public void onResult(GoodsDocParseResultVO result) { |
| | | if (uid == null) { |
| | | out.print(JsonUtil.loadFalseResult("无推荐")); |
| | | 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; |
| | | } |
| | | |
| | | 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; |
| | | @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; |
| | | } |
| | | 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)); |
| | | @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(); |
| | | } |
| | | |
| | | root.put("data", data); |
| | | out.print(JsonUtil.loadTrueResult(root)); |
| | | return; |
| | | } |
| | | if (goodsBrief != null) { |
| | | goods = CommonGoodsFactory.create(goodsBrief); |
| | | Gson gson = JsonUtil |
| | | .getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) |
| | | .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd") |
| | | .create(); |
| | | data.put("type", 3); |
| | | |
| | | @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(); |
| | | } |
| | | GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertCommonGoods(goods, |
| | | orderHongBaoMoneyComputeService.getShowComputeRate( |
| | | acceptData.getPlatform(), |
| | | acceptData.getVersion(), acceptData.getSystem())); |
| | | |
| | | if (goodsBrief != null) { |
| | | goods = CommonGoodsFactory.create(goodsBrief); |
| | | Gson gson = JsonUtil |
| | | .getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) |
| | | 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); |
| | | |
| | | |
| | | GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertCommonGoods(goods, |
| | | orderHongBaoMoneyComputeService.getShowComputeRate( |
| | | acceptData.getPlatform(), |
| | | acceptData.getVersion(), acceptData.getSystem())); |
| | | |
| | | goodsDetailVO = goodsLijinMnager.loadTBMoneyInfo(acceptData.getSystem(), uid, goodsBrief, goodsDetailVO); |
| | | |
| | | data.put("goods", |
| | | gson.toJson(goodsDetailVO)); |
| | | // 跳转详情 |
| | | if (VersionUtil.greaterThan_2_1_3(acceptData.getPlatform(), |
| | | acceptData.getVersion())) { |
| | | buildGoodsClick(data, goods, acceptData, gson); |
| | | } |
| | | |
| | | 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 { |
| | | 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)); |
| | | // 低于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; |
| | | } |
| | | } 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; |
| | | } |
| | | |
| | | JSONObject goodsJSON = new JSONObject(); |
| | | goodsJSON.put("title", goods.getTitle()); |
| | | goodsJSON.put("pictUrl", goods.getPicture()); |
| | | @Override |
| | | public void onResult(TokenVO tokenVO) { |
| | | out.print(JsonUtil.loadTrueResult(tokenVO)); |
| | | return; |
| | | } |
| | | |
| | | data.put("type", 4); |
| | | data.put("desc", "该商品无推广信息"); |
| | | data.put("goods", goodsJSON); |
| | | out.print(JsonUtil.loadTrueResult(data)); |
| | | return; |
| | | } |
| | | @Override |
| | | public void none() { |
| | | out.print(JsonUtil.loadFalseResult("无推荐")); |
| | | } |
| | | |
| | | @Override |
| | | public void onResult(TokenVO tokenVO) { |
| | | out.print(JsonUtil.loadTrueResult(tokenVO)); |
| | | return; |
| | | } |
| | | @Override |
| | | public void needLogin(String msg) { |
| | | out.print(JsonUtil.loadFalseResult(1001, msg)); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | |
| | | @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) { |
| | |
| | | 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, 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); |
| | | |
| | |
| | | */ |
| | | 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; |
| | | String goodsId = null; |
| | | //是否包含淘宝链接/口令 |
| | | if (page == 1) { |
| | | daTaoKeList = daTaoKeGoodsDetailV2Service.listByDtitle(key); |
| | | } |
| | | |
| | | String specialId = null; |
| | | if (uid != null) { |
| | | specialId = userExtraTaoBaoInfoService.getSpecialIdByUid(uid); |
| | | } |
| | | |
| | | // 淘宝api搜索商品 |
| | | TaoBaoSearchResult result = taoBaoGoodsCacheUtil.getSearchResult(sf); // TaoBaoUtil.search(sf, specialId, null); |
| | | if (result == null) { |
| | | result = TaoBaoUtil.search(sf, specialId, null); |
| | | taoBaoGoodsCacheUtil.saveSearchResult(sf, result); |
| | | } |
| | | TaoBaoSearchResult finalResult = result; |
| | | // 搜索结果缓存到redis |
| | | 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<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(); |
| | | } |
| | | |
| | | 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) { |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | 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())) { |
| | | //有一个商品且里面的商品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; |
| | | // 搜索结果缓存到redis |
| | | 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, taoBaoGoodsBriefs, paramsDTO); |
| | | 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", result.getTaoBaoHead().getDocsfound()); |
| | | data.put("count", count); |
| | | |
| | | if (page == 1) { // 第一页返回店铺信息 |
| | | String platform = acceptData.getPlatform(); |
| | |
| | | private void searchJDGoods(AcceptData acceptData, Long uid, 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); |
| | | String goodsId = null; |
| | | long count = 0; |
| | | List<JDGoods> goodsList = new ArrayList<>(); |
| | | |
| | | 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: // 价格—desc |
| | | filterAPI.setSort(JDFilter.SORT_DESC); |
| | | filterAPI.setSortName(JDFilter.SORTNAME_PRICE); |
| | | break; |
| | | case 3: // 价格—asc |
| | | filterAPI.setSort(JDFilter.SORT_ASC); |
| | | filterAPI.setSortName(JDFilter.SORTNAME_PRICE); |
| | | break; |
| | | case 4: // 返利比—DESC |
| | | filterAPI.setSort(JDFilter.SORT_DESC); |
| | | filterAPI.setSortName(JDFilter.SORTNAME_COMMISSION_SHARE); |
| | | break; |
| | | default: |
| | | break; |
| | | 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; |
| | | } |
| | | } |
| | | |
| | | 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: // 价格—desc |
| | | jdfilter.setSort(JDSearchFilter.SORT_DESC); |
| | | jdfilter.setSortName(JDSearchFilter.SORTNAME_PRICE); |
| | | break; |
| | | case 3: // 价格—asc |
| | | jdfilter.setSort(JDSearchFilter.SORT_ASC); |
| | | jdfilter.setSortName(JDSearchFilter.SORTNAME_PRICE); |
| | | break; |
| | | case 4: // 返利比—DESC |
| | | 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; |
| | | 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: // 价格—desc |
| | | filterAPI.setSort(JDFilter.SORT_DESC); |
| | | filterAPI.setSortName(JDFilter.SORTNAME_PRICE); |
| | | break; |
| | | case 3: // 价格—asc |
| | | filterAPI.setSort(JDFilter.SORT_ASC); |
| | | filterAPI.setSortName(JDFilter.SORTNAME_PRICE); |
| | | break; |
| | | case 4: // 返利比—DESC |
| | | 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: // 价格—desc |
| | | jdfilter.setSort(JDSearchFilter.SORT_DESC); |
| | | jdfilter.setSortName(JDSearchFilter.SORTNAME_PRICE); |
| | | break; |
| | | case 3: // 价格—asc |
| | | jdfilter.setSort(JDSearchFilter.SORT_ASC); |
| | | jdfilter.setSortName(JDSearchFilter.SORTNAME_PRICE); |
| | | break; |
| | | case 4: // 返利比—DESC |
| | | 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 (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(); |
| | | GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), |
| | | acceptData.getVersion(), acceptData.getSystem()); |
| | | 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); |
| | | 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 { |
| | | 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); |
| | |
| | | */ |
| | | private void searchPDDGoods(AcceptData acceptData, Long uid, 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: // 价格—desc |
| | | pddfilter.setSortType(4); |
| | | break; |
| | | case 3: // 价格—asc |
| | | pddfilter.setSortType(3); |
| | | break; |
| | | case 4: // 返利比—desc |
| | | pddfilter.setSortType(2); |
| | | break; |
| | | default: // 综合排序 |
| | | pddfilter.setSortType(0); |
| | | break; |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | |
| | | 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(); |
| | | String customParams = Constant.PDD_SEARCH_CUSTOMER_PARAMS; |
| | | List<PDDGoodsDetail> goodsList = new ArrayList<>(); |
| | | |
| | | String customParams = Constant.PDD_SEARCH_CUSTOMER_PARAMS; |
| | | if (uid != null) { |
| | | String cp = pddAuthService.getFanliCustomParams(uid); |
| | | if (PinDuoDuoApiUtil.isAuth(PinDuoDuoApiUtil.PID_FANLI, cp)) { |
| | | if (PinDuoDuoApiUtil.isAuth(pidManager.getPidCache(acceptData.getSystem(), Constant.SOURCE_TYPE_PDD, SystemPIDInfo.PidType.fanli), cp)) { |
| | | customParams = cp; |
| | | } |
| | | } |
| | | |
| | | 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 (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) { |
| | | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | if (result != null) { |
| | | count = result.getTotalCount(); |
| | | Gson gson = JsonUtil.getApiCommonGson(); |
| | | List<PDDGoodsDetail> goodsList = result.getGoodsList(); |
| | | if (goodsList != null && goodsList.size() > 0) { |
| | | } else { |
| | | PDDSearchFilter pddfilter = new PDDSearchFilter(); |
| | | pddfilter.setKw(SearchFilterUtil.filterSearchContent(key)); |
| | | pddfilter.setPage(page); |
| | | pddfilter.setPageSize(Constant.PAGE_SIZE); |
| | | |
| | | 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)); |
| | | if (order != null) { |
| | | int sort = order.intValue(); |
| | | switch (sort) { |
| | | case 1: // 销量 desc |
| | | pddfilter.setSortType(6); |
| | | break; |
| | | case 2: // 价格—desc |
| | | pddfilter.setSortType(4); |
| | | break; |
| | | case 3: // 价格—asc |
| | | pddfilter.setSortType(3); |
| | | break; |
| | | case 4: // 返利比—desc |
| | | 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)); |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | /** |
| | | * 搜索唯品会商品 |
| | | * 搜索抖音商品 |
| | | * |
| | | * @param acceptData |
| | | * @param key |
| | |
| | | * @Title: searchVIPGoods |
| | | * @Description: |
| | | */ |
| | | private void searchVIPGoods(AcceptData acceptData, Long uid, 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: // 价格—desc |
| | | searchFilter.setFieldName("price"); |
| | | searchFilter.setOrder(1); |
| | | break; |
| | | case 3: // 价格—asc |
| | | searchFilter.setFieldName("price"); |
| | | searchFilter.setOrder(0); |
| | | break; |
| | | case 5: // 折扣—aec |
| | | searchFilter.setFieldName("discount"); |
| | | searchFilter.setOrder(0); |
| | | break; |
| | | default: // 综合排序 |
| | | break; |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (!StringUtil.isNullOrEmpty(filter)) { |
| | | JSONObject jsonfilter = JSONObject.fromObject(filter); |
| | | String minPrice = jsonfilter.optString("minPrice"); |
| | | if (!StringUtil.isNullOrEmpty(minPrice)) { |
| | | searchFilter.setPriceStart(minPrice); |
| | | |
| | | 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; |
| | | } |
| | | } |
| | | |
| | | String maxPrice = jsonfilter.optString("maxPrice"); |
| | | if (!StringUtil.isNullOrEmpty(maxPrice)) { |
| | | searchFilter.setPriceEnd(maxPrice); |
| | | 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); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | int count = 0; |
| | | JSONObject data = new JSONObject(); |
| | | JSONArray array = new JSONArray(); |
| | | |
| | | VIPSearchResult result = VipShopApiUtil.search(searchFilter); |
| | | if (result != null) { |
| | | count = result.getTotal(); |
| | | if (goodsList != null && goodsList.size() > 0) { |
| | | Gson gson = JsonUtil.getApiCommonGson(); |
| | | List<VIPGoodsInfo> goodsList = result.getGoodsList(); |
| | | if (goodsList != null && goodsList.size() > 0) { |
| | | GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), |
| | | acceptData.getVersion(), acceptData.getSystem()); |
| | | 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)); |
| | | 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: // 价格—desc |
| | | searchFilter.setFieldName("price"); |
| | | searchFilter.setOrder(1); |
| | | break; |
| | | case 3: // 价格—asc |
| | | searchFilter.setFieldName("price"); |
| | | searchFilter.setOrder(0); |
| | | break; |
| | | case 5: // 折扣—aec |
| | | 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)); |
| | | } |
| | | } |
| | | |
| | |
| | | */ |
| | | private void searchSuningGoods(AcceptData acceptData, Long uid, 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); |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (!StringUtil.isNullOrEmpty(filter)) { |
| | | JSONObject jsonfilter = JSONObject.fromObject(filter); |
| | | Boolean coupon = jsonfilter.optBoolean("coupon"); |
| | | if (coupon != null && coupon) { |
| | | searchFilter.setCoupon(1); // 有券 |
| | | 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); |
| | | } |
| | | } |
| | | |
| | | Boolean snfwservice = jsonfilter.optBoolean("snfwservice");// 苏宁服务 |
| | | if (snfwservice != null && snfwservice) { |
| | | searchFilter.setSnfwservice(1); |
| | | 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); |
| | | } |
| | | } |
| | | |
| | | 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; |
| | | List<SuningGoodsInfo> list = SuningApiUtil.searchGoodsOld(searchFilter); |
| | | if (list != null && list.size() > 0) { |
| | | |
| | | if (goodsList != null && goodsList.size() > 0) { |
| | | List<String> listId = new ArrayList<>(); |
| | | for (SuningGoodsInfo goodsInfo : list) { |
| | | for (SuningGoodsInfo goodsInfo : goodsList) { |
| | | SuningCommodityInfo info = goodsInfo.getCommodityInfo(); |
| | | if (info != null) { |
| | | listId.add(info.getCommodityCode() + "-" + info.getSupplierCode()); |
| | |
| | | } |
| | | |
| | | data.put("result", array); |
| | | data.put("count", 1000); |
| | | data.put("count", count); |
| | | out.print(JsonUtil.loadTrueResult(buildSearchResult(data, ap))); |
| | | } |
| | | |