| | |
| | | package com.yeshi.fanli.controller.wxmp.v1;
|
| | |
|
| | | import java.io.PrintWriter;
|
| | | import java.util.List;
|
| | | import java.util.regex.Matcher;
|
| | | import java.util.regex.Pattern;
|
| | |
|
| | | 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.WXMPAcceptData;
|
| | | 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.entity.goods.CommonGoods;
|
| | | import com.yeshi.fanli.entity.jd.JDGoods;
|
| | | import com.yeshi.fanli.log.LogHelper;
|
| | | import com.yeshi.fanli.service.inter.brand.BrandInfoService;
|
| | | import com.yeshi.fanli.service.inter.config.ConfigService;
|
| | | import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
|
| | | 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.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.taobao.SearchFilterUtil;
|
| | | import com.yeshi.fanli.util.taobao.TaoBaoUtil;
|
| | | import com.yeshi.fanli.vo.goods.GoodsDetailVO;
|
| | |
|
| | | import net.sf.json.JSONArray;
|
| | | import net.sf.json.JSONObject;
|
| | |
|
| | | @Controller("WXMPSearchController")
|
| | | @RequestMapping("/wxmp/api/v1/search")
|
| | | public class SearchController {
|
| | |
|
| | | @Resource
|
| | | private ConfigService configService;
|
| | |
|
| | | @Resource
|
| | | private HongBaoManageService hongBaoManageService;
|
| | |
|
| | | @Resource(name = "taskExecutor")
|
| | | private TaskExecutor executor;
|
| | |
|
| | | @Resource
|
| | | private BrandInfoService brandInfoService;
|
| | |
|
| | | @Resource
|
| | | private JDGoodsLinkParseManager jdGoodsLinkParseManager;
|
| | | |
| | |
|
| | | /**
|
| | | * 粘贴板信息推荐
|
| | | * |
| | | * @param acceptData
|
| | | * @param url
|
| | | * 商品链接
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "getRecommendInfo", method = RequestMethod.POST)
|
| | | public void getRecommendInfo(WXMPAcceptData acceptData, String text, Long uid, PrintWriter out) {
|
| | | if (StringUtil.isNullOrEmpty(text)) {
|
| | | out.print(JsonUtil.loadFalseResult("值为空"));
|
| | | return;
|
| | | }
|
| | | |
| | | // 去除前后空格
|
| | | int type = 1;
|
| | | text = text.trim();
|
| | | String URL_REGEX = "(((http|https)://)|(www\\.))[a-zA-Z0-9\\._-]+\\.[a-zA-Z]{2,6}(:[0-9]{1,4})?(/[a-zA-Z0-9\\&%_\\./-~-]*)?";
|
| | | Pattern p = Pattern.compile(URL_REGEX);
|
| | | Matcher matcher = p.matcher(text);
|
| | | if (!matcher.find()) {// 不包含链接
|
| | | if (text.length() > 256) {
|
| | | out.print(JsonUtil.loadFalseResult("值过长"));
|
| | | return;
|
| | | }
|
| | | String pattern = "^[A-Za-z0-9-]+$";
|
| | | if (Pattern.matches(pattern, text.replace(" ", ""))) {// 删除空格
|
| | | out.println(JsonUtil.loadFalseResult("不支持推荐"));
|
| | | return;
|
| | | }
|
| | |
|
| | | LogHelper.test("根据粘贴板推荐:" + text);
|
| | | if (text.length() > 80) {
|
| | | out.print(JsonUtil.loadFalseResult("值过长"));
|
| | | return;
|
| | | }
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(TaoBaoUtil.parseSystemTaoToken(text))) {
|
| | | out.print(JsonUtil.loadFalseResult("不支持推荐"));
|
| | | return;
|
| | | }
|
| | | JSONObject data = new JSONObject();
|
| | | data.put("type", type);
|
| | | data.put("title", text);
|
| | | out.print(JsonUtil.loadTrueResult(data));
|
| | | return;
|
| | | }
|
| | |
|
| | | type = 2;
|
| | | CommonGoods commonGoods = null;
|
| | | text = matcher.group();
|
| | | String jdId = JDUtil.getJDGoodsId(text);
|
| | | if (StringUtil.isNullOrEmpty(jdId)) {
|
| | | jdId = JDUtil.getJDGoodsIdByWeiXin(text); // 微信链接
|
| | | if (StringUtil.isNullOrEmpty(jdId) && text.contains("u.jd.com")) {
|
| | | jdId = jdGoodsLinkParseManager.parseGoodsIdByJDShortUrl(text); // 领券短连接
|
| | | }
|
| | | }
|
| | | if (!StringUtil.isNullOrEmpty(jdId)) {
|
| | | JDGoods goods = JDApiUtil.getGoodsDetail(Long.parseLong(jdId));
|
| | | if (goods != null) {
|
| | | // 高级接口 -- 信息更完整
|
| | | JDGoods jdGoods = JDApiUtil.queryGoodsDetail(Long.parseLong(jdId));
|
| | | if (jdGoods != null) {
|
| | | commonGoods = CommonGoodsFactory.create(jdGoods);
|
| | | } else {
|
| | | commonGoods = CommonGoodsFactory.create(goods);
|
| | | }
|
| | | } else {
|
| | | type = 3;
|
| | | goods = JDUtil.getSimpleGoodsInfo(jdId);
|
| | | if (goods != null) {
|
| | | commonGoods = new CommonGoods();
|
| | | commonGoods.setTitle(goods.getSkuName());
|
| | | commonGoods.setPicture(goods.getPicUrl());
|
| | | }
|
| | | }
|
| | | } else {
|
| | | String pddId = PinDuoDuoUtil.getPDDGoodsId(text);
|
| | | if (!StringUtil.isNullOrEmpty(pddId)) {
|
| | | PDDGoodsDetail goods = PinDuoDuoApiUtil.getGoodsDetail(Long.parseLong(pddId));
|
| | | if (goods != null) {
|
| | | commonGoods = CommonGoodsFactory.create(goods);
|
| | | } else {
|
| | | type = 3;
|
| | | goods = PinDuoDuoUtil.getPDDGoodsInfo(pddId);
|
| | | if (goods != null) {
|
| | | commonGoods = new CommonGoods();
|
| | | commonGoods.setTitle(goods.getGoodsName());
|
| | | commonGoods.setPicture(goods.getGoodsThumbnailUrl());
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | |
| | | if (commonGoods == null) {
|
| | | out.println(JsonUtil.loadFalseResult("暂未找到该商品,请稍后再试!"));
|
| | | return;
|
| | | }
|
| | |
|
| | | if (type == 3) {
|
| | | JSONObject data = new JSONObject();
|
| | | JSONObject goodsJSON = new JSONObject();
|
| | | goodsJSON.put("title", commonGoods.getTitle());
|
| | | goodsJSON.put("pictUrl", commonGoods.getPicture());
|
| | | data.put("type", type);
|
| | | data.put("desc", "该商品无推广信息");
|
| | | data.put("goods", goodsJSON);
|
| | | out.print(JsonUtil.loadTrueResult(data));
|
| | | return;
|
| | | } |
| | | |
| | | JSONObject data = new JSONObject();
|
| | | Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
|
| | | .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
|
| | | data.put("type", type);
|
| | | data.put("goods", gson.toJson(GoodsDetailVOFactory.convertCommonGoods(commonGoods, hongBaoManageService.getShowComputeRate(acceptData.getPlatform(), acceptData.getVersion()))));
|
| | | out.print(JsonUtil.loadTrueResult(data));
|
| | | return;
|
| | | }
|
| | |
|
| | |
|
| | | /**
|
| | | * 搜索候选词
|
| | | * |
| | | * @param acceptData
|
| | | * @param kw
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "suggestSearch", method = RequestMethod.POST)
|
| | | public void getSugguestSearch(WXMPAcceptData 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(WXMPAcceptData acceptData, Integer goodsType, String key, Integer page, String filter,
|
| | | Integer order, Long uid, HttpSession session, PrintWriter out) {
|
| | | if (goodsType == null || goodsType < 2 || goodsType > 3) {
|
| | | out.print(JsonUtil.loadFalseResult(1, "请传递正确平台参数"));
|
| | | return;
|
| | | }
|
| | |
|
| | | if (StringUtil.isNullOrEmpty(key)) {
|
| | | out.print(JsonUtil.loadFalseResult(1, "请输入搜索内容"));
|
| | | return;
|
| | | }
|
| | | |
| | | if (page == null || page < 1) {
|
| | | page = 1;
|
| | | }
|
| | | |
| | | final String searchkey = key.trim();
|
| | | if (searchkey.startsWith("http://") || searchkey.startsWith("https://")) {
|
| | | JSONObject data = new JSONObject();
|
| | | data.put("count", 0);
|
| | | data.put("list", new JSONArray());
|
| | | 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;
|
| | | }
|
| | | }
|
| | |
|
| | |
|
| | | /**
|
| | | * 京东
|
| | | * |
| | | * @param kw
|
| | | * @param page
|
| | | * @param filter
|
| | | * @param order
|
| | | * @param startprice
|
| | | * @param endprice
|
| | | * @return
|
| | | */
|
| | | private void searchJDGoods(WXMPAcceptData acceptData, String key, Integer page, String filter, Integer order,
|
| | | PrintWriter out) {
|
| | |
|
| | | JDSearchResult result = null;
|
| | | boolean hasCoupon = false;
|
| | | String way = configService.get("jd_api_search_key");
|
| | | 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 = hongBaoManageService.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("count", count);
|
| | | data.put("list", array);
|
| | | out.print(JsonUtil.loadTrueResult(data));
|
| | | }
|
| | |
|
| | | /**
|
| | | * 拼多多
|
| | | * |
| | | * @param kw
|
| | | * @param page
|
| | | * @param filter
|
| | | * @param order
|
| | | * @param startprice
|
| | | * @param endprice
|
| | | * @return
|
| | | */
|
| | | private void searchPDDGoods(WXMPAcceptData 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 = hongBaoManageService.getShowComputeRate(acceptData.getPlatform(),
|
| | | acceptData.getVersion());
|
| | |
|
| | | for (PDDGoodsDetail goods : goodsList) {
|
| | | GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertPDDGoods(goods, paramsDTO);
|
| | | array.add(gson.toJson(goodsDetailVO));
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | data.put("count", count);
|
| | | data.put("list", array);
|
| | | out.print(JsonUtil.loadTrueResult(data));
|
| | | }
|
| | | }
|
| | | package com.yeshi.fanli.controller.wxmp.v1; |
| | | |
| | | import java.io.PrintWriter; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.regex.Matcher; |
| | | import java.util.regex.Pattern; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpSession; |
| | | |
| | | import com.yeshi.fanli.entity.SystemEnum; |
| | | import com.yeshi.fanli.util.SystemInfoUtil; |
| | | 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.WXMPAcceptData; |
| | | 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.entity.accept.AcceptData; |
| | | import com.yeshi.fanli.entity.bus.search.HotSearch; |
| | | 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.log.LogHelper; |
| | | import com.yeshi.fanli.service.inter.brand.BrandInfoService; |
| | | import com.yeshi.fanli.service.inter.config.ConfigService; |
| | | import com.yeshi.fanli.service.inter.config.HotSearchService; |
| | | import com.yeshi.fanli.service.inter.order.OrderHongBaoMoneyComputeService; |
| | | import com.yeshi.fanli.service.inter.order.config.HongBaoManageService; |
| | | import com.yeshi.fanli.service.manger.goods.jd.JDGoodsLinkParseManager; |
| | | import com.yeshi.common.entity.PageEntity; |
| | | import com.yeshi.fanli.util.Constant; |
| | | import com.yeshi.fanli.util.StringUtil; |
| | | import com.yeshi.fanli.util.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.taobao.SearchFilterUtil; |
| | | import com.yeshi.fanli.util.taobao.TaoBaoUtil; |
| | | import com.yeshi.fanli.vo.goods.GoodsDetailVO; |
| | | |
| | | import net.sf.json.JSONArray; |
| | | import net.sf.json.JSONObject; |
| | | |
| | | @Controller("WXMPSearchController") |
| | | @RequestMapping("/wxmp/api/v1/search") |
| | | public class SearchController { |
| | | |
| | | @Resource |
| | | private ConfigService configService; |
| | | |
| | | @Resource |
| | | private HongBaoManageService hongBaoManageService; |
| | | |
| | | @Resource |
| | | private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService; |
| | | |
| | | @Resource(name = "taskExecutor") |
| | | private TaskExecutor executor; |
| | | |
| | | @Resource |
| | | private BrandInfoService brandInfoService; |
| | | |
| | | @Resource |
| | | private JDGoodsLinkParseManager jdGoodsLinkParseManager; |
| | | |
| | | @Resource |
| | | private HotSearchService hotSearchService; |
| | | |
| | | /** |
| | | * 粘贴板信息推荐 |
| | | * |
| | | * @param acceptData |
| | | * @param url |
| | | * 商品链接 |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "getRecommendInfo", method = RequestMethod.POST) |
| | | public void getRecommendInfo(WXMPAcceptData acceptData, String text, Long uid, PrintWriter out) { |
| | | if (StringUtil.isNullOrEmpty(text)) { |
| | | out.print(JsonUtil.loadFalseResult("值为空")); |
| | | return; |
| | | } |
| | | |
| | | // 去除前后空格 |
| | | int type = 1; |
| | | text = text.trim(); |
| | | String URL_REGEX = "(((http|https)://)|(www\\.))[a-zA-Z0-9\\._-]+\\.[a-zA-Z]{2,6}(:[0-9]{1,4})?(/[a-zA-Z0-9\\&%_\\./-~-]*)?"; |
| | | Pattern p = Pattern.compile(URL_REGEX); |
| | | Matcher matcher = p.matcher(text); |
| | | if (!matcher.find()) {// 不包含链接 |
| | | if (text.length() > 256) { |
| | | out.print(JsonUtil.loadFalseResult("值过长")); |
| | | return; |
| | | } |
| | | String pattern = "^[A-Za-z0-9-]+$"; |
| | | if (Pattern.matches(pattern, text.replace(" ", ""))) {// 删除空格 |
| | | out.println(JsonUtil.loadFalseResult("不支持推荐")); |
| | | return; |
| | | } |
| | | |
| | | LogHelper.test("根据粘贴板推荐:" + text); |
| | | if (text.length() > 80) { |
| | | out.print(JsonUtil.loadFalseResult("值过长")); |
| | | return; |
| | | } |
| | | |
| | | if (!StringUtil.isNullOrEmpty(TaoBaoUtil.parseSystemTaoToken(text))) { |
| | | out.print(JsonUtil.loadFalseResult("不支持推荐")); |
| | | return; |
| | | } |
| | | JSONObject data = new JSONObject(); |
| | | data.put("type", type); |
| | | data.put("title", text); |
| | | out.print(JsonUtil.loadTrueResult(data)); |
| | | return; |
| | | } |
| | | |
| | | type = 2; |
| | | CommonGoods commonGoods = null; |
| | | text = matcher.group(); |
| | | String jdId = JDUtil.getJDGoodsId(text); |
| | | if (StringUtil.isNullOrEmpty(jdId)) { |
| | | jdId = JDUtil.getJDGoodsIdByWeiXin(text); // 微信链接 |
| | | if (StringUtil.isNullOrEmpty(jdId) && text.contains("u.jd.com")) { |
| | | jdId = jdGoodsLinkParseManager.parseGoodsIdByJDShortUrl(text); // 领券短连接 |
| | | } |
| | | } |
| | | if (!StringUtil.isNullOrEmpty(jdId)) { |
| | | JDGoods goods = JDApiUtil.getGoodsDetail(Long.parseLong(jdId)); |
| | | if (goods != null) { |
| | | // 高级接口 -- 信息更完整 |
| | | JDGoods jdGoods = JDApiUtil.queryGoodsDetail(Long.parseLong(jdId)); |
| | | if (jdGoods != null) { |
| | | commonGoods = CommonGoodsFactory.create(jdGoods); |
| | | } else { |
| | | commonGoods = CommonGoodsFactory.create(goods); |
| | | } |
| | | } else { |
| | | type = 3; |
| | | goods = JDUtil.getSimpleGoodsInfo(jdId); |
| | | if (goods != null) { |
| | | commonGoods = new CommonGoods(); |
| | | commonGoods.setTitle(goods.getSkuName()); |
| | | commonGoods.setPicture(goods.getPicUrl()); |
| | | } |
| | | } |
| | | } else { |
| | | String pddId = PinDuoDuoUtil.getPDDGoodsId(text); |
| | | if (!StringUtil.isNullOrEmpty(pddId)) { |
| | | PDDGoodsDetail goods = PinDuoDuoApiUtil.getGoodsDetail(Long.parseLong(pddId)); |
| | | if (goods != null) { |
| | | commonGoods = CommonGoodsFactory.create(goods); |
| | | } else { |
| | | type = 3; |
| | | goods = PinDuoDuoUtil.getPDDGoodsInfo(pddId); |
| | | if (goods != null) { |
| | | commonGoods = new CommonGoods(); |
| | | commonGoods.setTitle(goods.getGoodsName()); |
| | | commonGoods.setPicture(goods.getGoodsThumbnailUrl()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (commonGoods == null) { |
| | | out.println(JsonUtil.loadFalseResult("暂未找到该商品,请稍后再试!")); |
| | | return; |
| | | } |
| | | |
| | | if (type == 3) { |
| | | JSONObject data = new JSONObject(); |
| | | JSONObject goodsJSON = new JSONObject(); |
| | | goodsJSON.put("title", commonGoods.getTitle()); |
| | | goodsJSON.put("pictUrl", commonGoods.getPicture()); |
| | | data.put("type", type); |
| | | data.put("desc", "该商品无推广信息"); |
| | | data.put("goods", goodsJSON); |
| | | out.print(JsonUtil.loadTrueResult(data)); |
| | | return; |
| | | } |
| | | |
| | | JSONObject data = new JSONObject(); |
| | | Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) |
| | | .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); |
| | | data.put("type", type); |
| | | data.put("goods", gson.toJson(GoodsDetailVOFactory.convertCommonGoods(commonGoods, |
| | | orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), acceptData.getVersion(),acceptData.getSystem())))); |
| | | out.print(JsonUtil.loadTrueResult(data)); |
| | | return; |
| | | } |
| | | |
| | | /** |
| | | * 热门搜索 |
| | | * |
| | | * @param acceptData |
| | | * @param goodsType |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "gethotsearch", method = RequestMethod.POST) |
| | | public void getHotSearch(AcceptData acceptData, Integer goodsType, PrintWriter out) { |
| | | // 默认淘宝 |
| | | if (goodsType == null) { |
| | | goodsType = Constant.SOURCE_TYPE_TAOBAO; |
| | | } |
| | | |
| | | List<HotSearch> list = hotSearchService.getHotSearchCache(goodsType,acceptData.getSystem()); |
| | | if (list == null || list.size() == 0) { |
| | | out.print(JsonUtil.loadFalseResult("没有数据")); |
| | | return; |
| | | } |
| | | List<String> hotSearchList = new ArrayList<String>(); |
| | | if(list!=null) |
| | | for (HotSearch hot : list) |
| | | hotSearchList.add(hot.getName()); |
| | | |
| | | JSONObject data = new JSONObject(); |
| | | data.put("count", list.size()); |
| | | data.put("hotSearchList", hotSearchList); |
| | | data.put("helpLink", configService.getValue(ConfigKeyEnum.newerGonglue.getKey(), SystemInfoUtil.getSystem(acceptData))); |
| | | out.print(JsonUtil.loadTrueResult(data)); |
| | | } |
| | | |
| | | /** |
| | | * 搜索候选词 |
| | | * |
| | | * @param acceptData |
| | | * @param kw |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "suggestSearch", method = RequestMethod.POST) |
| | | public void getSugguestSearch(WXMPAcceptData 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(WXMPAcceptData acceptData, Integer goodsType, String key, Integer page, String filter, |
| | | Integer order, Long uid, HttpSession session, PrintWriter out) { |
| | | if (goodsType == null || goodsType < 2 || goodsType > 3) { |
| | | out.print(JsonUtil.loadFalseResult(1, "请传递正确平台参数")); |
| | | return; |
| | | } |
| | | |
| | | if (StringUtil.isNullOrEmpty(key)) { |
| | | out.print(JsonUtil.loadFalseResult(1, "请输入搜索内容")); |
| | | return; |
| | | } |
| | | |
| | | if (page == null || page < 1) { |
| | | page = 1; |
| | | } |
| | | |
| | | final String searchkey = key.trim(); |
| | | if (searchkey.startsWith("http://") || searchkey.startsWith("https://")) { |
| | | JSONObject data = new JSONObject(); |
| | | data.put("count", 0); |
| | | data.put("list", new JSONArray()); |
| | | 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; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 京东 |
| | | * |
| | | * @param kw |
| | | * @param page |
| | | * @param filter |
| | | * @param order |
| | | * @param startprice |
| | | * @param endprice |
| | | * @return |
| | | */ |
| | | private void searchJDGoods(WXMPAcceptData acceptData, String key, Integer page, String filter, Integer order, |
| | | PrintWriter out) { |
| | | SystemEnum system= SystemInfoUtil.getSystemByWXCXCAppId(acceptData.getAppId()); |
| | | JDSearchResult result = null; |
| | | boolean hasCoupon = false; |
| | | String way = configService.getValue(ConfigKeyEnum.jdApiSearchKey.getKey(), system); |
| | | 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(),acceptData.getSystem()); |
| | | for (JDGoods goods : goodsList) { |
| | | GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertJDGoods(goods, paramsDTO); |
| | | if (hasCoupon) { |
| | | if (goodsDetailVO.isHasCoupon()) { |
| | | array.add(gson.toJson(goodsDetailVO)); |
| | | } |
| | | } else { |
| | | array.add(gson.toJson(goodsDetailVO)); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | data.put("count", count); |
| | | data.put("list", array); |
| | | out.print(JsonUtil.loadTrueResult(data)); |
| | | } |
| | | |
| | | /** |
| | | * 拼多多 |
| | | * |
| | | * @param kw |
| | | * @param page |
| | | * @param filter |
| | | * @param order |
| | | * @param startprice |
| | | * @param endprice |
| | | * @return |
| | | */ |
| | | private void searchPDDGoods(WXMPAcceptData 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,"437032"); |
| | | if (result != null) { |
| | | count = result.getTotalCount(); |
| | | Gson gson = JsonUtil.getApiCommonGson(); |
| | | List<PDDGoodsDetail> goodsList = result.getGoodsList(); |
| | | if (goodsList != null && goodsList.size() > 0) { |
| | | ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), |
| | | acceptData.getVersion(),acceptData.getSystem()); |
| | | |
| | | for (PDDGoodsDetail goods : goodsList) { |
| | | GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertPDDGoods(goods, paramsDTO); |
| | | array.add(gson.toJson(goodsDetailVO)); |
| | | } |
| | | } |
| | | } |
| | | |
| | | data.put("count", count); |
| | | data.put("list", array); |
| | | out.print(JsonUtil.loadTrueResult(data)); |
| | | } |
| | | } |