From c6f32fd5fd0cf1cf0758765a697c9e9ad5bbba13 Mon Sep 17 00:00:00 2001 From: yujian <yujian@123.com> Date: 星期二, 30 七月 2019 17:30:46 +0800 Subject: [PATCH] 分享bug --- fanli/src/main/java/com/yeshi/fanli/util/jd/JDApiUtil.java | 179 +++++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 112 insertions(+), 67 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/util/jd/JDApiUtil.java b/fanli/src/main/java/com/yeshi/fanli/util/jd/JDApiUtil.java index dbdaf48..14aae75 100644 --- a/fanli/src/main/java/com/yeshi/fanli/util/jd/JDApiUtil.java +++ b/fanli/src/main/java/com/yeshi/fanli/util/jd/JDApiUtil.java @@ -13,6 +13,7 @@ import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.PostMethod; +import org.yeshi.utils.HttpUtil; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; @@ -42,6 +43,7 @@ public static Long POSITION_FANLI = 1834339426L; public static Long POSITION_SHARE = 1834289924L; + public static Long POSITION_COUPON = 1859510742L; // 璁㈠崟鏌ヨ绫诲瀷 public static int ORDER_TYPE_CREATETIME = 1;// 涓嬪崟鏃堕棿 @@ -167,10 +169,31 @@ root.put("promotionCodeReq", json); String result = baseRequest("jd.union.open.promotion.common.get", null, root); + JSONObject resultJson = JSONObject.fromObject(result); result = resultJson.optJSONObject("jd_union_open_promotion_common_get_response").optString("result"); + if (result == null) { + return null; + } + resultJson = JSONObject.fromObject(result); return resultJson.optJSONObject("data").optString("clickURL"); + } + + /** + * 杞摼鎺�-鐭繛鎺� + * @param materialId + * @param couponUrl + * @param positionId + * @param ext1 + * @return + */ + public static String convertShortLink(String materialId, String couponUrl, String positionId, String ext1) { + String url = convertLink(materialId, couponUrl, positionId, ext1); + if (!StringUtil.isNullOrEmpty(url)) { + url = HttpUtil.getShortLink(url); + } + return url; } @@ -300,6 +323,20 @@ private static JDGoods parseJDGoods(JSONObject json) { JDGoods goods = new JDGoods(); + + // 浣i噾淇℃伅 + Object commission = json.get("commissionInfo"); + JSONObject commissionJson = JSONObject.fromObject(commission); + BigDecimal commissionShare = new BigDecimal(commissionJson.optString("commissionShare")); + if (commissionShare.compareTo(new BigDecimal(0)) > 0) { + JDCommissionInfo commissionInfo = new JDCommissionInfo(); + commissionInfo.setCommission(new BigDecimal(commissionJson.optString("commission"))); + commissionInfo.setCommissionShare(commissionShare); + goods.setCommissionInfo(commissionInfo); + } else { + return null; + } + goods.setComments(json.optLong("comments")); goods.setBrandCode(json.optString("brandCode")); goods.setBrandName(json.optString("brandName")); @@ -315,8 +352,7 @@ // 浠锋牸淇℃伅 Object priceInfo = json.get("priceInfo"); JSONObject priceInfoJson = JSONObject.fromObject(priceInfo); - BigDecimal price = new BigDecimal(priceInfoJson.optString("price")); - goods.setPrice(price); + goods.setPrice(new BigDecimal(priceInfoJson.optString("price"))); // 搴楅摵淇℃伅 Object shopInfo = json.get("shopInfo"); @@ -340,61 +376,6 @@ goods.setCategoryInfo(categoryInfo); - // 浣i噾淇℃伅 - Object commission = json.get("commissionInfo"); - JSONObject commissionJson = JSONObject.fromObject(commission); - JDCommissionInfo commissionInfo = new JDCommissionInfo(); - commissionInfo.setCommission(new BigDecimal(commissionJson.optString("commission"))); - commissionInfo.setCommissionShare(new BigDecimal(commissionJson.optString("commissionShare"))); - goods.setCommissionInfo(commissionInfo); - - - // 鍒镐俊鎭� - Object coupon = json.get("couponInfo"); - if (coupon != null) { - JSONObject couponJson = JSONObject.fromObject(coupon); - JSONArray couponArray = couponJson.optJSONArray("couponList"); - if (couponArray != null) { - BigDecimal gap = null; - JDCouponInfo couponInfo = null; - for (int i = 0; i < couponArray.size(); i++) { - boolean add = false; - JSONObject jdcoupon = couponArray.optJSONObject(i); - if (couponInfo == null) { - couponInfo = new JDCouponInfo(); - add = true; - } - - BigDecimal quota = new BigDecimal(jdcoupon.optString("quota")); - BigDecimal sub = MoneyBigDecimalUtil.sub(price, quota); - if (gap == null) { - gap = sub; - } else if (sub.compareTo(gap) == 0) { - BigDecimal discount = new BigDecimal(jdcoupon.optString("discount")); - if (discount.compareTo(couponInfo.getDiscount()) > 0) { - add = true; - } - } else if (sub.compareTo(gap) > 0) { - add = true; - } - - if (add) { - couponInfo.setBindType(jdcoupon.optInt("bindType")); - couponInfo.setDiscount(new BigDecimal(jdcoupon.optString("discount"))); - couponInfo.setQuota(new BigDecimal(jdcoupon.optString("quota"))); - couponInfo.setPlatformType(jdcoupon.optInt("platformType")); - couponInfo.setGetEndTime(jdcoupon.optLong("getEndTime")); - couponInfo.setGetStartTime(jdcoupon.optLong("getStartTime")); - couponInfo.setUseEndTime(jdcoupon.optLong("useEndTime")); - couponInfo.setUseStartTime(jdcoupon.optLong("useStartTime")); - couponInfo.setLink(jdcoupon.optString("link")); - } - } - goods.setCouponInfo(couponInfo); - } - } - - // 鍥剧墖淇℃伅 List<String> imageList = new ArrayList<String>(); Object images = json.get("imageInfo"); @@ -409,13 +390,15 @@ goods.setPicUrl(imageList.get(0)); } + BigDecimal price = new BigDecimal(priceInfoJson.optString("price")); // 鎷艰喘淇℃伅 Object pinGouInfo = json.get("pinGouInfo"); if (pinGouInfo != null) { JSONObject pinGouInfoJson = JSONObject.fromObject(pinGouInfo); if (!pinGouInfoJson.isEmpty()) { JDPingouInfo jdPinGouInfo = new JDPingouInfo(); - jdPinGouInfo.setPingouPrice(new BigDecimal(pinGouInfoJson.optString("pingouPrice"))); + price = new BigDecimal(pinGouInfoJson.optString("pingouPrice")); + jdPinGouInfo.setPingouPrice(price); jdPinGouInfo.setPingouTmCount(pinGouInfoJson.optLong("pingouTmCount")); jdPinGouInfo.setPingouUrl(pinGouInfoJson.optString("pingouUrl")); jdPinGouInfo.setTotalCount(pinGouInfoJson.optLong("totalCount")); @@ -424,6 +407,58 @@ goods.setPinGouInfo(jdPinGouInfo); } } + + + + // 鍒镐俊鎭� + Object coupon = json.get("couponInfo"); + if (coupon != null) { + JSONObject couponJson = JSONObject.fromObject(coupon); + JSONArray couponArray = couponJson.optJSONArray("couponList"); + if (couponArray != null) { + BigDecimal discount_temp = null; + JDCouponInfo couponInfo = null; + for (int i = 0; i < couponArray.size(); i++) { + boolean add = false; + JSONObject jdcoupon = couponArray.optJSONObject(i); + + BigDecimal quota = new BigDecimal(jdcoupon.optString("quota")); + BigDecimal sub = MoneyBigDecimalUtil.sub(price, quota); + if (sub.compareTo(new BigDecimal(0)) < 0) { + continue; // 鍟嗗搧浠锋牸灏忎簬浼樻儬鍒镐环鏍奸檺鍒� + } + + // 鍒搁潰棰� + BigDecimal discount = new BigDecimal(jdcoupon.optString("discount")); + if (discount_temp == null) { + add = true; + discount_temp = discount; + } else if (discount_temp.compareTo(discount) > 0) { // 鍒搁潰棰濆ぇ + add = true; + } + + if (add) { + if (couponInfo == null) { + couponInfo = new JDCouponInfo(); + } + + couponInfo.setBindType(jdcoupon.optInt("bindType")); + couponInfo.setDiscount(new BigDecimal(jdcoupon.optString("discount"))); + couponInfo.setQuota(new BigDecimal(jdcoupon.optString("quota"))); + couponInfo.setPlatformType(jdcoupon.optInt("platformType")); + couponInfo.setGetEndTime(jdcoupon.optLong("getEndTime")); + couponInfo.setGetStartTime(jdcoupon.optLong("getStartTime")); + couponInfo.setUseEndTime(jdcoupon.optLong("useEndTime")); + couponInfo.setUseStartTime(jdcoupon.optLong("useStartTime")); + couponInfo.setLink(jdcoupon.optString("link")); + } + } + + goods.setCouponInfo(couponInfo); + } + } + + return goods; } @@ -444,7 +479,6 @@ if (resultJson.optInt("code") == 0) { result = resultJson.optString("result"); resultJson = JSONObject.fromObject(result); - System.out.println(resultJson); JSONArray array = resultJson.optJSONArray("data"); if (array != null) for (int i = 0; i < array.size(); i++) { @@ -458,7 +492,21 @@ private static JDGoods parseSimpleJDGoods(JSONObject json) { JDGoods goods = new JDGoods(); + goods.setPrice(StringUtil.isNullOrEmpty(json.optString("wlUnitPrice")) + ? new BigDecimal(json.optString("unitPrice")) : new BigDecimal(json.optString("wlUnitPrice"))); + + BigDecimal commisionRatioWl = new BigDecimal(json.optString("commisionRatioWl")); + if (commisionRatioWl.compareTo(new BigDecimal(0)) > 0) { + JDCommissionInfo commissionInfo = new JDCommissionInfo(); + commissionInfo.setCommissionShare(new BigDecimal(json.optString("commisionRatioWl"))); + commissionInfo.setCommission(MoneyBigDecimalUtil + .div(goods.getPrice().multiply(commissionInfo.getCommissionShare()), new BigDecimal(100))); + goods.setCommissionInfo(commissionInfo); + } else { + return null; + } + JDCategoryInfo categoryInfo = new JDCategoryInfo(); categoryInfo.setCid1(json.optLong("cid1")); categoryInfo.setCid1Name(json.optString("cid1Name")); @@ -469,15 +517,12 @@ goods.setCategoryInfo(categoryInfo); goods.setComments(null); - goods.setPrice(StringUtil.isNullOrEmpty(json.optString("wlUnitPrice")) - ? new BigDecimal(json.optString("unitPrice")) : new BigDecimal(json.optString("wlUnitPrice"))); - JDCommissionInfo commissionInfo = new JDCommissionInfo(); - commissionInfo.setCommissionShare(new BigDecimal(json.optString("commisionRatioWl"))); - commissionInfo.setCommission(MoneyBigDecimalUtil - .div(goods.getPrice().multiply(commissionInfo.getCommissionShare()), new BigDecimal(100))); - - goods.setCommissionInfo(commissionInfo); + String isFreeShipping = json.optString("isFreeShipping"); + if (!StringUtil.isNullOrEmpty(isFreeShipping)) { + goods.setIsFreeShipping(Integer.parseInt(isFreeShipping)); + } + goods.setCouponInfo(null); goods.setGoodCommentsShare(null); List<String> imageList = new ArrayList<>(); -- Gitblit v1.8.0