package com.yeshi.fanli.controller.client; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.annotation.Resource; 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 org.yeshi.utils.taobao.TbImgUtil; import com.yeshi.fanli.entity.accept.AcceptData; 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.service.inter.config.ConfigService; import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService; import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService; import com.yeshi.fanli.service.inter.user.UserInfoService; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.Utils; import com.yeshi.fanli.util.taobao.TaoBaoUtil; import net.sf.json.JSONObject; @Controller @RequestMapping("api/v1/dynamic") public class DynamicRecommendController { @Resource private HongBaoManageService hongBaoManageService; @Resource private UserInfoService userInfoService; @Resource private ConfigService configService; @Resource private TaoBaoUnionConfigService taoBaoUnionConfigService; /** * 获取商品信息 * * @param acceptData * @param url * 商品链接 * @param out */ @RequestMapping(value = "getGoodsInfo", method = RequestMethod.POST) public void getGoodsInfo(AcceptData acceptData, String url, PrintWriter out) { 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(url); if (!matcher.find()) {// 不包含链接 out.print(JsonUtil.loadFalseResult("暂不支持该类型!")); return; } url = matcher.group(); if (url.contains("ju.taobao.com") || url.contains(".juhuasuan.com")) {// 聚划算 int index = url.indexOf("item_id"); if (index < 0) { out.println(JsonUtil.loadFalseResult("暂未找到该商品,请稍后再试!")); return; } url = url.substring(index); int last = url.indexOf("&"); String id = ""; if (last > 0) id = url.substring(url.indexOf("=") + 1, url.indexOf("&")); else { id = url.substring(url.indexOf("=" + 1)); } tb = TaoBaoUtil.isAlimama(id); if (tb == null) { tb = TaoBaoUtil.parsePhoneTmAndTb(id); } } else if (url.contains("http://zmnxbc.com")) { // 手机端天猫APP分享 tb = TaoBaoUtil.parsePhoneShareUrlByTM(url); } /* * else if(url.contains("c.b1yt.com") || url.contains("m.qtilg.com") * || url.contains("z.icyad.com")){ //手机端淘宝和一淘APP分享 * tb=TaoBaoUtil.parsePhoneShareUrlByTB(url); } */else if (url.contains("h5.m.taobao") || url.contains("detail.m.tmall") || url.contains("item.taobao") || url.contains("detail.tmall")) { // 手机页面和电脑页面 Map map = Utils.parseURL(url); String id = ""; id = map.get("id").replace("}", ""); tb = TaoBaoUtil.isAlimama(id); if (tb == null) { tb = TaoBaoUtil.parsePhoneTmAndTb(id); } } else { tb = TaoBaoUtil.parsePhoneShareUrlByTB(url); } 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); data.put("tbImgs", tb.getImgList()); out.print(JsonUtil.loadTrueResult(data)); } /** * 粘贴板信息推荐 * * @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.length() > 50) { 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; } } 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 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)); } }