| | |
| | | import java.util.Collections;
|
| | | import java.util.HashSet;
|
| | | import java.util.List;
|
| | | import java.util.Map;
|
| | | import java.util.Set;
|
| | | import java.util.regex.Matcher;
|
| | | import java.util.regex.Pattern;
|
| | |
|
| | | import javax.annotation.Resource;
|
| | |
|
| | |
| | | import org.springframework.web.bind.annotation.RequestMapping;
|
| | | import org.springframework.web.bind.annotation.RequestMethod;
|
| | | import org.yeshi.utils.JsonUtil;
|
| | | import org.yeshi.utils.taobao.TbImgUtil;
|
| | |
|
| | | import com.google.gson.Gson;
|
| | | import com.google.gson.GsonBuilder;
|
| | |
| | | import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult;
|
| | | import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetail;
|
| | | import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2;
|
| | | import com.yeshi.fanli.log.LogHelper;
|
| | | 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.util.Constant;
|
| | | import com.yeshi.fanli.util.StringUtil;
|
| | | import com.yeshi.fanli.util.ThreadUtil;
|
| | | import com.yeshi.fanli.util.Utils;
|
| | | import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil;
|
| | | import com.yeshi.fanli.util.dataoke.DaTaoKeApiUtil;
|
| | | import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory;
|
| | | 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.brand.TaoBaoShopVO;
|
| | |
| | | @Resource
|
| | | private DaTaoKeGoodsDetailService daTaoKeGoodsDetailService;
|
| | |
|
| | | |
| | | |
| | | /**
|
| | | * 粘贴板信息推荐
|
| | | * |
| | | * @param acceptData
|
| | | * @param url
|
| | | * 商品链接
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "getNewGoodsInfo", method = RequestMethod.POST)
|
| | | public void getNewGoodsInfo(AcceptData acceptData, String text, PrintWriter out) {
|
| | | if (StringUtil.isNullOrEmpty(text)) {
|
| | | out.print(JsonUtil.loadFalseResult("值为空"));
|
| | | return;
|
| | | }
|
| | |
|
| | | if (text.length() > 256) {
|
| | | out.print(JsonUtil.loadFalseResult("值过长"));
|
| | | return;
|
| | | }
|
| | |
|
| | | TaoBaoGoodsBrief tb = null;
|
| | | 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.startsWith("【") && text.contains("】")) {
|
| | | int end = text.indexOf("】");
|
| | | if (end > 2)
|
| | | text = text.substring(1, end);
|
| | | }
|
| | |
|
| | | LogHelper.test("根据粘贴板推荐:" + text);
|
| | |
|
| | | if (text.length() > 80) {
|
| | | out.print(JsonUtil.loadFalseResult("值过长"));
|
| | | return;
|
| | | }
|
| | |
|
| | | SearchFilter sf = new SearchFilter();
|
| | | sf.setKey(text);
|
| | | JSONObject root = new JSONObject();
|
| | |
|
| | | TaoBaoSearchResult result = TaoBaoUtil.search(sf);
|
| | | if (result != null && result.getTaoBaoGoodsBriefs() != null && result.getTaoBaoGoodsBriefs().size() > 0)
|
| | | for (TaoBaoGoodsBrief goods : result.getTaoBaoGoodsBriefs()) {
|
| | | // 是属于淘宝联盟商品
|
| | | if (goods.getTitle().equalsIgnoreCase(text)) {
|
| | | root.put("type", 2);
|
| | | JSONObject data = new JSONObject();
|
| | | data.put("title", goods.getTitle());
|
| | | root.put("data", data);
|
| | | out.print(JsonUtil.loadTrueResult(root));
|
| | | return;
|
| | | }
|
| | | }
|
| | |
|
| | | // 查询大淘客标题
|
| | | List<DaTaoKeDetail> list = daTaoKeGoodsDetailService.listByDtitle(text);
|
| | | if (list != null && list.size() > 0) {
|
| | | root.put("type", 2);
|
| | | JSONObject data = new JSONObject();
|
| | | data.put("title", list.get(0).getdTitle());
|
| | | root.put("data", data);
|
| | | out.print(JsonUtil.loadTrueResult(root));
|
| | | return;
|
| | | }
|
| | |
|
| | | out.print(JsonUtil.loadFalseResult("暂不支持该类型!"));
|
| | | return;
|
| | | }
|
| | |
|
| | | text = matcher.group();
|
| | | if (text.contains("ju.taobao.com") || text.contains(".juhuasuan.com")) {// 聚划算
|
| | | int index = text.indexOf("item_id");
|
| | | if (index < 0) {
|
| | | out.println(JsonUtil.loadFalseResult("暂未找到该商品,请稍后再试!"));
|
| | | return;
|
| | | }
|
| | | text = text.substring(index);
|
| | | int last = text.indexOf("&");
|
| | | String id = "";
|
| | | if (last > 0)
|
| | | id = text.substring(text.indexOf("=") + 1, text.indexOf("&"));
|
| | | else {
|
| | | id = text.substring(text.indexOf("=" + 1));
|
| | | }
|
| | | tb = TaoBaoUtil.isAlimama(id);
|
| | | if (tb == null) {
|
| | | tb = TaoBaoUtil.parsePhoneTmAndTb(id);
|
| | | }
|
| | | } else if (text.contains("http://zmnxbc.com")) { // 手机端天猫APP分享
|
| | | tb = TaoBaoUtil.parsePhoneShareUrlByTM(text);
|
| | | } else if (text.contains("h5.m.taobao") || text.contains("detail.m.tmall") || text.contains("item.taobao")
|
| | | || text.contains("detail.tmall")) { // 手机页面和电脑页面
|
| | | Map<String, String> map = Utils.parseURL(text);
|
| | | String id = "";
|
| | | id = map.get("id").replace("}", "");
|
| | | tb = TaoBaoUtil.isAlimama(id);
|
| | | if (tb == null) {
|
| | | tb = TaoBaoUtil.parsePhoneTmAndTb(id);
|
| | | }
|
| | | } else {
|
| | | tb = TaoBaoUtil.parsePhoneShareUrlByTB(text);
|
| | | }
|
| | |
|
| | | if (tb == null) {
|
| | | out.println(JsonUtil.loadFalseResult("暂未找到该商品,请稍后再试!"));
|
| | | return;
|
| | | }
|
| | | JSONObject data = new JSONObject();
|
| | | JSONObject taoBaoGoodsJSON = new JSONObject();
|
| | | taoBaoGoodsJSON.put("title", tb.getTitle());
|
| | | taoBaoGoodsJSON.put("zkPrice", tb.getZkPrice());
|
| | | taoBaoGoodsJSON.put("auctionId", tb.getAuctionId());
|
| | | taoBaoGoodsJSON.put("url", "http://item.taobao.com/item.htm?id=" + tb.getAuctionId());
|
| | | data.put("taoBaoGoodsBrief", taoBaoGoodsJSON);
|
| | | if (!StringUtil.isNullOrEmpty(tb.getPictUrl())) {
|
| | | if (tb.getImgList() == null)
|
| | | tb.setImgList(new ArrayList<>());
|
| | | tb.getImgList().add(0, TbImgUtil.getTBSize220Img(tb.getPictUrl()));
|
| | | }
|
| | | data.put("tbImgs", tb.getImgList());
|
| | | JSONObject root = new JSONObject();
|
| | | root.put("type", 1);
|
| | | root.put("data", data);
|
| | |
|
| | | out.print(JsonUtil.loadTrueResult(root));
|
| | | }
|
| | | |
| | | |
| | | |
| | | /**
|
| | | * 搜索候选词
|
| | | *
|
| | |
| | | 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) {
|