| | |
| | | import javax.xml.parsers.DocumentBuilderFactory; |
| | | |
| | | import com.yeshi.fanli.entity.SystemEnum; |
| | | import com.yeshi.fanli.util.*; |
| | | import org.apache.commons.httpclient.HttpClient; |
| | | import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager; |
| | | import org.apache.commons.httpclient.methods.GetMethod; |
| | |
| | | import org.jsoup.nodes.Element; |
| | | import org.jsoup.select.Elements; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.data.mongodb.core.query.Criteria; |
| | | import org.springframework.stereotype.Component; |
| | | import org.w3c.dom.NamedNodeMap; |
| | | import org.w3c.dom.NodeList; |
| | |
| | | import com.yeshi.fanli.service.inter.goods.TaoBaoLinkService; |
| | | import com.yeshi.fanli.service.inter.order.config.HongBaoManageService; |
| | | import com.yeshi.common.entity.PageEntity; |
| | | import com.yeshi.fanli.util.AESUtil; |
| | | import com.yeshi.fanli.util.Constant; |
| | | import org.yeshi.utils.MoneyBigDecimalUtil; |
| | | import com.yeshi.fanli.util.StringUtil; |
| | | import com.yeshi.fanli.util.TaoBaoConstant; |
| | | import com.yeshi.fanli.util.TaoBaoHttpUtil; |
| | | import org.yeshi.utils.TimeUtil; |
| | | import com.yeshi.common.vo.ClientTextStyleVO; |
| | | |
| | |
| | | String id = st.replace("id=", "").trim(); |
| | | TaoBaoGoodsBrief tb = null; |
| | | try { |
| | | tb = TaoKeApiUtil.searchGoodsDetail(Long.parseLong(id)); |
| | | tb = TaoKeApiUtil.searchGoodsDetail(id); |
| | | } catch (TaobaoGoodsDownException e) { |
| | | e.printStackTrace(); |
| | | } |
| | |
| | | for (String c : filter.getCateIds().split(",")) |
| | | cateList.add(Long.parseLong(c)); |
| | | } |
| | | return TaoKeApiUtil.searchWuLiao(filter, specialId, relationId); |
| | | return TaoKeApiUtil.searchWuLiaoNew(filter, specialId, relationId); |
| | | } |
| | | |
| | | /** |
| | |
| | | String id = st.replace("id=", "").trim(); |
| | | TaoBaoGoodsBrief tb = null; |
| | | try { |
| | | tb = TaoKeApiUtil.searchGoodsDetail(Long.parseLong(id)); |
| | | tb = TaoKeApiUtil.searchGoodsDetail(id); |
| | | } catch (TaobaoGoodsDownException e) { |
| | | e.printStackTrace(); |
| | | } |
| | |
| | | } |
| | | |
| | | if (1 > 0) |
| | | return TaoKeApiUtil.searchWuLiao(filter, null, null); |
| | | return TaoKeApiUtil.searchWuLiaoNew(filter, null, null); |
| | | |
| | | Map<String, String> params = new HashMap<String, String>(); |
| | | String key = filter.getKey(); |
| | |
| | | * @param pid |
| | | * @return |
| | | */ |
| | | public static TaoBaoLink getTbLink(long auctionId, String pid, TaoBaoUnionConfig config) { |
| | | public static TaoBaoLink getTbLink(String auctionId, String pid, TaoBaoUnionConfig config) { |
| | | TaoBaoLink tbk = null; |
| | | String cookie = TaoBaoOrderUtil.getTaoBaoCookie(config.getAccount()); |
| | | String adzoneid = pid.split("_")[3]; |
| | |
| | | * @param pid |
| | | * @return |
| | | */ |
| | | public static TaoBaoLink getTbLinkForShare(long auctionId, String pid, TaoBaoUnionConfig config) { |
| | | public static TaoBaoLink getTbLinkForShare(String auctionId, String pid, TaoBaoUnionConfig config) { |
| | | TaoBaoLink tbk = null; |
| | | String cookie = TaoBaoOrderUtil.getTaoBaoCookie(config.getAccount()); |
| | | selfAdzoneCreate(pid, cookie); |
| | |
| | | * @param pid |
| | | * @return |
| | | */ |
| | | public static TaoBaoLink getTbLinkWithCoupon(String picture, String title, String activityId, long auctionId, |
| | | public static TaoBaoLink getTbLinkWithCoupon(String picture, String title, String activityId, String auctionId, |
| | | String pid) { |
| | | activityId = StringUtil.isNullOrEmpty(activityId) ? "da75a5880d4c41ab88a82256b069a38c" : activityId; |
| | | String url = String.format("https://uland.taobao.com/coupon/edetail?activityId=%s&pid=%s&itemId=%s", activityId, |
| | |
| | | * 获取未参与推广的淘宝商品详情 @Title: getTaoBaoGoodsBrief @Description: @param |
| | | * id @return TaoBaoGoodsBrief 包含(标题与图片) @throws |
| | | */ |
| | | public static TaoBaoGoodsBrief getTaoBaoGoodsBriefNotInPub(Long id) { |
| | | public static TaoBaoGoodsBrief getTaoBaoGoodsBriefNotInPub(String id) { |
| | | TaoBaoGoodsBrief tb = TaoBaoUtil.getTmallGoodsInfo(id + ""); |
| | | return tb; |
| | | } |
| | |
| | | return new ArrayList<>(); |
| | | TaoBaoGoodsBrief taoBaoGoodsBrief = null; |
| | | try { |
| | | taoBaoGoodsBrief = TaoKeApiUtil.getSimpleGoodsInfo(Long.parseLong(auctionId)); |
| | | taoBaoGoodsBrief = TaoKeApiUtil.getSimpleGoodsInfo(auctionId); |
| | | } catch (TaobaoGoodsDownException e) { |
| | | e.printStackTrace(); |
| | | } |
| | |
| | | return null; |
| | | TaoBaoGoodsBrief tb = null; |
| | | try { |
| | | tb = TaoKeApiUtil.getSimpleGoodsInfo(Long.parseLong(auctionId)); |
| | | tb = TaoKeApiUtil.getSimpleGoodsInfo(auctionId); |
| | | } catch (TaobaoGoodsDownException e) { |
| | | e.printStackTrace(); |
| | | } |
| | |
| | | taoBaoGoodsBriefExtra.setTaoBaoHongBaoInfo(taobaoHongbaoInfo); |
| | | taoBaoGoodsBriefExtra.setTaoBaoQuanInfo(taobaoQuanInfo); |
| | | |
| | | taoBaoGoodsBriefExtra.setAuctionId(Long.parseLong(taoBaoCoupon.getAuctionId())); |
| | | taoBaoGoodsBriefExtra.setAuctionId(taoBaoCoupon.getAuctionId()); |
| | | taoBaoGoodsBriefExtra.setAuctionUrl(taoBaoCoupon.getAuctionUrl()); |
| | | taoBaoGoodsBriefExtra.setBaoyou(true); |
| | | taoBaoGoodsBriefExtra.setBiz30day(taoBaoCoupon.getBiz30day()); |
| | |
| | | imgStrs.add(attr); |
| | | } |
| | | taobao = new TaoBaoGoodsBrief(); |
| | | taobao.setAuctionId(Long.parseLong(auctionId)); |
| | | taobao.setAuctionId(auctionId); |
| | | taobao.setTitle(title); |
| | | taobao.setZkPrice(new BigDecimal(price)); |
| | | taobao.setImgList(imgStrs); |
| | |
| | | taoBaoGoodsBrief.setTitle(title); |
| | | taoBaoGoodsBrief.setImgList(imgs); |
| | | taoBaoGoodsBrief.setPictUrl(imgs.get(0)); |
| | | taoBaoGoodsBrief.setAuctionId(Long.parseLong(auctionId)); |
| | | taoBaoGoodsBrief.setAuctionId(auctionId); |
| | | taoBaoGoodsBrief.setUserType(1); |
| | | } else { |
| | | Connection connect2 = Jsoup.connect(String.format(TB_URL, auctionId)); |
| | |
| | | taoBaoGoodsBrief.setPictUrl(imgs.get(0)); |
| | | taoBaoGoodsBrief.setImgList(imgs); |
| | | taoBaoGoodsBrief.setZkPrice(new BigDecimal(price)); |
| | | taoBaoGoodsBrief.setAuctionId(Long.parseLong(auctionId)); |
| | | taoBaoGoodsBrief.setAuctionId(auctionId); |
| | | taoBaoGoodsBrief.setUserType(0); |
| | | } |
| | | } catch (Exception e) { |
| | |
| | | * @param goodsBrief |
| | | * @return |
| | | */ |
| | | public static BigDecimal getAfterUseCouplePrice(TaoBaoGoodsBrief goodsBrief) { |
| | | public static BigDecimal getCouponPrice(TaoBaoGoodsBrief goodsBrief) { |
| | | |
| | | if (StringUtil.isNullOrEmpty(goodsBrief.getCouponInfo()) || "无".equals(goodsBrief.getCouponInfo())) { |
| | | return goodsBrief.getZkPrice(); |
| | |
| | | /** |
| | | * 获取图文详情 |
| | | * |
| | | * @param auctionId |
| | | * @param id |
| | | */ |
| | | public static List<String> getGoodsTextAndImageDetails(Long id) { |
| | | if (id == null) { |
| | |
| | | return taoBaoProvinceList; |
| | | } |
| | | |
| | | public static List<ImageInfo> getTBDetailImageWithSize(Long auctionId) { |
| | | public static List<ImageInfo> getTBDetailImageWithSize(String auctionId) { |
| | | |
| | | List<ImageInfo> imgList = new ArrayList<>(); |
| | | |
| | |
| | | * @return |
| | | */ |
| | | |
| | | public static List<ImageInfo> getTBDetailImageWithSizev2(Long auctionId, ProxyIP ip) { |
| | | public static List<ImageInfo> getTBDetailImageWithSizev2(String auctionId, ProxyIP ip) { |
| | | List<ImageInfo> imgList = new ArrayList<>(); |
| | | try { |
| | | Map<String, String> headers = new HashMap<>(); |
| | |
| | | * @param adzoneId |
| | | * @return |
| | | */ |
| | | public static String getBaiChuanConvertLink(Long auctionId, String appKey, String adzoneId) { |
| | | public static String getBaiChuanConvertLink(String auctionId, String appKey, String adzoneId) { |
| | | String url = "http://acs4baichuan.m.taobao.com/gw-open/mtop.taobao.tbk.sdk.item.convert/1.0/"; |
| | | JSONObject params = new JSONObject(); |
| | | params.put("mcid", "tunion4android@862977040115210"); |
| | |
| | | */ |
| | | public static TaoBaoGoodsBrief convert(CommonGoods commonGoods) { |
| | | TaoBaoGoodsBrief taoBaoGoods = new TaoBaoGoodsBrief(); |
| | | taoBaoGoods.setAuctionId(commonGoods.getGoodsId()); |
| | | if(!StringUtil.isNullOrEmpty(commonGoods.getGoodsSign())) { |
| | | taoBaoGoods.setAuctionId(commonGoods.getGoodsSign()); |
| | | }else{ |
| | | taoBaoGoods.setAuctionId(commonGoods.getGoodsId()); |
| | | } |
| | | taoBaoGoods.setBiz30day(commonGoods.getSales()); |
| | | taoBaoGoods.setCouponAmount(commonGoods.getCouponAmount()); |
| | | taoBaoGoods.setCouponInfo(commonGoods.getCouponInfo()); |
| | |
| | | taoBaoGoods.setTkRate(commonGoods.getRate()); |
| | | taoBaoGoods.setTkCommFee(new BigDecimal("0")); |
| | | taoBaoGoods.setState(commonGoods.getState()); |
| | | taoBaoGoods.setCreatetime(commonGoods.getCreateTime()); |
| | | return taoBaoGoods; |
| | | } |
| | | |
| | |
| | | * @param actionId |
| | | * @return |
| | | */ |
| | | public static TaoBaoGoodsBrief getSimpleGoodsBrief(Long actionId) { |
| | | public static TaoBaoGoodsBrief getSimpleGoodsBrief(String actionId) { |
| | | JSONObject data = new JSONObject(); |
| | | data.put("itemNumId", actionId + ""); |
| | | |
| | |
| | | JSONObject seller = data.optJSONObject("seller"); |
| | | TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief(); |
| | | goods.setTitle(item.optString("title")); |
| | | goods.setAuctionId(item.optLong("itemId")); |
| | | goods.setAuctionId(item.optString("itemId")); |
| | | goods.setTitle(item.optString("title")); |
| | | if (item.optJSONArray("images") != null && item.optJSONArray("images").size() > 0) { |
| | | String picture = item.optJSONArray("images").optString(0); |
| | |
| | | * @param auctionId |
| | | * @return |
| | | */ |
| | | public static TaoBaoShop getTaoBaoShopDetailByAuctionId(Long auctionId) { |
| | | public static TaoBaoShop getTaoBaoShopDetailByAuctionId(String auctionId) { |
| | | JSONObject data = new JSONObject(); |
| | | data.put("itemNumId", auctionId + ""); |
| | | |
| | |
| | | /** |
| | | * 是否可以加入淘礼金的预选商品库 |
| | | * |
| | | * @param v2 |
| | | * @param goods |
| | | * @return |
| | | */ |
| | | public static boolean canAddToTLJBuyGoods(TaoBaoGoodsBrief goods) { |
| | |
| | | return false; |
| | | |
| | | // 券后价不能大于150 |
| | | if (getAfterUseCouplePrice(goods).compareTo(new BigDecimal(150)) > 0) |
| | | if (getCouponPrice(goods).compareTo(new BigDecimal(150)) > 0) |
| | | return false; |
| | | |
| | | return true; |
| | |
| | | * @return |
| | | */ |
| | | public static String concatRelationId(String url, String relationId) { |
| | | if (StringUtil.isNullOrEmpty(url)) { |
| | | return url; |
| | | } |
| | | if (StringUtil.isNullOrEmpty(relationId)) |
| | | return url; |
| | | return url + "&relationId=" + relationId; |
| | | if (!url.contains("&relationId=")) |
| | | if(url.contains("?")) { |
| | | return url + "&relationId=" + relationId; |
| | | }else{ |
| | | return url + "?relationId=" + relationId; |
| | | } |
| | | else |
| | | return url; |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | /** |
| | | * 获取淘宝授权链接 |
| | | * |
| | | * @param uid |
| | | * @param source |
| | | * @return |
| | |
| | | "http://api.flqapp.com/fanli/client/v1/auth/callback/tb", uid, source); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 是否为淘宝系的链接 |
| | | * |
| | | * @param link |
| | | * @return |
| | | */ |
| | | public static boolean isTaoBaoLink(String link) { |
| | | TaoBaoGoodsBrief tb = null; |
| | | String auctionId = null; |
| | | if (link.startsWith("https://a.m.taobao.com/i"))// 淘宝账号未登录状态 |
| | | { |
| | | return true; |
| | | } else if (link.contains("ju.taobao.com") || link.contains(".juhuasuan.com")) {// 聚划算 |
| | | return true; |
| | | } else if (link.contains("http://zmnxbc.com")) { // 手机端天猫APP分享 |
| | | return true; |
| | | } else if (link.contains("m.tb.cn") || link.contains("h5.m.taobao") || link.contains("detail.m.tmall") || link.contains("item.taobao") |
| | | || link.contains("detail.tmall")) { // 手机页面和电脑页面 |
| | | return true; |
| | | } else if (link.contains("//s.click.taobao.com")) { |
| | | return true; |
| | | } |
| | | |
| | | return false; |
| | | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 是否有新版淘口令 |
| | | * |
| | | * @param text |
| | | * @return |
| | | */ |
| | | public static boolean isHaveNewVersionTaoBaoToken(String text) { |
| | | if (text == null) |
| | | return false; |
| | | |
| | | int count = 0; |
| | | for (int i = 0; i < text.length(); i++) { |
| | | //大小写字母+数字 |
| | | if ((text.charAt(i) >= 65 && text.charAt(i) <= 90) || (text.charAt(i) >= 97 && text.charAt(i) <= 122) || (text.charAt(i) >= 48 && text.charAt(i) <= 57)) { |
| | | count++; |
| | | if (count >= 10) |
| | | return true; |
| | | } else { |
| | | count = 0; |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * @return boolean |
| | | * @author hxh |
| | | * @description 判断淘宝商品ID是否相等 |
| | | * @date 14:55 2022/8/24 |
| | | * @param: auctionId1 |
| | | * @param: auctionId2 |
| | | **/ |
| | | public static boolean isEqual(String auctionId1, String auctionId2) { |
| | | if (auctionId1 == null || auctionId2 == null) { |
| | | return false; |
| | | } |
| | | |
| | | if (auctionId1.indexOf("-") > 0 && auctionId2.indexOf("-") > 0) { |
| | | return auctionId1.split("-")[1].equals(auctionId2.split("-")[1]); |
| | | } |
| | | return auctionId1.equals(auctionId2); |
| | | } |
| | | |
| | | /** |
| | | * @return java.lang.String |
| | | * @author hxh |
| | | * @description 获取商品ID的后半段 |
| | | * @date 15:20 2022/8/24 |
| | | * @param: auctionId |
| | | **/ |
| | | public static String getAuctionId(String auctionId) { |
| | | if (auctionId == null) |
| | | return auctionId; |
| | | if (auctionId.indexOf("-") > 0) { |
| | | return auctionId.split("-")[1]; |
| | | } else { |
| | | return auctionId; |
| | | } |
| | | |
| | | } |
| | | |
| | | /** |
| | | * @return org.springframework.data.mongodb.core.query.Criteria |
| | | * @author hxh |
| | | * @description 获取mongodb商品ID相同的条件 |
| | | * @date 16:05 2022/8/24 |
| | | * @param: key |
| | | * @param: auctionId |
| | | **/ |
| | | public static Criteria getAuctionIdEqualCriteria(String key, String auctionId) { |
| | | if (!isNewAuctionId(auctionId)) { |
| | | return Criteria.where(key).is(auctionId); |
| | | } else { |
| | | return Criteria.where(key).regex("-" + getAuctionId(auctionId)); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * @return boolean |
| | | * @author hxh |
| | | * @description 是否为新的商品ID |
| | | * @date 15:39 2022/8/24 |
| | | * @param: auctionId |
| | | **/ |
| | | public static boolean isNewAuctionId(String auctionId) { |
| | | if (auctionId != null && auctionId.indexOf("-") > 0) |
| | | return true; |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * @return java.lang.String |
| | | * @author hxh |
| | | * @description 获取淘宝的商品标题 |
| | | * @date 11:36 2022/9/9 |
| | | **/ |
| | | public static String getGoodsTitleFromTokenText(String text) { |
| | | String reg = "「.*」"; |
| | | Pattern p = Pattern.compile(reg); |
| | | Matcher matcher = p.matcher(text); |
| | | if (matcher.find()) { |
| | | String title = matcher.group(); |
| | | if(title!=null&&title.length()>0) { |
| | | return title.replace("「","").replace("」",""); |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | public static void main(String[] args) { |
| | | // String reg = "「.*」"; |
| | | // Pattern p = Pattern.compile(reg); |
| | | // Matcher matcher = p.matcher("【淘宝】https://m.tb.cn/h.Ub3d7Kb?tk=g2Az2EmdcIX CZ3457 「造梦【蔷薇少女】复古碎花牛奶绒羊羔绒毛毯秋冬保暖休闲毯沙发毯」\n" + |
| | | // "点击链接直接打开"); |
| | | // if (matcher.find()) { |
| | | // String title = matcher.group(); |
| | | // System.out.println(title); |
| | | // } |
| | | String relationId = "1222"; |
| | | String url="http://123id=123"; |
| | | if(url.contains("?")) { |
| | | System.out.println(url + "&relationId=" + relationId); |
| | | }else{ |
| | | System.out.println(url + "?relationId=" + relationId); |
| | | } |
| | | } |
| | | |
| | | } |