| | |
| | | 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 org.springframework.core.task.TaskExecutor;
|
| | | import org.springframework.stereotype.Controller;
|
| | | import org.springframework.web.bind.annotation.RequestMapping;
|
| | | import org.springframework.web.bind.annotation.RequestMethod;
|
| | | import org.yeshi.utils.JsonUtil;
|
| | |
|
| | | import com.google.gson.Gson;
|
| | | import com.google.gson.GsonBuilder;
|
| | | import com.yeshi.fanli.dto.ConfigParamsDTO;
|
| | | import com.yeshi.fanli.dto.jd.JDFilter;
|
| | | import com.yeshi.fanli.dto.jd.JDSearchFilter;
|
| | | import com.yeshi.fanli.dto.jd.JDSearchResult;
|
| | | import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
|
| | | import com.yeshi.fanli.dto.pdd.PDDGoodsResult;
|
| | | import com.yeshi.fanli.dto.pdd.PDDSearchFilter;
|
| | | import com.yeshi.fanli.dto.suning.SuningGoodsInfo;
|
| | | import com.yeshi.fanli.dto.suning.SuningQueryModel;
|
| | | import com.yeshi.fanli.dto.vip.VIPSearchFilter;
|
| | | import com.yeshi.fanli.dto.vip.VIPSearchResult;
|
| | | import com.yeshi.fanli.dto.vip.goods.VIPGoodsInfo;
|
| | | import com.yeshi.fanli.entity.accept.AcceptData;
|
| | | import com.yeshi.fanli.entity.goods.CommonGoods;
|
| | | import com.yeshi.fanli.entity.jd.JDGoods;
|
| | | import com.yeshi.fanli.entity.system.ConfigKeyEnum;
|
| | | import com.yeshi.fanli.entity.taobao.SearchFilter;
|
| | | import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
|
| | | import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult;
|
| | | import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2;
|
| | | import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
|
| | | import com.yeshi.fanli.exception.user.TokenRecordException;
|
| | | import com.yeshi.fanli.service.inter.brand.BrandInfoService;
|
| | | import com.yeshi.fanli.service.inter.common.JumpDetailV2Service;
|
| | | import com.yeshi.fanli.service.inter.config.BusinessSystemService;
|
| | | import com.yeshi.fanli.service.inter.config.ConfigService;
|
| | | import com.yeshi.fanli.service.inter.config.SuperHotSearchService;
|
| | | import com.yeshi.fanli.service.inter.lable.QualityGoodsService;
|
| | | import com.yeshi.fanli.service.inter.lable.TaoKeGoodsService;
|
| | | import com.yeshi.fanli.service.inter.order.OrderHongBaoMoneyComputeService;
|
| | | import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
|
| | | import com.yeshi.fanli.service.inter.taobao.TaoBaoShopService;
|
| | | import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService;
|
| | | import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailV2Service;
|
| | | import com.yeshi.fanli.service.inter.user.HistorySearchService;
|
| | | import com.yeshi.fanli.service.inter.user.TokenRecordService;
|
| | | import com.yeshi.fanli.service.inter.user.integral.IntegralGetService;
|
| | | import com.yeshi.fanli.service.manger.ClipboardAnalysisManager;
|
| | | import com.yeshi.fanli.service.manger.IClipboardAnalysisResult;
|
| | | import com.yeshi.fanli.service.manger.goods.jd.JDGoodsLinkParseManager;
|
| | | import com.yeshi.fanli.tag.PageEntity;
|
| | | import com.yeshi.fanli.util.Constant;
|
| | | import com.yeshi.fanli.util.StringUtil;
|
| | | import com.yeshi.fanli.util.ThreadUtil;
|
| | | import com.yeshi.fanli.util.VersionUtil;
|
| | | import com.yeshi.fanli.util.annotation.RequestSerializableByKey;
|
| | | import com.yeshi.fanli.util.cache.IntegralGetCacheManager;
|
| | | import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil;
|
| | | import com.yeshi.fanli.util.factory.CommonGoodsFactory;
|
| | | import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory;
|
| | | import com.yeshi.fanli.util.jd.JDApiUtil;
|
| | | import com.yeshi.fanli.util.jd.JDUtil;
|
| | | import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil;
|
| | | import com.yeshi.fanli.util.pinduoduo.PinDuoDuoUtil;
|
| | | import com.yeshi.fanli.util.suning.SuningApiUtil;
|
| | | import com.yeshi.fanli.util.taobao.SearchFilterUtil;
|
| | | import com.yeshi.fanli.util.taobao.TaoBaoUtil;
|
| | | import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
|
| | | import com.yeshi.fanli.util.vipshop.VipShopApiUtil;
|
| | | import com.yeshi.fanli.vo.brand.BrandInfoVO;
|
| | | import com.yeshi.fanli.vo.brand.TaoBaoShopVO;
|
| | | import com.yeshi.fanli.vo.common.JumpDetailContentVO;
|
| | | import com.yeshi.fanli.vo.goods.GoodsDetailVO;
|
| | | import com.yeshi.fanli.vo.msg.TokenVO;
|
| | | import com.yeshi.fanli.vo.search.GoodsDocParseResultVO;
|
| | |
|
| | | import net.sf.json.JSONArray;
|
| | | import net.sf.json.JSONObject;
|
| | |
|
| | | @Controller
|
| | | @RequestMapping("api/v2/search")
|
| | | public class SearchControllerV2 {
|
| | |
|
| | | @Resource
|
| | | private BusinessSystemService businessSystemService;
|
| | |
|
| | | @Resource
|
| | | private ConfigService configService;
|
| | |
|
| | | @Resource
|
| | | private SuperHotSearchService superHotSearchSerivce;
|
| | |
|
| | | @Resource
|
| | | private HistorySearchService historySearchService;
|
| | |
|
| | | @Resource
|
| | | private HongBaoManageService hongBaoManageService;
|
| | |
|
| | | @Resource
|
| | | private TaoBaoUnionConfigService taoBaoUnionConfigService;
|
| | |
|
| | | @Resource
|
| | | private TaoKeGoodsService taoKeGoodsService;
|
| | |
|
| | | @Resource
|
| | | private QualityGoodsService qualityGoodsService;
|
| | |
|
| | | @Resource
|
| | | private TaoBaoGoodsCacheUtil taoBaoGoodsCacheUtil;
|
| | |
|
| | | @Resource
|
| | | private TaoBaoShopService taoBaoShopService;
|
| | |
|
| | | @Resource
|
| | | private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service;
|
| | |
|
| | | @Resource(name = "taskExecutor")
|
| | | private TaskExecutor executor;
|
| | |
|
| | | @Resource
|
| | | private TokenRecordService tokenRecordService;
|
| | |
|
| | | @Resource
|
| | | private IntegralGetService integralGetService;
|
| | |
|
| | | @Resource
|
| | | private IntegralGetCacheManager integralGetCacheManager;
|
| | |
|
| | | @Resource
|
| | | private BrandInfoService brandInfoService;
|
| | |
|
| | | @Resource
|
| | | private JDGoodsLinkParseManager jdGoodsLinkParseManager;
|
| | |
|
| | | @Resource
|
| | | private ClipboardAnalysisManager clipboardAnalysisManager;
|
| | |
|
| | | @Resource
|
| | | private JumpDetailV2Service jumpDetailV2Service;
|
| | |
|
| | | @Resource
|
| | | private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService;
|
| | |
|
| | | /**
|
| | | * 粘贴板信息推荐
|
| | | * |
| | | * @param acceptData
|
| | | * @param url
|
| | | * 商品链接
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "getRecommendInfo", method = RequestMethod.POST)
|
| | | public void getRecommendInfo(AcceptData acceptData, String text, Long uid, PrintWriter out) {
|
| | | if (StringUtil.isNullOrEmpty(text)) {
|
| | | out.print(JsonUtil.loadFalseResult("值为空"));
|
| | | return;
|
| | | }
|
| | | // 去除前后空格
|
| | | text = text.trim();
|
| | | String originalText = text;
|
| | |
|
| | | JSONObject data = new JSONObject();
|
| | |
|
| | | clipboardAnalysisManager.parse(acceptData.getPlatform(), acceptData.getVersion(), originalText, uid,
|
| | | new IClipboardAnalysisResult() {
|
| | |
|
| | | @Override
|
| | | public void onResult(GoodsDocParseResultVO result) {
|
| | | if (uid == null) {
|
| | | out.print(JsonUtil.loadFalseResult("无推荐"));
|
| | | return;
|
| | | }
|
| | |
|
| | | JSONObject root = new JSONObject();
|
| | | root.put("type", 20);
|
| | | JSONObject data = new JSONObject();
|
| | | data.put("text", originalText);
|
| | | //
|
| | | int platformCode = Constant.getPlatformCode(acceptData.getPlatform());
|
| | | int version = Integer.parseInt(acceptData.getVersion());
|
| | | JumpDetailContentVO convert = new JumpDetailContentVO();
|
| | | convert.setJumpDetail(jumpDetailV2Service.getByTypeCache("web", platformCode, version));
|
| | | JSONObject convertParams = new JSONObject();
|
| | | convertParams.put("url", configService.get(ConfigKeyEnum.convertDocWebLink.getKey()));
|
| | | convertParams.put("clipboard", false);
|
| | | convert.setParams(convertParams);
|
| | |
|
| | | JumpDetailContentVO view = null;
|
| | | JumpDetailContentVO guessLike = null;
|
| | |
|
| | | Gson gson = JsonUtil.getApiCommonGson();
|
| | | data.put("title", "智能搜索");
|
| | |
|
| | | int state = 0;
|
| | | if (result.getFirstGoods() != null && result.getFirstGoods().getGoodsId() != null) {
|
| | | state = 2;
|
| | | data.put("stateDesc", "选择搜券或转链");
|
| | | JSONObject params = new JSONObject();
|
| | | params.put("id", result.getFirstGoods().getGoodsId() + "");
|
| | | params.put("from", "转链");
|
| | | if (result.getFirstGoods().getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) {
|
| | | view = new JumpDetailContentVO();
|
| | | view.setJumpDetail(
|
| | | jumpDetailV2Service.getByTypeCache("goodsdetail", platformCode, version));
|
| | | view.setParams(params);
|
| | | } else if (result.getFirstGoods().getGoodsType() == Constant.SOURCE_TYPE_JD) {
|
| | | view = new JumpDetailContentVO();
|
| | | view.setJumpDetail(
|
| | | jumpDetailV2Service.getByTypeCache("goodsdetail_jd", platformCode, version));
|
| | | view.setParams(params);
|
| | | } else if (result.getFirstGoods().getGoodsType() == Constant.SOURCE_TYPE_PDD) {
|
| | | view = new JumpDetailContentVO();
|
| | | view.setJumpDetail(
|
| | | jumpDetailV2Service.getByTypeCache("goodsdetail_pdd", platformCode, version));
|
| | | view.setParams(params);
|
| | | }
|
| | |
|
| | | } else if (!StringUtil.isNullOrEmpty(result.getFirstLink())) {
|
| | | state = 2;
|
| | | data.put("stateDesc", "选择搜券或转链");
|
| | | view = new JumpDetailContentVO();
|
| | | view.setJumpDetail(jumpDetailV2Service.getByTypeCache("web", platformCode, version));
|
| | | JSONObject params = new JSONObject();
|
| | | params.put("url", result.getFirstLink());
|
| | | view.setParams(params);
|
| | | } else {
|
| | | data.put("stateDesc", "去试试转链");
|
| | | state = 1;
|
| | | }
|
| | | data.put("state", state);
|
| | | if (convert != null)
|
| | | data.put("convert", gson.toJson(convert));
|
| | | if (view != null)
|
| | | data.put("view", gson.toJson(view));
|
| | |
|
| | | if (guessLike != null)
|
| | | data.put("guessLike", gson.toJson(guessLike));
|
| | |
|
| | | root.put("data", data);
|
| | | out.print(JsonUtil.loadTrueResult(root));
|
| | | return;
|
| | | }
|
| | |
|
| | | @Override
|
| | | public void onResult(String result) {
|
| | | JSONObject root = new JSONObject();
|
| | | root.put("type", 2);
|
| | | JSONObject data = new JSONObject();
|
| | | data.put("title", result);
|
| | | root.put("data", data);
|
| | | out.print(JsonUtil.loadTrueResult(root));
|
| | | return;
|
| | | }
|
| | |
|
| | | @Override
|
| | | public void onResult(CommonGoods goods) {
|
| | | if (goods.getGoodsId() != null) {
|
| | | if (VersionUtil.greaterThan_1_6_5(acceptData.getPlatform(), acceptData.getVersion())) {// 1.6.5版本后返回商品详情
|
| | | if (goods.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) {
|
| | | TaoBaoGoodsBrief goodsBrief = null;
|
| | | try {
|
| | | goodsBrief = TaoKeApiUtil.searchGoodsDetail(goods.getGoodsId());
|
| | | } catch (TaobaoGoodsDownException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | |
|
| | | if (goodsBrief != null) {
|
| | | goods = CommonGoodsFactory.create(goodsBrief);
|
| | | Gson gson = JsonUtil
|
| | | .getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
|
| | | .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd")
|
| | | .create();
|
| | | data.put("type", 3);
|
| | | data.put("goods",
|
| | | gson.toJson(
|
| | | GoodsDetailVOFactory.convertCommonGoods(goods,
|
| | | orderHongBaoMoneyComputeService.getShowComputeRate(
|
| | | acceptData.getPlatform(),
|
| | | acceptData.getVersion()))));
|
| | | out.print(JsonUtil.loadTrueResult(data));
|
| | | return;
|
| | | }
|
| | | } else {
|
| | | Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
|
| | | .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd")
|
| | | .create();
|
| | | data.put("type", 3);
|
| | | data.put("goods",
|
| | | gson.toJson(
|
| | | GoodsDetailVOFactory.convertCommonGoods(goods,
|
| | | orderHongBaoMoneyComputeService.getShowComputeRate(
|
| | | acceptData.getPlatform(),
|
| | | acceptData.getVersion()))));
|
| | | out.print(JsonUtil.loadTrueResult(data));
|
| | | return;
|
| | | }
|
| | | } else {
|
| | | // 低于1.6.5版本
|
| | | JSONObject taoBaoGoodsJSON = new JSONObject();
|
| | | taoBaoGoodsJSON.put("title", goods.getTitle());
|
| | | taoBaoGoodsJSON.put("zkPrice", goods.getPrice() + "");
|
| | | taoBaoGoodsJSON.put("id", goods.getGoodsId());
|
| | | taoBaoGoodsJSON.put("goodsType", goods.getGoodsType());
|
| | | if (goods.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) {
|
| | | taoBaoGoodsJSON.put("url",
|
| | | "http://item.taobao.com/item.htm?id=" + goods.getGoodsId());
|
| | | } else if (goods.getGoodsType() == Constant.SOURCE_TYPE_JD) {
|
| | | taoBaoGoodsJSON.put("url",
|
| | | String.format("https://item.jd.com/%s.html", goods.getGoodsId() + ""));
|
| | | } else if (goods.getGoodsType() == Constant.SOURCE_TYPE_PDD) {
|
| | | taoBaoGoodsJSON.put("url",
|
| | | "http://yangkeduo.com/goods.html?goods_id=" + goods.getGoodsId());
|
| | | }
|
| | | data.put("goods", taoBaoGoodsJSON);
|
| | | List<String> picList = new ArrayList<>();
|
| | | picList.add(goods.getPicture());
|
| | | data.put("imgs", picList);
|
| | | JSONObject root = new JSONObject();
|
| | | root.put("type", 1);
|
| | | root.put("data", data);
|
| | | out.print(JsonUtil.loadTrueResult(root));
|
| | | return;
|
| | | }
|
| | | }
|
| | |
|
| | | JSONObject goodsJSON = new JSONObject();
|
| | | goodsJSON.put("title", goods.getTitle());
|
| | | goodsJSON.put("pictUrl", goods.getPicture());
|
| | |
|
| | | data.put("type", 4);
|
| | | data.put("desc", "该商品无推广信息");
|
| | | data.put("goods", goodsJSON);
|
| | | out.print(JsonUtil.loadTrueResult(data));
|
| | | return;
|
| | | }
|
| | |
|
| | | @Override
|
| | | public void onResult(TokenVO tokenVO) {
|
| | | out.print(JsonUtil.loadTrueResult(tokenVO));
|
| | | return;
|
| | | }
|
| | |
|
| | | @Override
|
| | | public void none() {
|
| | | out.print(JsonUtil.loadFalseResult("无推荐"));
|
| | | }
|
| | |
|
| | | @Override
|
| | | public void needLogin(String msg) {
|
| | | out.print(JsonUtil.loadFalseResult(1001, msg));
|
| | | }
|
| | | });
|
| | | }
|
| | |
|
| | | /**
|
| | | * 口令领取
|
| | | * |
| | | * @param acceptData
|
| | | * @param kw
|
| | | * @param goodsType
|
| | | * @param out
|
| | | */
|
| | | @RequestSerializableByKey(key = "'tokenReceive-'+#uid")
|
| | | @RequestMapping(value = "tokenReceive", method = RequestMethod.POST)
|
| | | public void tokenReceive(AcceptData acceptData, Long uid, String token, PrintWriter out) {
|
| | | try {
|
| | | String msg = tokenRecordService.receiveToken(token, uid, acceptData);
|
| | | out.print(JsonUtil.loadTrueResult(msg));
|
| | | } catch (TokenRecordException e) {
|
| | | out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
|
| | | }
|
| | | }
|
| | |
|
| | | /**
|
| | | * 搜索候选词
|
| | | * |
| | | * @param acceptData
|
| | | * @param kw
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "suggestSearch", method = RequestMethod.POST)
|
| | | public void getSugguestSearch(AcceptData acceptData, String kw, Integer goodsType, PrintWriter out) {
|
| | | if (goodsType == null) {
|
| | | out.print(JsonUtil.loadFalseResult("平台类型不能为空"));
|
| | | return;
|
| | | }
|
| | |
|
| | | List<String> list = null;
|
| | | if (goodsType == Constant.SOURCE_TYPE_TAOBAO) {
|
| | | list = TaoBaoUtil.getSuguestSearch(kw);
|
| | | } else if (goodsType == Constant.SOURCE_TYPE_JD) {
|
| | | list = JDUtil.suggestSearch(kw);
|
| | | } else if (goodsType == Constant.SOURCE_TYPE_PDD) {
|
| | | list = PinDuoDuoUtil.suggestSearch(kw);
|
| | | }
|
| | |
|
| | | if (list == null || list.size() == 0) {
|
| | | out.print(JsonUtil.loadFalseResult("暂无建议内容"));
|
| | | return;
|
| | | }
|
| | |
|
| | | JSONArray array = new JSONArray();
|
| | | for (String words : list) {
|
| | | array.add(words);
|
| | | }
|
| | | out.print(JsonUtil.loadTrueResult(array));
|
| | | }
|
| | |
|
| | | /**
|
| | | * 搜索-新版
|
| | | * |
| | | * @param acceptData
|
| | | * @param kw
|
| | | * @param page
|
| | | * @param filter
|
| | | * @param order
|
| | | * 销量由高到低:1 、 价格从高到低:2 、 价格从低到高:3 、 推广量高到低:4(综合默认)、返利比高到低:5
|
| | | * 、返利比低到高:6 、推荐20
|
| | | * @param startprice
|
| | | * @param endprice
|
| | | * @param fastFilter
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "searchGoods")
|
| | | public void searchGoods(AcceptData acceptData, Integer goodsType, String key, Integer page, String filter,
|
| | | Integer order, Long uid, HttpSession session, PrintWriter out) {
|
| | |
|
| | | if (goodsType == null || goodsType < 1 || goodsType > 5) {
|
| | | out.print(JsonUtil.loadFalseResult(1, "请传递正确平台参数"));
|
| | | return;
|
| | | }
|
| | |
|
| | | if (page == null || page < 1) {
|
| | | out.print(JsonUtil.loadFalseResult(1, "页码不能小于1"));
|
| | | return;
|
| | | }
|
| | |
|
| | | if (StringUtil.isNullOrEmpty(key)) {
|
| | | out.print(JsonUtil.loadFalseResult(1, "请输入搜索内容"));
|
| | | return;
|
| | | }
|
| | | final String searchkey = key.trim();
|
| | |
|
| | | if (uid != null) {
|
| | | if (page == 1) {
|
| | | integralGetCacheManager.cacheSearchGoods(acceptData.getDevice(), System.currentTimeMillis());
|
| | | } else if (page > 1) {
|
| | | Long lastTime = integralGetCacheManager.getLastSearchTime(acceptData.getDevice());
|
| | | if (lastTime != null && System.currentTimeMillis() - lastTime >= 15 * 1000L) {// 超过15s浏览
|
| | | integralGetCacheManager.clearSearchTime(acceptData.getDevice());
|
| | | ThreadUtil.run(new Runnable() {
|
| | | @Override
|
| | | public void run() {
|
| | | // 增加金币
|
| | | integralGetService.addSearchResultScan(uid, key);
|
| | | }
|
| | | });
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | executor.execute(new Runnable() {
|
| | | @Override
|
| | | public void run() {
|
| | | StringBuffer sb = new StringBuffer();
|
| | | String link = "#$$$#";
|
| | | String platform = acceptData.getPlatform();
|
| | | String packages = acceptData.getPackages();
|
| | | String device = acceptData.getDevice();
|
| | | sb.append(platform).append(link).append(packages).append(link).append(device);
|
| | | String bid = StringUtil.Md5(sb.toString());
|
| | |
|
| | | // 加入搜索历史记录
|
| | | historySearchService.addHistorySearch(searchkey, bid);
|
| | | }
|
| | | });
|
| | |
|
| | | if (searchkey.startsWith("http://") || searchkey.startsWith("https://")) {
|
| | | JSONObject data = new JSONObject();
|
| | | data.put("result", new JSONArray());
|
| | | data.put("count", 0);
|
| | | out.print(JsonUtil.loadTrueResult(data));
|
| | | return;
|
| | | }
|
| | |
|
| | | /*--------- 京东商品 -------*/
|
| | | if (goodsType.intValue() == Constant.SOURCE_TYPE_JD) {
|
| | | searchJDGoods(acceptData, searchkey, page, filter, order, out);
|
| | | return;
|
| | | }
|
| | |
|
| | | /*-------- 拼多多商品 -------*/
|
| | | if (goodsType.intValue() == Constant.SOURCE_TYPE_PDD) {
|
| | | searchPDDGoods(acceptData, searchkey, page, filter, order, out);
|
| | | return;
|
| | | }
|
| | |
|
| | | /*-------- 唯品会商品 ------*/
|
| | | if (goodsType.intValue() == Constant.SOURCE_TYPE_VIP) {
|
| | | searchVIPGoods(acceptData, searchkey, page, filter, order, out);
|
| | | return;
|
| | | }
|
| | |
|
| | | /*-------- 苏宁商品 ------*/
|
| | | if (goodsType.intValue() == Constant.SOURCE_TYPE_SUNING) {
|
| | | searchSuningGoods(acceptData, searchkey, page, filter, order, out);
|
| | | return;
|
| | | }
|
| | |
|
| | | /*-------- 淘宝商品 -------*/
|
| | | searchTaoBaoGoods(acceptData, searchkey, page, filter, order, out);
|
| | |
|
| | | }
|
| | |
|
| | | /**
|
| | | * 执行搜索-新版
|
| | | * |
| | | * @param kw
|
| | | * @param page
|
| | | * @param filter
|
| | | * @param order
|
| | | * @param startprice
|
| | | * @param endprice
|
| | | * @return
|
| | | */
|
| | | private void searchTaoBaoGoods(AcceptData acceptData, String key, Integer page, String filter, Integer order,
|
| | | PrintWriter out) {
|
| | | SearchFilter sf = new SearchFilter();
|
| | | sf.setKey(SearchFilterUtil.filterSearchContent(key));
|
| | | sf.setPage(page);
|
| | | sf.setPageSize(Constant.PAGE_SIZE);
|
| | |
|
| | | if (order != null) {
|
| | | if (order == 1) { // 销量高到低
|
| | | sf.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW);
|
| | | } else if (order == 2) { // 价格高到低
|
| | | sf.setSort(TaoBaoUtil.SORT_PRICE_HIGH_TO_LOW);
|
| | | } else if (order == 3) { // 价格低到高
|
| | | sf.setSort(TaoBaoUtil.SORT_PRICE_LOW_TO_HIGH);
|
| | | } else if (order == 4) { // 返利比高到低
|
| | | sf.setSort(TaoBaoUtil.SORT_TKRATE_HIGH_TO_LOW);
|
| | | }
|
| | | }
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(filter)) {
|
| | | JSONObject jsonfilter = JSONObject.fromObject(filter);
|
| | | Boolean coupon = jsonfilter.optBoolean("coupon");
|
| | | if (coupon != null && coupon) {
|
| | | sf.setQuan(1); // 有券
|
| | | }
|
| | |
|
| | | Boolean tmall = jsonfilter.optBoolean("tmall");
|
| | | if (tmall != null && tmall) {
|
| | | sf.setTmall(true); // 天猫
|
| | | }
|
| | |
|
| | | String minPrice = jsonfilter.optString("minPrice");
|
| | | if (!StringUtil.isNullOrEmpty(minPrice)) {
|
| | | sf.setStartPrice(new BigDecimal(minPrice));
|
| | | }
|
| | |
|
| | | String maxPrice = jsonfilter.optString("maxPrice");
|
| | | if (!StringUtil.isNullOrEmpty(maxPrice)) {
|
| | | sf.setEndPrice(new BigDecimal(maxPrice));
|
| | | }
|
| | | }
|
| | |
|
| | | // 搜索大淘客
|
| | | List<DaTaoKeDetailV2> daTaoKeList = null;
|
| | | if (page == 1) {
|
| | | daTaoKeList = daTaoKeGoodsDetailV2Service.listByDtitle(key);
|
| | | }
|
| | |
|
| | | // 淘宝api搜索商品
|
| | | TaoBaoSearchResult result = TaoBaoUtil.search(sf);
|
| | |
|
| | | // 搜索结果缓存到redis
|
| | | if (result != null && result.getTaoBaoGoodsBriefs() != null && result.getTaoBaoGoodsBriefs().size() > 0) {
|
| | | ThreadUtil.run(new Runnable() {
|
| | | @Override
|
| | | public void run() {
|
| | | // 更新到緩存
|
| | | for (TaoBaoGoodsBrief goods : result.getTaoBaoGoodsBriefs())
|
| | | taoBaoGoodsCacheUtil.saveCommonTaoBaoGoodsInfo(goods);
|
| | | }
|
| | | });
|
| | | }
|
| | |
|
| | | List<TaoBaoGoodsBrief> taoBaoGoodsBriefs = null;
|
| | | if (result != null) {
|
| | | taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs();
|
| | | }
|
| | | if (taoBaoGoodsBriefs == null) {
|
| | | taoBaoGoodsBriefs = new ArrayList<>();
|
| | | }
|
| | |
|
| | | if (daTaoKeList != null && daTaoKeList.size() > 0) {
|
| | | try {
|
| | | Collections.reverse(daTaoKeList);
|
| | | for (DaTaoKeDetailV2 detail : daTaoKeList) {
|
| | | taoBaoGoodsBriefs.add(0, TaoBaoUtil.convert(detail));
|
| | | }
|
| | | } catch (Exception e) {
|
| | | }
|
| | | }
|
| | |
|
| | | List<GoodsDetailVO> list = new ArrayList<GoodsDetailVO>();
|
| | | ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(),
|
| | | acceptData.getVersion());
|
| | |
|
| | | for (TaoBaoGoodsBrief goods : taoBaoGoodsBriefs) {
|
| | | list.add(GoodsDetailVOFactory.convertTaoBao(goods, paramsDTO));
|
| | | }
|
| | |
|
| | | Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
|
| | | .excludeFieldsWithoutExposeAnnotation().create();
|
| | |
|
| | | JSONObject data = new JSONObject();
|
| | | data.put("result", gson.toJson(list));
|
| | | data.put("count", result.getTaoBaoHead().getDocsfound());
|
| | |
|
| | | if (page == 1) { // 第一页返回店铺信息
|
| | | String platform = acceptData.getPlatform();
|
| | | String version = acceptData.getVersion();
|
| | | if (("ios".equalsIgnoreCase(platform) && VersionUtil.greaterThan_2_0_5(platform, version))
|
| | | || ("android".equalsIgnoreCase(platform) && VersionUtil.greaterThan_2_0_2(platform, version))) {
|
| | | BrandInfoVO brandInfoVO = null;
|
| | | try {
|
| | | brandInfoVO = brandInfoService.listByAlikeName(key, acceptData.getPlatform(),
|
| | | acceptData.getVersion());
|
| | | } catch (Exception e) {
|
| | | }
|
| | | if (brandInfoVO != null)
|
| | | data.put("shop", JsonUtil.getApiCommonGson().toJson(brandInfoVO));
|
| | | } else {
|
| | | List<TaoBaoShopVO> listShop = taoBaoShopService.getShopByKeyV2(key, acceptData.getPlatform(),
|
| | | acceptData.getVersion());
|
| | | if (listShop != null && listShop.size() > 0 && listShop.get(0).getListGoodsVO() != null
|
| | | && listShop.get(0).getListGoodsVO().size() > 2) {
|
| | | TaoBaoShopVO taoBaoShop = listShop.get(0);
|
| | | if (("ios".equalsIgnoreCase(platform) && VersionUtil.greaterThan_2_0(platform, version))
|
| | | || ("android".equalsIgnoreCase(platform)
|
| | | && VersionUtil.greaterThan_2_0_1(platform, version))) {
|
| | | BrandInfoVO brandInfoVO = new BrandInfoVO();
|
| | | brandInfoVO.setId(taoBaoShop.getId());
|
| | | brandInfoVO.setName(taoBaoShop.getShopName());
|
| | | brandInfoVO.setIcon(taoBaoShop.getShopIcon());
|
| | | brandInfoVO.setListGoods(taoBaoShop.getListGoodsVO());
|
| | | data.put("shop", JsonUtil.getApiCommonGson().toJson(brandInfoVO));
|
| | | } else {
|
| | | data.put("shop", JsonUtil.getApiCommonGson().toJson(taoBaoShop));
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | out.print(JsonUtil.loadTrueResult(data));
|
| | | }
|
| | |
|
| | | /**
|
| | | * 京东
|
| | | * |
| | | * @param kw
|
| | | * @param page
|
| | | * @param filter
|
| | | * @param order
|
| | | * @param startprice
|
| | | * @param endprice
|
| | | * @return
|
| | | */
|
| | | private void searchJDGoods(AcceptData acceptData, String key, Integer page, String filter, Integer order,
|
| | | PrintWriter out) {
|
| | |
|
| | | JDSearchResult result = null;
|
| | | boolean hasCoupon = false;
|
| | | String way = configService.get(ConfigKeyEnum.jdApiSearchKey.getKey());
|
| | | 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);
|
| | |
|
| | | }
|
| | |
|
| | | long count = 0;
|
| | | JSONObject data = new JSONObject();
|
| | | JSONArray array = new JSONArray();
|
| | | if (result != null) {
|
| | | PageEntity pageEntity = result.getPageEntity();
|
| | | if (pageEntity != null) {
|
| | | count = pageEntity.getTotalCount();
|
| | | }
|
| | |
|
| | | List<JDGoods> goodsList = result.getGoodsList();
|
| | | if (goodsList != null && goodsList.size() > 0) {
|
| | | Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
|
| | | .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
|
| | | ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(),
|
| | | acceptData.getVersion());
|
| | | for (JDGoods goods : goodsList) {
|
| | | GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertJDGoods(goods, paramsDTO);
|
| | | if (hasCoupon) {
|
| | | if (goodsDetailVO.isHasCoupon()) {
|
| | | array.add(gson.toJson(goodsDetailVO));
|
| | | }
|
| | | } else {
|
| | | array.add(gson.toJson(goodsDetailVO));
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | data.put("result", array);
|
| | | data.put("count", count);
|
| | | out.print(JsonUtil.loadTrueResult(data));
|
| | | }
|
| | |
|
| | | /**
|
| | | * 拼多多
|
| | | * |
| | | * @param kw
|
| | | * @param page
|
| | | * @param filter
|
| | | * @param order
|
| | | * @param startprice
|
| | | * @param endprice
|
| | | * @return
|
| | | */
|
| | | private void searchPDDGoods(AcceptData acceptData, String key, Integer page, String filter, Integer order,
|
| | | 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;
|
| | | }
|
| | | }
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(filter)) {
|
| | | JSONObject jsonfilter = JSONObject.fromObject(filter);
|
| | | Boolean coupon = jsonfilter.optBoolean("coupon");
|
| | | if (coupon != null && coupon) {
|
| | | pddfilter.setHasCoupon(true); // 有券
|
| | | }
|
| | |
|
| | | Boolean brand = jsonfilter.optBoolean("brand");
|
| | | if (brand != null && brand) {
|
| | | pddfilter.setIsBrand(true); // 是否是品牌
|
| | | }
|
| | | }
|
| | |
|
| | | int count = 0;
|
| | | JSONObject data = new JSONObject();
|
| | | JSONArray array = new JSONArray();
|
| | |
|
| | | PDDGoodsResult result = PinDuoDuoApiUtil.searchGoods(pddfilter);
|
| | | if (result != null) {
|
| | | count = result.getTotalCount();
|
| | | Gson gson = JsonUtil.getApiCommonGson();
|
| | | List<PDDGoodsDetail> goodsList = result.getGoodsList();
|
| | | if (goodsList != null && goodsList.size() > 0) {
|
| | | ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(),
|
| | | acceptData.getVersion());
|
| | |
|
| | | for (PDDGoodsDetail goods : goodsList) {
|
| | | GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertPDDGoods(goods, paramsDTO);
|
| | | array.add(gson.toJson(goodsDetailVO));
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | data.put("result", array);
|
| | | data.put("count", count);
|
| | | out.print(JsonUtil.loadTrueResult(data));
|
| | | }
|
| | |
|
| | | /**
|
| | | * 搜索唯品会商品
|
| | | * @Title: searchVIPGoods
|
| | | * @Description: |
| | | * @param acceptData
|
| | | * @param key
|
| | | * @param page
|
| | | * @param filter
|
| | | * @param order
|
| | | * @param out |
| | | * void 返回类型
|
| | | * @throws
|
| | | */
|
| | | private void searchVIPGoods(AcceptData acceptData, String key, Integer page, String filter, Integer order,
|
| | | 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;
|
| | | }
|
| | | }
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(filter)) {
|
| | | JSONObject jsonfilter = JSONObject.fromObject(filter);
|
| | | String minPrice = jsonfilter.optString("minPrice");
|
| | | if (!StringUtil.isNullOrEmpty(minPrice)) {
|
| | | searchFilter.setPriceStart(minPrice);
|
| | | }
|
| | |
|
| | | String maxPrice = jsonfilter.optString("maxPrice");
|
| | | if (!StringUtil.isNullOrEmpty(maxPrice)) {
|
| | | searchFilter.setPriceEnd(maxPrice);
|
| | | }
|
| | | }
|
| | |
|
| | | int count = 0;
|
| | | JSONObject data = new JSONObject();
|
| | | JSONArray array = new JSONArray();
|
| | |
|
| | | VIPSearchResult result = VipShopApiUtil.search(searchFilter);
|
| | | if (result != null) {
|
| | | count = result.getTotal();
|
| | | Gson gson = JsonUtil.getApiCommonGson();
|
| | | List<VIPGoodsInfo> goodsList = result.getGoodsList();
|
| | | if (goodsList != null && goodsList.size() > 0) {
|
| | | ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(),
|
| | | acceptData.getVersion());
|
| | |
|
| | | for (VIPGoodsInfo goods : goodsList) {
|
| | | GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertVIPGoods(goods, paramsDTO);
|
| | | array.add(gson.toJson(goodsDetailVO));
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | data.put("result", array);
|
| | | data.put("count", count);
|
| | | out.print(JsonUtil.loadTrueResult(data));
|
| | | }
|
| | |
|
| | | /**
|
| | | * 搜索唯品会商品
|
| | | * @Title: searchVIPGoods
|
| | | * @Description: |
| | | * @param acceptData
|
| | | * @param key
|
| | | * @param page
|
| | | * @param filter
|
| | | * @param order
|
| | | * @param out |
| | | * void 返回类型
|
| | | * @throws
|
| | | */
|
| | | private void searchSuningGoods(AcceptData acceptData, String key, Integer page, String filter, Integer order,
|
| | | PrintWriter out) {
|
| | | SuningQueryModel searchFilter = new SuningQueryModel();
|
| | | searchFilter.setKeyword(key);
|
| | | searchFilter.setPageIndex(page);
|
| | | searchFilter.setSize(Constant.PAGE_SIZE);
|
| | |
|
| | | if (order != null) {
|
| | | if (order == 1) { // 销量高到低
|
| | | searchFilter.setSortType(2);
|
| | | } else if (order == 2) { // 价格高到低
|
| | | searchFilter.setSortType(3);
|
| | | } else if (order == 3) { // 价格低到高
|
| | | searchFilter.setSortType(4);
|
| | | } else if (order == 4) { // 返利比高到低
|
| | | searchFilter.setSortType(5);
|
| | | }
|
| | | }
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(filter)) {
|
| | | JSONObject jsonfilter = JSONObject.fromObject(filter);
|
| | | Boolean coupon = jsonfilter.optBoolean("coupon");
|
| | | if (coupon != null && coupon) {
|
| | | searchFilter.setCoupon(1); // 有券
|
| | | }
|
| | |
|
| | | Boolean snfwservice = jsonfilter.optBoolean("snfwservice");// 苏宁服务
|
| | | if (snfwservice != null && snfwservice) {
|
| | | searchFilter.setSnfwservice(1);
|
| | | }
|
| | |
|
| | | Boolean snhwg = jsonfilter.optBoolean("snhwg");// 苏宁国际
|
| | | if (snhwg != null && snhwg) {
|
| | | searchFilter.setSnhwg(1);
|
| | | }
|
| | |
|
| | | Boolean suningService = jsonfilter.optBoolean("suningService");// 苏宁自营
|
| | | if (suningService != null && suningService) {
|
| | | searchFilter.setSuningService(1);
|
| | | }
|
| | |
|
| | | Boolean pgSearch = jsonfilter.optBoolean("pgSearch");// 拼购
|
| | | if (pgSearch != null && pgSearch) {
|
| | | searchFilter.setPgSearch(1);
|
| | | }
|
| | |
|
| | | String minPrice = jsonfilter.optString("minPrice");
|
| | | if (!StringUtil.isNullOrEmpty(minPrice)) {
|
| | | searchFilter.setStartPrice(minPrice);
|
| | | }
|
| | |
|
| | | String maxPrice = jsonfilter.optString("maxPrice");
|
| | | if (!StringUtil.isNullOrEmpty(maxPrice)) {
|
| | | searchFilter.setEndPrice(maxPrice);
|
| | | }
|
| | | }
|
| | |
|
| | | int count = 0;
|
| | | JSONObject data = new JSONObject();
|
| | | JSONArray array = new JSONArray();
|
| | |
|
| | | List<SuningGoodsInfo> resultList = SuningApiUtil.searchGoods(searchFilter);
|
| | | if (resultList != null) {
|
| | | if (resultList.size() == 0)
|
| | | count = 0;
|
| | | else
|
| | | count = resultList.size() + 1;
|
| | | Gson gson = JsonUtil.getApiCommonGson();
|
| | | if (resultList != null && resultList.size() > 0) {
|
| | | ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(),
|
| | | acceptData.getVersion());
|
| | |
|
| | | for (SuningGoodsInfo goods : resultList) {
|
| | | GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertSuningGoods(goods, paramsDTO);
|
| | | array.add(gson.toJson(goodsDetailVO));
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | data.put("result", array);
|
| | | data.put("count", count);
|
| | | out.print(JsonUtil.loadTrueResult(data));
|
| | | }
|
| | |
|
| | | }
|
| | | package com.yeshi.fanli.controller.client.v2; |
| | | |
| | | import com.google.gson.Gson; |
| | | import com.google.gson.GsonBuilder; |
| | | import com.yeshi.common.entity.PageEntity; |
| | | import com.yeshi.fanli.dto.GoodsMoneyConfigParamsDTO; |
| | | import com.yeshi.fanli.dto.jd.JDFilter; |
| | | import com.yeshi.fanli.dto.jd.JDSearchFilter; |
| | | import com.yeshi.fanli.dto.jd.JDSearchResult; |
| | | import com.yeshi.fanli.dto.pdd.PDDGoodsDetail; |
| | | import com.yeshi.fanli.dto.pdd.PDDGoodsResult; |
| | | import com.yeshi.fanli.dto.pdd.PDDSearchFilter; |
| | | import com.yeshi.fanli.dto.suning.SuningCommodityInfo; |
| | | import com.yeshi.fanli.dto.suning.SuningGoodsInfo; |
| | | import com.yeshi.fanli.dto.suning.SuningQueryModel; |
| | | import com.yeshi.fanli.dto.vip.VIPSearchFilter; |
| | | import com.yeshi.fanli.dto.vip.VIPSearchResult; |
| | | import com.yeshi.fanli.dto.vip.goods.VIPGoodsInfo; |
| | | import com.yeshi.fanli.entity.SystemEnum; |
| | | import com.yeshi.fanli.entity.SystemPIDInfo; |
| | | import com.yeshi.fanli.entity.accept.AcceptData; |
| | | import com.yeshi.fanli.entity.bus.help.AppPageNotification; |
| | | import com.yeshi.fanli.entity.bus.search.HistorySearch; |
| | | import com.yeshi.fanli.entity.goods.BaseGoodsInfo; |
| | | import com.yeshi.fanli.entity.goods.CommonGoods; |
| | | import com.yeshi.fanli.entity.jd.JDGoods; |
| | | import com.yeshi.fanli.entity.system.ConfigKeyEnum; |
| | | import com.yeshi.fanli.entity.taobao.SearchFilter; |
| | | import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult; |
| | | import com.yeshi.fanli.exception.pdd.PDDApiException; |
| | | import com.yeshi.fanli.exception.taobao.TaoBaoTokenParseException; |
| | | import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; |
| | | import com.yeshi.fanli.exception.user.TokenRecordException; |
| | | import com.yeshi.fanli.lijin.manager.GoodsLijinMnager; |
| | | import com.yeshi.fanli.service.inter.brand.BrandInfoService; |
| | | import com.yeshi.fanli.service.inter.common.JumpDetailV2Service; |
| | | import com.yeshi.fanli.service.inter.config.ConfigService; |
| | | import com.yeshi.fanli.service.inter.help.AppPageNotificationService; |
| | | import com.yeshi.fanli.service.inter.order.OrderHongBaoMoneyComputeService; |
| | | import com.yeshi.fanli.service.inter.pdd.PDDAuthService; |
| | | import com.yeshi.fanli.service.inter.taobao.TaoBaoShopService; |
| | | import com.yeshi.fanli.service.inter.user.HistorySearchService; |
| | | import com.yeshi.fanli.service.inter.user.TokenRecordService; |
| | | import com.yeshi.fanli.service.inter.user.integral.IntegralGetService; |
| | | import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService; |
| | | import com.yeshi.fanli.service.manger.ClipboardAnalysisManager; |
| | | import com.yeshi.fanli.service.manger.IClipboardAnalysisResult; |
| | | import com.yeshi.fanli.service.manger.PIDManager; |
| | | import com.yeshi.fanli.util.Constant; |
| | | import com.yeshi.fanli.util.StringUtil; |
| | | import com.yeshi.fanli.util.ThreadUtil; |
| | | import com.yeshi.fanli.util.VersionUtil; |
| | | import com.yeshi.fanli.util.annotation.RequestSerializableByKey; |
| | | import com.yeshi.fanli.util.cache.IntegralGetCacheManager; |
| | | import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil; |
| | | import com.yeshi.fanli.util.factory.CommonGoodsFactory; |
| | | import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory; |
| | | import com.yeshi.fanli.util.goods.douyin.CSJCPSApiUtil; |
| | | import com.yeshi.fanli.util.goods.douyin.DYUtil; |
| | | import com.yeshi.fanli.util.goods.douyin.vo.DYGoods; |
| | | import com.yeshi.fanli.util.goods.douyin.vo.DYGoodsDetail; |
| | | import com.yeshi.fanli.util.goods.douyin.vo.DYGoodsSearchFilter; |
| | | import com.yeshi.fanli.util.goods.douyin.vo.ListResult; |
| | | import com.yeshi.fanli.util.jd.JDApiUtil; |
| | | import com.yeshi.fanli.util.jd.JDUtil; |
| | | import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil; |
| | | import com.yeshi.fanli.util.pinduoduo.PinDuoDuoUtil; |
| | | import com.yeshi.fanli.util.suning.SuningApiUtil; |
| | | import com.yeshi.fanli.util.suning.SuningUtil; |
| | | import com.yeshi.fanli.util.taobao.SearchFilterUtil; |
| | | import com.yeshi.fanli.util.taobao.TaoBaoUtil; |
| | | import com.yeshi.fanli.util.taobao.TaoKeApiUtil; |
| | | import com.yeshi.fanli.util.vipshop.VipShopApiUtil; |
| | | import com.yeshi.fanli.util.vipshop.VipShopUtil; |
| | | import com.yeshi.fanli.vo.brand.BrandInfoVO; |
| | | import com.yeshi.fanli.vo.brand.TaoBaoShopVO; |
| | | import com.yeshi.fanli.vo.common.JumpDetailContentVO; |
| | | import com.yeshi.fanli.vo.goods.GoodsDetailVO; |
| | | import com.yeshi.fanli.vo.msg.TokenVO; |
| | | import com.yeshi.fanli.vo.recommend.RecommendJumpInfoVO; |
| | | import com.yeshi.fanli.vo.search.GoodsDocParseResultVO; |
| | | import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief; |
| | | import com.yeshi.goods.facade.entity.taobao.dataoke.DaTaoKeDetailV2; |
| | | import com.yeshi.goods.facade.service.DaTaoKeGoodsDetailV2Service; |
| | | import com.yeshi.goods.facade.utils.taobao.DaTaoKeApiUtil; |
| | | import net.sf.json.JSONArray; |
| | | import net.sf.json.JSONObject; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.core.task.TaskExecutor; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RequestMethod; |
| | | import org.yeshi.utils.HttpUtil; |
| | | import org.yeshi.utils.IPUtil; |
| | | import org.yeshi.utils.JsonUtil; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpSession; |
| | | import java.io.PrintWriter; |
| | | import java.math.BigDecimal; |
| | | import java.util.ArrayList; |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | |
| | | @Controller |
| | | @RequestMapping("api/v2/search") |
| | | public class SearchControllerV2 { |
| | | |
| | | Logger logger = LoggerFactory.getLogger(SearchControllerV2.class); |
| | | |
| | | @Resource |
| | | private ConfigService configService; |
| | | |
| | | @Resource |
| | | private HistorySearchService historySearchService; |
| | | |
| | | @Resource |
| | | private TaoBaoGoodsCacheUtil taoBaoGoodsCacheUtil; |
| | | |
| | | @Resource |
| | | private TaoBaoShopService taoBaoShopService; |
| | | |
| | | @Resource |
| | | private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service; |
| | | |
| | | @Resource(name = "taskExecutor") |
| | | private TaskExecutor executor; |
| | | |
| | | @Resource |
| | | private TokenRecordService tokenRecordService; |
| | | |
| | | @Resource |
| | | private IntegralGetService integralGetService; |
| | | |
| | | @Resource |
| | | private IntegralGetCacheManager integralGetCacheManager; |
| | | |
| | | @Resource |
| | | private BrandInfoService brandInfoService; |
| | | |
| | | @Resource |
| | | private ClipboardAnalysisManager clipboardAnalysisManager; |
| | | |
| | | @Resource |
| | | private JumpDetailV2Service jumpDetailV2Service; |
| | | |
| | | @Resource |
| | | private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService; |
| | | |
| | | @Resource |
| | | private AppPageNotificationService appPageNotificationService; |
| | | |
| | | @Resource |
| | | private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService; |
| | | |
| | | @Resource |
| | | private PDDAuthService pddAuthService; |
| | | |
| | | @Resource |
| | | private GoodsLijinMnager goodsLijinMnager; |
| | | |
| | | @Resource |
| | | private PIDManager pidManager; |
| | | |
| | | |
| | | /** |
| | | * 粘贴板信息推荐 |
| | | * |
| | | * @param acceptData |
| | | * @param text |
| | | * @param uid |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "getRecommendInfo", method = RequestMethod.POST) |
| | | public void getRecommendInfo(AcceptData acceptData, String text, Long uid, PrintWriter out) { |
| | | if (StringUtil.isNullOrEmpty(text)) { |
| | | out.print(JsonUtil.loadFalseResult("值为空")); |
| | | return; |
| | | } |
| | | // 去除前后空格 |
| | | text = text.trim(); |
| | | String originalText = text; |
| | | if (acceptData.getSystem() == SystemEnum.yhqjx || acceptData.getSystem() == SystemEnum.hsb) { |
| | | Integer sourceType = clipboardAnalysisManager.tejiaParseSourceType(text); |
| | | JSONObject root = new JSONObject(); |
| | | root.put("type", 2); |
| | | JSONObject data = new JSONObject(); |
| | | data.put("title", text); |
| | | data.put("sourceType", sourceType); |
| | | root.put("data", data); |
| | | out.print(JsonUtil.loadTrueResult(root)); |
| | | return; |
| | | } else { |
| | | JSONObject data = new JSONObject(); |
| | | clipboardAnalysisManager.parse(acceptData.getPlatform(), acceptData.getVersion(), originalText, uid, |
| | | new IClipboardAnalysisResult() { |
| | | |
| | | @Override |
| | | public void onResult(GoodsDocParseResultVO result) { |
| | | if (uid == null || (acceptData.getSystem() == SystemEnum.yhqjx || acceptData.getSystem() == SystemEnum.hsb)) { |
| | | out.print(JsonUtil.loadFalseResult("无推荐")); |
| | | return; |
| | | } |
| | | |
| | | JSONObject root = new JSONObject(); |
| | | root.put("type", 20); |
| | | JSONObject data = new JSONObject(); |
| | | data.put("text", originalText); |
| | | // |
| | | int platformCode = Constant.getPlatformCode(acceptData.getPlatform()); |
| | | int version = Integer.parseInt(acceptData.getVersion()); |
| | | JumpDetailContentVO convert = new JumpDetailContentVO(); |
| | | convert.setJumpDetail(jumpDetailV2Service.getByTypeCache("web", platformCode, version, acceptData.getSystem())); |
| | | JSONObject convertParams = new JSONObject(); |
| | | convertParams.put("url", configService.getValue(ConfigKeyEnum.convertDocWebLink.getKey(), acceptData.getSystem())); |
| | | convertParams.put("clipboard", false); |
| | | convert.setParams(convertParams); |
| | | |
| | | JumpDetailContentVO view = null; |
| | | JumpDetailContentVO guessLike = null; |
| | | |
| | | Gson gson = JsonUtil.getApiCommonGson(); |
| | | data.put("title", "智能搜索"); |
| | | |
| | | int state = 0; |
| | | if (result.getFirstGoods() != null && result.getFirstGoods().getGoodsId() != null) { |
| | | state = 2; |
| | | data.put("stateDesc", "选择搜券或转链"); |
| | | JSONObject params = new JSONObject(); |
| | | params.put("id", result.getFirstGoods().getGoodsId() + ""); |
| | | params.put("from", "转链"); |
| | | if (result.getFirstGoods().getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) { |
| | | view = new JumpDetailContentVO(); |
| | | view.setJumpDetail( |
| | | jumpDetailV2Service.getByTypeCache("goodsdetail", platformCode, version, acceptData.getSystem())); |
| | | view.setParams(params); |
| | | } else if (result.getFirstGoods().getGoodsType() == Constant.SOURCE_TYPE_JD) { |
| | | view = new JumpDetailContentVO(); |
| | | view.setJumpDetail( |
| | | jumpDetailV2Service.getByTypeCache("goodsdetail_jd", platformCode, version, acceptData.getSystem())); |
| | | view.setParams(params); |
| | | } else if (result.getFirstGoods().getGoodsType() == Constant.SOURCE_TYPE_PDD) { |
| | | view = new JumpDetailContentVO(); |
| | | view.setJumpDetail( |
| | | jumpDetailV2Service.getByTypeCache("goodsdetail_pdd", platformCode, version, acceptData.getSystem())); |
| | | view.setParams(params); |
| | | } |
| | | |
| | | } else if (!StringUtil.isNullOrEmpty(result.getFirstLink())) { |
| | | state = 2; |
| | | data.put("stateDesc", "选择搜券或转链"); |
| | | view = new JumpDetailContentVO(); |
| | | view.setJumpDetail(jumpDetailV2Service.getByTypeCache("web", platformCode, version, acceptData.getSystem())); |
| | | JSONObject params = new JSONObject(); |
| | | params.put("url", result.getFirstLink()); |
| | | view.setParams(params); |
| | | } else { |
| | | data.put("stateDesc", "去试试转链"); |
| | | state = 1; |
| | | } |
| | | data.put("state", state); |
| | | if (convert != null) |
| | | data.put("convert", gson.toJson(convert)); |
| | | if (view != null) |
| | | data.put("view", gson.toJson(view)); |
| | | |
| | | if (guessLike != null) |
| | | data.put("guessLike", gson.toJson(guessLike)); |
| | | |
| | | root.put("data", data); |
| | | out.print(JsonUtil.loadTrueResult(root)); |
| | | return; |
| | | } |
| | | |
| | | @Override |
| | | public void onResult(String result) { |
| | | JSONObject root = new JSONObject(); |
| | | root.put("type", 2); |
| | | JSONObject data = new JSONObject(); |
| | | data.put("title", result); |
| | | root.put("data", data); |
| | | out.print(JsonUtil.loadTrueResult(root)); |
| | | return; |
| | | } |
| | | |
| | | @Override |
| | | public void onResult(CommonGoods goods) { |
| | | if (goods.getGoodsId() != null) { |
| | | if (VersionUtil.greaterThan_1_6_5(acceptData.getPlatform(), acceptData.getVersion())) {// 1.6.5版本后返回商品详情 |
| | | if (goods.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) { |
| | | TaoBaoGoodsBrief goodsBrief = null; |
| | | String specialId = userExtraTaoBaoInfoService.getSpecialIdByUid(uid); |
| | | try { |
| | | goodsBrief = TaoKeApiUtil.searchGoodsDetail(StringUtil.isNullOrEmpty(goods.getGoodsSign()) ? goods.getGoodsId() : goods.getGoodsSign(), specialId, null); |
| | | } catch (TaobaoGoodsDownException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | if (goodsBrief != null) { |
| | | goods = CommonGoodsFactory.create(goodsBrief); |
| | | Gson gson = JsonUtil |
| | | .getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) |
| | | .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd") |
| | | .create(); |
| | | data.put("type", 3); |
| | | |
| | | |
| | | GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertCommonGoods(goods, |
| | | orderHongBaoMoneyComputeService.getShowComputeRate( |
| | | acceptData.getPlatform(), |
| | | acceptData.getVersion(), acceptData.getSystem())); |
| | | |
| | | goodsDetailVO = goodsLijinMnager.loadTBMoneyInfo(acceptData.getSystem(), uid, goodsBrief, goodsDetailVO, false); |
| | | |
| | | data.put("goods", |
| | | gson.toJson(goodsDetailVO)); |
| | | // 跳转详情 |
| | | if (VersionUtil.greaterThan_2_1_3(acceptData.getPlatform(), |
| | | acceptData.getVersion())) { |
| | | buildGoodsClick(data, goods, acceptData, gson); |
| | | } |
| | | |
| | | out.print(JsonUtil.loadTrueResult(data)); |
| | | return; |
| | | } |
| | | } else { |
| | | Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) |
| | | .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd") |
| | | .create(); |
| | | data.put("type", 3); |
| | | data.put("goods", |
| | | gson.toJson( |
| | | goodsLijinMnager.loadOtherMoneyInfo(acceptData.getSystem(), uid, goods, |
| | | GoodsDetailVOFactory.convertCommonGoods(goods, |
| | | orderHongBaoMoneyComputeService.getShowComputeRate( |
| | | acceptData.getPlatform(), |
| | | acceptData.getVersion(), acceptData.getSystem()))))); |
| | | // if |
| | | // (VersionUtil.greaterThan_2_1_2(acceptData.getPlatform(), |
| | | // acceptData.getVersion())) { |
| | | // buildGoodsClick(data, goods, acceptData, |
| | | // gson); |
| | | // } |
| | | out.print(JsonUtil.loadTrueResult(data)); |
| | | return; |
| | | } |
| | | } else { |
| | | // 低于1.6.5版本 |
| | | JSONObject taoBaoGoodsJSON = new JSONObject(); |
| | | taoBaoGoodsJSON.put("title", goods.getTitle()); |
| | | taoBaoGoodsJSON.put("zkPrice", goods.getPrice() + ""); |
| | | taoBaoGoodsJSON.put("id", goods.getGoodsId()); |
| | | taoBaoGoodsJSON.put("goodsType", goods.getGoodsType()); |
| | | if (goods.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) { |
| | | taoBaoGoodsJSON.put("url", |
| | | "http://item.taobao.com/item.htm?id=" + goods.getGoodsId()); |
| | | } else if (goods.getGoodsType() == Constant.SOURCE_TYPE_JD) { |
| | | taoBaoGoodsJSON.put("url", |
| | | String.format("https://item.jd.com/%s.html", goods.getGoodsId() + "")); |
| | | } else if (goods.getGoodsType() == Constant.SOURCE_TYPE_PDD) { |
| | | taoBaoGoodsJSON.put("url", |
| | | "http://yangkeduo.com/goods.html?goods_id=" + goods.getGoodsId()); |
| | | } |
| | | data.put("goods", taoBaoGoodsJSON); |
| | | List<String> picList = new ArrayList<>(); |
| | | picList.add(goods.getPicture()); |
| | | data.put("imgs", picList); |
| | | JSONObject root = new JSONObject(); |
| | | root.put("type", 1); |
| | | root.put("data", data); |
| | | out.print(JsonUtil.loadTrueResult(root)); |
| | | return; |
| | | } |
| | | } |
| | | |
| | | JSONObject goodsJSON = new JSONObject(); |
| | | goodsJSON.put("title", goods.getTitle()); |
| | | goodsJSON.put("pictUrl", goods.getPicture()); |
| | | |
| | | data.put("type", 4); |
| | | data.put("desc", "该商品无推广信息"); |
| | | data.put("goods", goodsJSON); |
| | | out.print(JsonUtil.loadTrueResult(data)); |
| | | return; |
| | | } |
| | | |
| | | @Override |
| | | public void onResult(TokenVO tokenVO) { |
| | | out.print(JsonUtil.loadTrueResult(tokenVO)); |
| | | return; |
| | | } |
| | | |
| | | @Override |
| | | public void none() { |
| | | out.print(JsonUtil.loadFalseResult("无推荐")); |
| | | } |
| | | |
| | | @Override |
| | | public void needLogin(String msg) { |
| | | out.print(JsonUtil.loadFalseResult(1001, msg)); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | |
| | | @RequestMapping(value = "getRecommendInfoTJ", method = RequestMethod.POST) |
| | | public void getRecommendInfoTJ(AcceptData acceptData, String text, Long uid, PrintWriter out) { |
| | | if (StringUtil.isNullOrEmpty(text)) { |
| | | out.print(JsonUtil.loadFalseResult("值为空")); |
| | | return; |
| | | } |
| | | // 去除前后空格 |
| | | text = text.trim(); |
| | | Integer sourceType = clipboardAnalysisManager.tejiaParseSourceType(text); |
| | | JSONObject root = new JSONObject(); |
| | | root.put("type", 2); |
| | | JSONObject data = new JSONObject(); |
| | | data.put("title", text); |
| | | data.put("sourceType", sourceType); |
| | | root.put("data", data); |
| | | out.print(JsonUtil.loadTrueResult(root)); |
| | | } |
| | | |
| | | private void buildGoodsClick(JSONObject data, CommonGoods goods, AcceptData acceptData, Gson gson) { |
| | | |
| | | JSONObject params = new JSONObject(); |
| | | params.put("id", goods.getGoodsId() + ""); |
| | | params.put("from", "猜你喜欢"); |
| | | |
| | | String type = ""; |
| | | switch (goods.getGoodsType()) { |
| | | case Constant.SOURCE_TYPE_TAOBAO: |
| | | type = "goodsdetail"; |
| | | if (!StringUtil.isNullOrEmpty(goods.getGoodsSign())) { |
| | | params.put("id", goods.getGoodsSign() + ""); |
| | | } |
| | | break; |
| | | case Constant.SOURCE_TYPE_JD: |
| | | type = "goodsdetail_jd"; |
| | | break; |
| | | case Constant.SOURCE_TYPE_PDD: |
| | | type = "goodsdetail_pdd"; |
| | | break; |
| | | case Constant.SOURCE_TYPE_VIP: |
| | | type = "goodsdetail_vip"; |
| | | break; |
| | | case Constant.SOURCE_TYPE_SUNING: |
| | | type = "goodsdetail_suning"; |
| | | break; |
| | | case Constant.SOURCE_TYPE_DY: |
| | | type = "goodsdetail_dy"; |
| | | break; |
| | | |
| | | } |
| | | |
| | | RecommendJumpInfoVO left = new RecommendJumpInfoVO("去看看", jumpDetailV2Service.getByTypeCache(type, |
| | | Constant.getPlatformCode(acceptData.getPlatform()), Integer.parseInt(acceptData.getVersion()), acceptData.getSystem()), params); |
| | | data.put("left", gson.toJson(left)); |
| | | |
| | | // 去网页 |
| | | String rightValue = configService.getByVersion(ConfigKeyEnum.clipboardRecommendGoodsMakeMore.getKey(), |
| | | acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion()), acceptData.getSystem()); |
| | | |
| | | if (StringUtil.isNullOrEmpty(rightValue)) { |
| | | data.remove("left"); |
| | | } else { |
| | | params = new JSONObject(); |
| | | params.put("url", rightValue); |
| | | |
| | | RecommendJumpInfoVO right = new RecommendJumpInfoVO("有更高返利?", jumpDetailV2Service.getByTypeCache("web", |
| | | Constant.getPlatformCode(acceptData.getPlatform()), Integer.parseInt(acceptData.getVersion()), acceptData.getSystem()), |
| | | params); |
| | | data.put("right", gson.toJson(right)); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 口令领取 |
| | | * |
| | | * @param acceptData |
| | | * @param uid |
| | | * @param token |
| | | * @param out |
| | | */ |
| | | @RequestSerializableByKey(key = "'tokenReceive-'+#uid") |
| | | @RequestMapping(value = "tokenReceive", method = RequestMethod.POST) |
| | | public void tokenReceive(AcceptData acceptData, Long uid, String token, PrintWriter out) { |
| | | try { |
| | | String msg = tokenRecordService.receiveToken(token, uid, acceptData); |
| | | out.print(JsonUtil.loadTrueResult(msg)); |
| | | } catch (TokenRecordException e) { |
| | | out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg())); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 搜索候选词 |
| | | * |
| | | * @param acceptData |
| | | * @param kw |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "suggestSearch", method = RequestMethod.POST) |
| | | public void getSugguestSearch(AcceptData acceptData, String kw, Integer goodsType, PrintWriter out) { |
| | | if (goodsType == null) { |
| | | out.print(JsonUtil.loadFalseResult("平台类型不能为空")); |
| | | return; |
| | | } |
| | | |
| | | List<String> list = null; |
| | | if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { |
| | | list = TaoBaoUtil.getSuguestSearch(kw); |
| | | } else if (goodsType == Constant.SOURCE_TYPE_JD) { |
| | | list = JDUtil.suggestSearch(kw); |
| | | } else if (goodsType == Constant.SOURCE_TYPE_PDD) { |
| | | list = PinDuoDuoUtil.suggestSearch(kw); |
| | | } |
| | | |
| | | if (list == null || list.size() == 0) { |
| | | out.print(JsonUtil.loadFalseResult("暂无建议内容")); |
| | | return; |
| | | } |
| | | |
| | | JSONArray array = new JSONArray(); |
| | | for (String words : list) { |
| | | array.add(words); |
| | | } |
| | | out.print(JsonUtil.loadTrueResult(array)); |
| | | } |
| | | |
| | | /** |
| | | * @param acceptData |
| | | * @param goodsType |
| | | * @param key |
| | | * @param page |
| | | * @param filter |
| | | * @param order 销量由高到低:1 、 价格从高到低:2 、 价格从低到高:3 、 推广量高到低:4(综合默认)、返利比高到低:5 |
| | | * * 、返利比低到高:6 、推荐20 |
| | | * @param uid |
| | | * @param notifyType |
| | | * @param session |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "searchGoods") |
| | | public void searchGoods(AcceptData acceptData, Integer goodsType, String key, Integer page, String filter, |
| | | Integer order, Long uid, String notifyType, HttpSession session, HttpServletRequest request, PrintWriter out) { |
| | | |
| | | if (goodsType == null || goodsType < 1 || goodsType > 7) { |
| | | out.print(JsonUtil.loadFalseResult(1, "请传递正确平台参数")); |
| | | return; |
| | | } |
| | | |
| | | if (page == null || page < 1) { |
| | | out.print(JsonUtil.loadFalseResult(1, "页码不能小于1")); |
| | | return; |
| | | } |
| | | |
| | | if (StringUtil.isNullOrEmpty(key)) { |
| | | out.print(JsonUtil.loadFalseResult(1, "请输入搜索内容")); |
| | | return; |
| | | } |
| | | final String searchkey = key.trim(); |
| | | |
| | | if (uid != null) { |
| | | if (page == 1) { |
| | | integralGetCacheManager.cacheSearchGoods(acceptData.getDevice(), System.currentTimeMillis()); |
| | | } else if (page > 1) { |
| | | Long lastTime = integralGetCacheManager.getLastSearchTime(acceptData.getDevice()); |
| | | if (lastTime != null && System.currentTimeMillis() - lastTime >= 15 * 1000L) {// 超过15s浏览 |
| | | integralGetCacheManager.clearSearchTime(acceptData.getDevice()); |
| | | ThreadUtil.run(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | // 增加金币 |
| | | integralGetService.addSearchResultScan(uid, key); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | |
| | | executor.execute(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | HistorySearch search = new HistorySearch(); |
| | | search.setDevice(StringUtil.isNullOrEmpty(acceptData.getUtdid()) ? acceptData.getDevice() : acceptData.getUtdid()); |
| | | search.setKey(key); |
| | | search.setSystem(acceptData.getSystem()); |
| | | search.setUid(uid); |
| | | search.setGoodsType(goodsType); |
| | | search.setIpInfo(IPUtil.getRemotIP(request) + ":" + request.getRemotePort()); |
| | | historySearchService.addHistorySearch(search); |
| | | } |
| | | }); |
| | | |
| | | |
| | | if (searchkey.startsWith("http://") || searchkey.startsWith("https://")) { |
| | | JSONObject data = new JSONObject(); |
| | | data.put("result", new JSONArray()); |
| | | data.put("count", 0); |
| | | out.print(JsonUtil.loadTrueResult(data)); |
| | | return; |
| | | } |
| | | AppPageNotification ap = null; |
| | | if (page == 1) { |
| | | ap = appPageNotificationService.getValidNotificationByTypeCache(notifyType, acceptData.getPlatform(), |
| | | Integer.parseInt(acceptData.getVersion()), acceptData.getSystem()); |
| | | // 没有通知 |
| | | if (ap == null || !ap.getShow()) { |
| | | ap = null; |
| | | } |
| | | |
| | | // else {// 有通知 |
| | | // Gson gson = new |
| | | // GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); |
| | | // out.print(JsonUtil.loadTrueResult(gson.toJson(ap))); |
| | | // } |
| | | } |
| | | |
| | | /*--------- 京东商品 -------*/ |
| | | if (goodsType.intValue() == Constant.SOURCE_TYPE_JD) { |
| | | searchJDGoods(acceptData, uid, searchkey, page, filter, order, ap, out); |
| | | return; |
| | | } |
| | | |
| | | /*-------- 拼多多商品 -------*/ |
| | | if (goodsType.intValue() == Constant.SOURCE_TYPE_PDD) { |
| | | searchPDDGoods(acceptData, uid, searchkey, page, filter, order, ap, out); |
| | | return; |
| | | } |
| | | |
| | | /*-------- 唯品会商品 ------*/ |
| | | if (goodsType.intValue() == Constant.SOURCE_TYPE_VIP) { |
| | | searchVIPGoods(acceptData, uid, searchkey, page, filter, order, ap, out); |
| | | return; |
| | | } |
| | | |
| | | /*-------- 苏宁商品 ------*/ |
| | | if (goodsType.intValue() == Constant.SOURCE_TYPE_SUNING) { |
| | | searchSuningGoods(acceptData, uid, searchkey, page, filter, order, ap, out); |
| | | return; |
| | | } |
| | | |
| | | |
| | | /*-------- 抖音商品 ------*/ |
| | | if (goodsType.intValue() == Constant.SOURCE_TYPE_DY) { |
| | | searchDYGoods(acceptData, uid, searchkey, page, filter, order, ap, out); |
| | | return; |
| | | } |
| | | |
| | | /*-------- 淘宝商品 -------*/ |
| | | searchTaoBaoGoods(acceptData, uid, searchkey, page, filter, order, ap, out); |
| | | |
| | | } |
| | | |
| | | |
| | | @RequestMapping(value = "searchGoodsTJ") |
| | | public void searchGoodsTJ(AcceptData acceptData, Integer goodsType, String key, Integer page, String filter, |
| | | Integer order, Long uid, String notifyType, HttpSession session, HttpServletRequest request, PrintWriter out) { |
| | | |
| | | if (goodsType == null || goodsType < 1 || goodsType > 5) { |
| | | out.print(JsonUtil.loadFalseResult(1, "请传递正确平台参数")); |
| | | return; |
| | | } |
| | | |
| | | if (page == null || page < 1) { |
| | | out.print(JsonUtil.loadFalseResult(1, "页码不能小于1")); |
| | | return; |
| | | } |
| | | |
| | | if (StringUtil.isNullOrEmpty(key)) { |
| | | out.print(JsonUtil.loadFalseResult(1, "请输入搜索内容")); |
| | | return; |
| | | } |
| | | final String searchkey = key.trim(); |
| | | |
| | | |
| | | executor.execute(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | HistorySearch search = new HistorySearch(); |
| | | search.setDevice(StringUtil.isNullOrEmpty(acceptData.getUtdid()) ? acceptData.getDevice() : acceptData.getUtdid()); |
| | | search.setKey(key); |
| | | search.setSystem(acceptData.getSystem()); |
| | | search.setUid(uid); |
| | | search.setGoodsType(goodsType); |
| | | search.setIpInfo(IPUtil.getRemotIP(request) + ":" + request.getRemotePort()); |
| | | historySearchService.addHistorySearch(search); |
| | | } |
| | | }); |
| | | |
| | | |
| | | AppPageNotification ap = null; |
| | | if (page == 1) { |
| | | ap = appPageNotificationService.getValidNotificationByTypeCache(notifyType, acceptData.getPlatform(), |
| | | Integer.parseInt(acceptData.getVersion()), acceptData.getSystem()); |
| | | // 没有通知 |
| | | if (ap == null || !ap.getShow()) { |
| | | ap = null; |
| | | } |
| | | |
| | | // else {// 有通知 |
| | | // Gson gson = new |
| | | // GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); |
| | | // out.print(JsonUtil.loadTrueResult(gson.toJson(ap))); |
| | | // } |
| | | } |
| | | |
| | | /*--------- 京东商品 -------*/ |
| | | if (goodsType.intValue() == Constant.SOURCE_TYPE_JD) { |
| | | searchJDGoods(acceptData, uid, searchkey, page, filter, order, ap, out); |
| | | return; |
| | | } |
| | | |
| | | /*-------- 拼多多商品 -------*/ |
| | | if (goodsType.intValue() == Constant.SOURCE_TYPE_PDD) { |
| | | searchPDDGoods(acceptData, uid, searchkey, page, filter, order, ap, out); |
| | | return; |
| | | } |
| | | |
| | | /*-------- 唯品会商品 ------*/ |
| | | if (goodsType.intValue() == Constant.SOURCE_TYPE_VIP) { |
| | | searchVIPGoods(acceptData, uid, searchkey, page, filter, order, ap, out); |
| | | return; |
| | | } |
| | | |
| | | /*-------- 苏宁商品 ------*/ |
| | | if (goodsType.intValue() == Constant.SOURCE_TYPE_SUNING) { |
| | | searchSuningGoods(acceptData, uid, searchkey, page, filter, order, ap, out); |
| | | return; |
| | | } |
| | | |
| | | |
| | | /*-------- 抖音商品 ------*/ |
| | | if (goodsType.intValue() == Constant.SOURCE_TYPE_DY) { |
| | | searchDYGoods(acceptData, uid, searchkey, page, filter, order, ap, out); |
| | | return; |
| | | } |
| | | |
| | | |
| | | /*-------- 淘宝商品 -------*/ |
| | | searchTaoBaoGoods(acceptData, uid, searchkey, page, filter, order, ap, out); |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 执行搜索-新版 |
| | | * |
| | | * @param acceptData |
| | | * @param uid |
| | | * @param key |
| | | * @param page |
| | | * @param filter |
| | | * @param order |
| | | * @param ap |
| | | * @param out |
| | | */ |
| | | private void searchTaoBaoGoods(AcceptData acceptData, Long uid, String key, Integer page, String filter, Integer order, |
| | | AppPageNotification ap, PrintWriter out) { |
| | | String goodsId = null; |
| | | //是否包含淘宝链接/口令 |
| | | if (page == 1) { |
| | | List<String> linkList = HttpUtil.getUrlListFromText(key); |
| | | if (((linkList != null && linkList.size() > 0) || TaoBaoUtil.isHaveNewVersionTaoBaoToken(key))&&false) { |
| | | // 暂时不通过链接搜索 |
| | | String id = DaTaoKeApiUtil.parseGoodsIdFromToken(key); |
| | | if (id != null) { |
| | | goodsId = id; |
| | | } |
| | | if (goodsId == null) { |
| | | try { |
| | | TaoKeApiUtil.TokenConvertResult result = TaoKeApiUtil.tokenConvert(key); |
| | | if (result != null) { |
| | | goodsId = result.getNum_iid(); |
| | | } |
| | | } catch (TaoBaoTokenParseException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | |
| | | } |
| | | if (goodsId == null) { |
| | | //解析链接 |
| | | // 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, goodsBriefList, paramsDTO, false); |
| | | |
| | | Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) |
| | | .excludeFieldsWithoutExposeAnnotation().create(); |
| | | |
| | | JSONObject data = new JSONObject(); |
| | | data.put("result", gson.toJson(list)); |
| | | data.put("count", count); |
| | | |
| | | if (page == 1) { // 第一页返回店铺信息 |
| | | String platform = acceptData.getPlatform(); |
| | | String version = acceptData.getVersion(); |
| | | if (("ios".equalsIgnoreCase(platform) && VersionUtil.greaterThan_2_0_5(platform, version)) |
| | | || ("android".equalsIgnoreCase(platform) && VersionUtil.greaterThan_2_0_2(platform, version))) { |
| | | BrandInfoVO brandInfoVO = null; |
| | | try { |
| | | brandInfoVO = brandInfoService.listByAlikeName(key, acceptData.getPlatform(), |
| | | acceptData.getVersion(), acceptData.getSystem()); |
| | | } catch (Exception e) { |
| | | } |
| | | if (brandInfoVO != null) |
| | | data.put("shop", JsonUtil.getApiCommonGson().toJson(brandInfoVO)); |
| | | } else { |
| | | List<TaoBaoShopVO> listShop = taoBaoShopService.getShopByKeyV2(key, acceptData.getPlatform(), |
| | | acceptData.getVersion(), acceptData.getSystem()); |
| | | if (listShop != null && listShop.size() > 0 && listShop.get(0).getListGoodsVO() != null |
| | | && listShop.get(0).getListGoodsVO().size() > 2) { |
| | | TaoBaoShopVO taoBaoShop = listShop.get(0); |
| | | if (("ios".equalsIgnoreCase(platform) && VersionUtil.greaterThan_2_0(platform, version)) |
| | | || ("android".equalsIgnoreCase(platform) |
| | | && VersionUtil.greaterThan_2_0_1(platform, version))) { |
| | | BrandInfoVO brandInfoVO = new BrandInfoVO(); |
| | | brandInfoVO.setId(taoBaoShop.getId()); |
| | | brandInfoVO.setName(taoBaoShop.getShopName()); |
| | | brandInfoVO.setIcon(taoBaoShop.getShopIcon()); |
| | | brandInfoVO.setListGoods(taoBaoShop.getListGoodsVO()); |
| | | data.put("shop", JsonUtil.getApiCommonGson().toJson(brandInfoVO)); |
| | | } else { |
| | | data.put("shop", JsonUtil.getApiCommonGson().toJson(taoBaoShop)); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | out.print(JsonUtil.loadTrueResult(buildSearchResult(data, ap))); |
| | | } |
| | | |
| | | private JSONObject buildSearchResult(JSONObject data, AppPageNotification ap) { |
| | | if (ap != null && data != null) { |
| | | Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); |
| | | data.put("notification", gson.toJson(ap)); |
| | | } |
| | | return data; |
| | | } |
| | | |
| | | /** |
| | | * @param acceptData |
| | | * @param key |
| | | * @param page |
| | | * @param filter |
| | | * @param order |
| | | * @param ap |
| | | * @param out |
| | | */ |
| | | private void searchJDGoods(AcceptData acceptData, Long uid, String key, Integer page, String filter, Integer order, |
| | | AppPageNotification ap, PrintWriter out) { |
| | | |
| | | String goodsId = null; |
| | | long count = 0; |
| | | List<JDGoods> goodsList = new ArrayList<>(); |
| | | |
| | | if (page == 1) { |
| | | List<String> linkList = HttpUtil.getUrlListFromText(key); |
| | | if (linkList != null && linkList.size() > 0) { |
| | | String jdId = clipboardAnalysisManager.parseJDSkuIdFromLink(linkList.get(0)); |
| | | if (!StringUtil.isNullOrEmpty(jdId)) { |
| | | goodsId = jdId; |
| | | } |
| | | } |
| | | } |
| | | |
| | | boolean hasCoupon = false; |
| | | if (goodsId != null) { |
| | | JDGoods goods = JDApiUtil.getGoodsDetail(goodsId); |
| | | if (goods != null) { |
| | | count = 1; |
| | | goodsList.add(goods); |
| | | } |
| | | } else { |
| | | JDSearchResult result = null; |
| | | String way = configService.getValue(ConfigKeyEnum.jdApiSearchKey.getKey(), acceptData.getSystem()); |
| | | if ("1".equals(way)) { |
| | | JDFilter filterAPI = new JDFilter(); |
| | | filterAPI.setKeyword(SearchFilterUtil.filterSearchContent(key)); |
| | | filterAPI.setPageIndex(page); |
| | | filterAPI.setPageSize(Constant.PAGE_SIZE); |
| | | |
| | | if (order != null) { |
| | | int sort = order.intValue(); |
| | | switch (sort) { |
| | | case 1: // 销量 desc |
| | | filterAPI.setSort(JDFilter.SORT_DESC); |
| | | filterAPI.setSortName(JDFilter.SORTNAME_ORDER_COUNT_30DAYS); |
| | | break; |
| | | case 2: // 价格—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 (goodsList != null && goodsList.size() > 0) { |
| | | Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) |
| | | .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); |
| | | GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), |
| | | acceptData.getVersion(), acceptData.getSystem()); |
| | | |
| | | |
| | | List<GoodsDetailVO> voList = goodsLijinMnager.loadOtherMoneyInfo(acceptData.getSystem(), uid, goodsList, paramsDTO); |
| | | |
| | | for (GoodsDetailVO vo : voList) { |
| | | if (hasCoupon) { |
| | | if (vo.isHasCoupon()) { |
| | | array.add(gson.toJson(vo)); |
| | | } |
| | | } else { |
| | | array.add(gson.toJson(vo)); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | data.put("result", array); |
| | | data.put("count", count); |
| | | out.print(JsonUtil.loadTrueResult(buildSearchResult(data, ap))); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 拼多多 |
| | | * |
| | | * @param acceptData |
| | | * @param key |
| | | * @param page |
| | | * @param filter |
| | | * @param order |
| | | * @param ap |
| | | * @param out |
| | | */ |
| | | private void searchPDDGoods(AcceptData acceptData, Long uid, String key, Integer page, String filter, Integer order, |
| | | AppPageNotification ap, PrintWriter out) { |
| | | String goodsId = null; |
| | | if (page == 1) { |
| | | List<String> linkList = HttpUtil.getUrlListFromText(key); |
| | | if (linkList != null && linkList.size() > 0) { |
| | | String pddGoodsId = PinDuoDuoUtil.getPDDGoodsId(linkList.get(0)); |
| | | if (!StringUtil.isNullOrEmpty(pddGoodsId)) { |
| | | goodsId = pddGoodsId; |
| | | } |
| | | } |
| | | } |
| | | int count = 0; |
| | | List<PDDGoodsDetail> goodsList = new ArrayList<>(); |
| | | |
| | | String customParams = Constant.PDD_SEARCH_CUSTOMER_PARAMS; |
| | | if (uid != null) { |
| | | String cp = pddAuthService.getFanliCustomParams(uid); |
| | | if (PinDuoDuoApiUtil.isAuth(pidManager.getPidCache(acceptData.getSystem(), Constant.SOURCE_TYPE_PDD, SystemPIDInfo.PidType.fanli), cp)) { |
| | | customParams = cp; |
| | | } |
| | | } |
| | | |
| | | if (goodsId != null) { |
| | | try { |
| | | PDDGoodsDetail pddGoodsDetail = PinDuoDuoApiUtil.getGoodsDetail(goodsId, PinDuoDuoApiUtil.PID_DEFAULT, customParams); |
| | | if (pddGoodsDetail != null) { |
| | | count = 1; |
| | | goodsList.add(pddGoodsDetail); |
| | | } |
| | | } catch (PDDApiException e) { |
| | | e.printStackTrace(); |
| | | if (e.getCode() == PDDApiException.CODE_NOT_AUTH) { |
| | | try { |
| | | PDDGoodsDetail pddGoodsDetail = PinDuoDuoApiUtil.getGoodsDetail(goodsId, PinDuoDuoApiUtil.PID_DEFAULT, Constant.PDD_SEARCH_CUSTOMER_PARAMS); |
| | | if (pddGoodsDetail != null) { |
| | | count = 1; |
| | | goodsList.add(pddGoodsDetail); |
| | | } |
| | | } catch (Exception e1) { |
| | | |
| | | } |
| | | } |
| | | } |
| | | } else { |
| | | PDDSearchFilter pddfilter = new PDDSearchFilter(); |
| | | pddfilter.setKw(SearchFilterUtil.filterSearchContent(key)); |
| | | pddfilter.setPage(page); |
| | | pddfilter.setPageSize(Constant.PAGE_SIZE); |
| | | |
| | | if (order != null) { |
| | | int sort = order.intValue(); |
| | | switch (sort) { |
| | | case 1: // 销量 desc |
| | | pddfilter.setSortType(6); |
| | | break; |
| | | case 2: // 价格—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)); |
| | | } |
| | | } |
| | | |
| | | data.put("result", array); |
| | | data.put("count", count); |
| | | out.print(JsonUtil.loadTrueResult(buildSearchResult(data, ap))); |
| | | } |
| | | |
| | | /** |
| | | * 搜索抖音商品 |
| | | * |
| | | * @param acceptData |
| | | * @param key |
| | | * @param page |
| | | * @param filter |
| | | * @param order |
| | | * @param out void 返回类型 |
| | | * @throws |
| | | * @Title: searchVIPGoods |
| | | * @Description: |
| | | */ |
| | | private void searchDYGoods(AcceptData acceptData, Long uid, String key, Integer page, String filter, Integer order, |
| | | AppPageNotification ap, PrintWriter out) { |
| | | String goodsId = null; |
| | | if (page == 1) { |
| | | List<String> linkList = HttpUtil.getUrlListFromText(key); |
| | | if (linkList != null && linkList.size() > 0) { |
| | | String productId = DYUtil.parseProdectIdFromLink(linkList.get(0)); |
| | | if (!StringUtil.isNullOrEmpty(productId)) { |
| | | goodsId = productId; |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | long count = 0; |
| | | List<BaseGoodsInfo> goodsList = new ArrayList<>(); |
| | | if (goodsId != null) { |
| | | DYGoodsDetail goodsInfo = CSJCPSApiUtil.goodsDetail(Long.parseLong(goodsId)); |
| | | if (goodsInfo != null) { |
| | | goodsList.add(goodsInfo); |
| | | count = 1; |
| | | } |
| | | } else { |
| | | DYGoodsSearchFilter searchFilter = new DYGoodsSearchFilter(); |
| | | searchFilter.setTitle(key); |
| | | searchFilter.setPage(page); |
| | | searchFilter.setPageSize(Constant.PAGE_SIZE); |
| | | |
| | | if (order != null) { |
| | | int sort = order.intValue(); |
| | | switch (sort) { |
| | | case 1: // 销量 desc |
| | | searchFilter.setSearch_type(1); |
| | | searchFilter.setOrder_type(1); |
| | | break; |
| | | case 2: // 价格—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; |
| | | 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)); |
| | | } |
| | | } |
| | | |
| | | data.put("result", array); |
| | | data.put("count", count); |
| | | out.print(JsonUtil.loadTrueResult(buildSearchResult(data, ap))); |
| | | } |
| | | |
| | | /** |
| | | * 搜索唯品会商品 |
| | | * |
| | | * @param acceptData |
| | | * @param key |
| | | * @param page |
| | | * @param filter |
| | | * @param order |
| | | * @param out void 返回类型 |
| | | * @throws |
| | | * @Title: searchVIPGoods |
| | | * @Description: |
| | | */ |
| | | private void searchSuningGoods(AcceptData acceptData, Long uid, String key, Integer page, String filter, Integer order, |
| | | AppPageNotification ap, PrintWriter out) { |
| | | |
| | | String goodsId = null; |
| | | if (page == 1) { |
| | | List<String> linkList = HttpUtil.getUrlListFromText(key); |
| | | if (linkList != null && linkList.size() > 0) { |
| | | String suningId = SuningUtil.parseGoodsIdByUrl(linkList.get(0)); |
| | | if (!StringUtil.isNullOrEmpty(suningId)) { |
| | | goodsId = suningId; |
| | | } |
| | | } |
| | | } |
| | | |
| | | long count = 0; |
| | | List<SuningGoodsInfo> goodsList = new ArrayList<>(); |
| | | if (goodsId != null) { |
| | | |
| | | String[] ids = SuningUtil.getGoodsIdDetail(goodsId); |
| | | if (ids != null && ids.length == 2) { |
| | | SuningGoodsInfo goodsInfo = SuningApiUtil.getGoodsDetail(ids[1], ids[0]); |
| | | if (goodsInfo != null) { |
| | | goodsList.add(goodsInfo); |
| | | count = 1; |
| | | } |
| | | } |
| | | } else { |
| | | SuningQueryModel searchFilter = new SuningQueryModel(); |
| | | searchFilter.setKeyword(key); |
| | | searchFilter.setPageIndex(page); |
| | | searchFilter.setSize(10); |
| | | |
| | | if (order != null) { |
| | | if (order == 1) { // 销量高到低 |
| | | searchFilter.setSortType(2); |
| | | } else if (order == 2) { // 价格高到低 |
| | | searchFilter.setSortType(3); |
| | | } else if (order == 3) { // 价格低到高 |
| | | searchFilter.setSortType(4); |
| | | } else if (order == 4) { // 返利比高到低 |
| | | searchFilter.setSortType(5); |
| | | } |
| | | } |
| | | |
| | | if (!StringUtil.isNullOrEmpty(filter)) { |
| | | JSONObject jsonfilter = JSONObject.fromObject(filter); |
| | | Boolean coupon = jsonfilter.optBoolean("coupon"); |
| | | if (coupon != null && coupon) { |
| | | searchFilter.setCoupon(1); // 有券 |
| | | } |
| | | |
| | | Boolean snfwservice = jsonfilter.optBoolean("snfwservice");// 苏宁服务 |
| | | if (snfwservice != null && snfwservice) { |
| | | searchFilter.setSnfwservice(1); |
| | | } |
| | | |
| | | Boolean snhwg = jsonfilter.optBoolean("snhwg");// 苏宁国际 |
| | | if (snhwg != null && snhwg) { |
| | | searchFilter.setSnhwg(1); |
| | | } |
| | | |
| | | Boolean suningService = jsonfilter.optBoolean("suningService");// 苏宁自营 |
| | | if (suningService != null && suningService) { |
| | | searchFilter.setSuningService(1); |
| | | } |
| | | |
| | | Boolean pgSearch = jsonfilter.optBoolean("pgSearch");// 拼购 |
| | | if (pgSearch != null && pgSearch) { |
| | | searchFilter.setPgSearch(1); |
| | | } |
| | | |
| | | String minPrice = jsonfilter.optString("minPrice"); |
| | | if (!StringUtil.isNullOrEmpty(minPrice)) { |
| | | searchFilter.setStartPrice(minPrice); |
| | | } |
| | | |
| | | String maxPrice = jsonfilter.optString("maxPrice"); |
| | | if (!StringUtil.isNullOrEmpty(maxPrice)) { |
| | | searchFilter.setEndPrice(maxPrice); |
| | | } |
| | | } |
| | | |
| | | goodsList = SuningApiUtil.searchGoodsOld(searchFilter); |
| | | count = 1000; |
| | | } |
| | | |
| | | JSONObject data = new JSONObject(); |
| | | JSONArray array = new JSONArray(); |
| | | |
| | | List<SuningGoodsInfo> resultList = null; |
| | | |
| | | if (goodsList != null && goodsList.size() > 0) { |
| | | List<String> listId = new ArrayList<>(); |
| | | for (SuningGoodsInfo goodsInfo : goodsList) { |
| | | SuningCommodityInfo info = goodsInfo.getCommodityInfo(); |
| | | if (info != null) { |
| | | listId.add(info.getCommodityCode() + "-" + info.getSupplierCode()); |
| | | } |
| | | } |
| | | resultList = SuningApiUtil.getGoodsDetailList(listId); |
| | | } |
| | | |
| | | if (resultList != null) { |
| | | Gson gson = JsonUtil.getApiCommonGson(); |
| | | if (resultList != null && resultList.size() > 0) { |
| | | GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), |
| | | acceptData.getVersion(), acceptData.getSystem()); |
| | | |
| | | List<GoodsDetailVO> voList = goodsLijinMnager.loadOtherMoneyInfo(acceptData.getSystem(), uid, resultList, paramsDTO); |
| | | for (GoodsDetailVO goodsDetailVO : voList) { |
| | | array.add(gson.toJson(goodsDetailVO)); |
| | | } |
| | | } |
| | | } |
| | | |
| | | data.put("result", array); |
| | | data.put("count", count); |
| | | out.print(JsonUtil.loadTrueResult(buildSearchResult(data, ap))); |
| | | } |
| | | |
| | | } |