admin
2024-04-26 5e7b0ed4a154ad067cbcf4aa1a1c7cce32f9864c
唯品会链接解析升级
5个文件已修改
177 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/job/order/jd/UpdateJDOrderJob.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/jd/JDApiUtil.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeApiUtil.java 98 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/vipshop/DingDanXiaApiUtil.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/vipshop/VipShopUtil.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/job/order/jd/UpdateJDOrderJob.java
@@ -92,23 +92,27 @@
     */
    @XxlJob("updateJDOrderHandler")
    public ReturnT<String> updateJDSoonOrder(String param) throws Exception {
        if ("1".equalsIgnoreCase(param)) {// 更新本小时内的单
            LogHelper.job("开始爬取京东订单");
            long now = System.currentTimeMillis();
        try {
            if ("1".equalsIgnoreCase(param)) {// 更新本小时内的单
                LogHelper.job("开始爬取京东订单");
                long now = System.currentTimeMillis();
            JDOrderResult result = JDApiUtil.getOrderList(1, 200, new Date(now), JDApiUtil.ORDER_TYPE_CREATETIME);
            if (result != null && result.getOrderList() != null)
                saveJDOrders(result.getOrderList());
            // 查询上个小时的
            result = JDApiUtil.getOrderList(1, 200, new Date(now - 1000 * 60 * 60L), JDApiUtil.ORDER_TYPE_CREATETIME);
            if (result != null && result.getOrderList() != null)
                saveJDOrders(result.getOrderList());
        } else if ("1hour".equalsIgnoreCase(param)) {// 更新1小时内的订单
            updateUpdateOrder();
        } else if ("1day".equalsIgnoreCase(param)) {// 更新1天内的订单
            updateLatestDayOrder(new Date(System.currentTimeMillis()));
        } else if ("3day".equalsIgnoreCase(param)) {// 更新最近3天更新的数据
            updateLatest3DayOrder();
                JDOrderResult result = JDApiUtil.getOrderList(1, 200, new Date(now), JDApiUtil.ORDER_TYPE_CREATETIME);
                if (result != null && result.getOrderList() != null)
                    saveJDOrders(result.getOrderList());
                // 查询上个小时的
                result = JDApiUtil.getOrderList(1, 200, new Date(now - 1000 * 60 * 60L), JDApiUtil.ORDER_TYPE_CREATETIME);
                if (result != null && result.getOrderList() != null)
                    saveJDOrders(result.getOrderList());
            } else if ("1hour".equalsIgnoreCase(param)) {// 更新1小时内的订单
                updateUpdateOrder();
            } else if ("1day".equalsIgnoreCase(param)) {// 更新1天内的订单
                updateLatestDayOrder(new Date(System.currentTimeMillis()));
            } else if ("3day".equalsIgnoreCase(param)) {// 更新最近3天更新的数据
                updateLatest3DayOrder();
            }
        }catch(Exception e){
            e.printStackTrace();
        }
        return ReturnT.SUCCESS;
fanli/src/main/java/com/yeshi/fanli/util/jd/JDApiUtil.java
@@ -37,12 +37,8 @@
    public static String APP_ID = "1864778416";
    public static String APP_KEY = "388f5133d13a5ea290aa5c44f3ebcc00";
    public static String SECRET_KEY = "e22367fc866746d98b50d47b4c521781";
    public static String SECRET_KEY = "85e7e72110564efab6e13d302a4419da";
    private static String SERVER_URL = "https://router.jd.com/api";
//    public static long POSITION_FANLI = 1869704794L;
//    public static long POSITION_SHARE = 1869542990L;
//    public static long POSITION_COUPON = 1869704796L;
    // 订单查询类型
    public static int ORDER_TYPE_CREATETIME = 1;// 下单时间
@@ -964,8 +960,16 @@
    }
    public static void main(String[] args) {
        List<Long> ids=new ArrayList<>();
        ids.add(100067115976L);
//        JDFilter filter=new JDFilter();
//        filter.setKeyword("花卉");
//        filter.setPageIndex(1);
//        filter.setPageSize(20);
//        queryByKey(filter);
        long now = System.currentTimeMillis();
        JDOrderResult result = JDApiUtil.getOrderList(1, 200, new Date(now), JDApiUtil.ORDER_TYPE_CREATETIME);
        System.out.printf(result.toString());
    }
}
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeApiUtil.java
@@ -36,79 +36,6 @@
//淘宝客API接口
public class TaoKeApiUtil {
    // 解析券的内容
    private static TaoBaoSearchResult parseCoupleContent(String content) {
        TaoBaoSearchResult result = new TaoBaoSearchResult();
        JSONObject root = JSONObject.fromObject(content);
        root = root.optJSONObject("tbk_dg_item_coupon_get_response");
        if (root.optJSONObject("results") == null)
            return null;
        JSONArray array = root.optJSONObject("results").optJSONArray("tbk_coupon");
        if (array != null) {
            List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
            for (int i = 0; i < array.size(); i++) {
                JSONObject item = array.optJSONObject(i);
                TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief();
                goods.setPictUrl(item.optString("pict_url"));
                goods.setAuctionId(item.optString("num_iid"));
                goods.setAuctionUrl(item.optString("item_url"));
                goods.setBiz30day(item.optInt("volume"));
                goods.setCouponInfo(item.optString("coupon_info"));
                List<BigDecimal> quanInfo = TaoBaoCouponUtil.getCouponInfo(goods.getCouponInfo());
                goods.setCouponAmount(quanInfo.get(1));
                goods.setCouponEffectiveEndTime(item.optString("coupon_end_time"));
                goods.setCouponEffectiveStartTime(item.optString("coupon_start_time"));
                goods.setCouponStartFee(quanInfo.get(0));
                goods.setCouponLeftCount(item.optInt("coupon_remain_count"));
                goods.setCouponLink(item.optString("coupon_click_url"));
                goods.setCouponTotalCount(item.optInt("coupon_total_count"));
                goods.setDayLeft(-1);
                if (item.optJSONObject("small_images") != null) {
                    JSONArray imgArray = item.optJSONObject("small_images").optJSONArray("string");
                    if (imgArray != null) {
                        List<String> imgList = new ArrayList<>();
                        for (int n = 0; n < imgArray.size(); n++) {
                            imgList.add(imgArray.optString(n));
                        }
                        goods.setImgList(imgList);
                    }
                }
                goods.setSellerId(item.optLong("seller_id"));
                goods.setShopTitle(item.optString("shop_title"));
                goods.setTitle(item.optString("title"));
                goods.setTkRate(new BigDecimal(item.optString("commission_rate")));
                goods.setTotalNum(1000);
                goods.setUserType(item.optInt("user_type"));
                goods.setUserTypeName("");
                goods.setZkPrice(new BigDecimal(item.optString("zk_final_price")));
                if (goods.getZkPrice().compareTo(goods.getCouponStartFee()) >= 0
                        && goods.getZkPrice().compareTo(goods.getCouponAmount()) > 0) {
                    BigDecimal finalPrice = goods.getZkPrice().subtract(goods.getCouponAmount());
                    goods.setTkCommFee(finalPrice.multiply(goods.getTkRate()).divide(new BigDecimal(100)));
                } else
                    goods.setTkCommFee(new BigDecimal(0));
                goodsList.add(goods);
            }
            result.setTaoBaoGoodsBriefs(goodsList);
            int totalCount = 1000;// root.optInt("total_results");
            PageEntity pe = new PageEntity(0, 0, totalCount);
            result.setPageEntity(pe);
        }
        result.setNavList(new ArrayList<>());
        TaoBaoHead taoBaoHead = new TaoBaoHead();
        taoBaoHead.setDocsfound((int) result.getPageEntity().getTotalCount());
        result.setTaoBaoHead(taoBaoHead);
        return result;
    }
    /**
     * 获取商品详情,简版
     *
@@ -188,7 +115,11 @@
        TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief();
        goods.setAuctionId(item.optString("num_iid"));
        goods.setAuctionUrl(item.optString("item_url"));
        goods.setBiz30day(item.optInt("volume"));
        if(item.containsKey("annual_vol")){
            goods.setBiz30day(item.optInt("annual_vol")/12);
        }else {
            goods.setBiz30day(item.optInt("volume"));
        }
        if (item.optJSONObject("small_images") != null) {
            JSONArray imgArray = item.optJSONObject("small_images").optJSONArray("string");
            if (imgArray != null) {
@@ -1206,7 +1137,11 @@
        goods.setAuctionId(item.optString("num_iid"));
        goods.setAuctionUrl("https:" + item.optString("url"));
        goods.setBiz30day(item.optInt("volume"));
        if(item.containsKey("annual_vol")){
            goods.setBiz30day(item.optInt("annual_vol")/100);
        }else {
            goods.setBiz30day(item.optInt("volume"));
        }
        goods.setCouponInfo(item.optString("coupon_info"));
        if (goods.getCouponInfo() != null)
@@ -1308,7 +1243,12 @@
        goods.setAuctionId(item.optString("item_id"));
        goods.setAuctionUrl("https:" + item.optString("url"));
        goods.setBiz30day(basicInfo.optInt("volume"));
        if(basicInfo.containsKey("annual_vol")){
            goods.setBiz30day(basicInfo.optInt("annual_vol")/12);
        }else {
            goods.setBiz30day(basicInfo.optInt("volume"));
        }
        if(pricePromotionInfo.optJSONObject("final_promotion_path_list")!=null&&pricePromotionInfo.optJSONObject("final_promotion_path_list").optJSONArray("final_promotion_path_map_data").size()>0) {
            JSONArray array = pricePromotionInfo.optJSONObject("final_promotion_path_list").optJSONArray("final_promotion_path_map_data");
            JSONObject couponInfo = array.optJSONObject(0);
@@ -2137,7 +2077,11 @@
        goods.setPictUrl(TbImgUtil.getTBSize320Img("https:" + item.optString("pict_url")));
        goods.setAuctionId(item.optString("item_id"));
        goods.setAuctionUrl("https://item.taobao.com/item.htm?id=" + goods.getAuctionId());
        goods.setBiz30day(item.optInt("volume"));
        if(item.containsKey("annual_vol")){
            goods.setBiz30day(item.optInt("annual_vol")/12);
        }else {
            goods.setBiz30day(item.optInt("volume"));
        }
        if (!StringUtil.isNullOrEmpty(item.optString("coupon_amount"))) {
            goods.setCouponEffectiveEndTime(TimeUtil.getGernalTime(item.optLong("coupon_end_time"), "yyyy-MM-dd"));
            goods.setCouponEffectiveStartTime(TimeUtil.getGernalTime(item.optLong("coupon_start_time"), "yyyy-MM-dd"));
fanli/src/main/java/com/yeshi/fanli/util/vipshop/DingDanXiaApiUtil.java
@@ -137,6 +137,24 @@
        return null;
    }
    /**
     * @author hxh
     * @description 从链接中解析商品ID
     * @date 17:36 2024/4/26
     * @param: link
     * @return java.lang.String
     **/
    public static String parseGoodsIdFromLink(String link){
        String url = "http://api.tbk.dingdanxia.com/vip/viplink_check?apikey=" + API_KEY;
        url += "&url=" + URLEncoder.encode(link);
        String result = HttpUtil.get(url);
       JSONObject resultJSON =  JSONObject.fromObject(result);
       if(resultJSON.optInt("code")==200){
           return resultJSON.optJSONObject("data").optString("goodsId");
       }
       return null;
    }
    //获取accesstoken的信息
    public static String getAcessTokenInfo(String code, String state) {
@@ -162,8 +180,8 @@
//        String result = getAcessTokenInfo("576a51ae7b9b4db1bbfc921cf381ac0c", "1234");
//        System.out.println(result);
        VipShopOrder order = getOrderDetail("23090254293903");
        System.out.println(order);
//        VipShopOrder order = getOrderDetail("23090254293903");
        System.out.println(parseGoodsIdFromLink("https://t.vip.com/8F39raFxwN7"));
    }
}
fanli/src/main/java/com/yeshi/fanli/util/vipshop/VipShopUtil.java
@@ -116,7 +116,8 @@
                        }
                    }
                }
            // 通过订单侠接口解析
            return  DingDanXiaApiUtil.parseGoodsIdFromLink(url);
            }
        } catch (Exception e) {
        }