From 788deca1b4a24f8a24e49c24f7d89975a1d74bbe Mon Sep 17 00:00:00 2001 From: admin <2780501319@qq.com> Date: 星期日, 03 十一月 2019 23:31:25 +0800 Subject: [PATCH] 商城订单退款处理 --- fanli/src/main/java/com/yeshi/fanli/util/jd/JDUtil.java | 218 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 210 insertions(+), 8 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/util/jd/JDUtil.java b/fanli/src/main/java/com/yeshi/fanli/util/jd/JDUtil.java index b41eb1f..87870ae 100644 --- a/fanli/src/main/java/com/yeshi/fanli/util/jd/JDUtil.java +++ b/fanli/src/main/java/com/yeshi/fanli/util/jd/JDUtil.java @@ -18,6 +18,7 @@ import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.PostMethod; +import org.jsoup.Connection; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; @@ -25,6 +26,7 @@ import org.yeshi.utils.BigDecimalUtil; import org.yeshi.utils.HttpUtil; +import com.yeshi.fanli.dto.GoodsClassDTO; import com.yeshi.fanli.dto.jd.JDCommissionInfo; import com.yeshi.fanli.dto.jd.JDCouponInfo; import com.yeshi.fanli.dto.jd.JDPingouInfo; @@ -40,6 +42,8 @@ import net.sf.json.JSONObject; public class JDUtil { + + public static final String TM_PHONE_URL = "https://item.m.jd.com/product/%s.html"; public void test() { Map<String, String> systemParams = new HashMap<>(); @@ -381,11 +385,62 @@ new BigDecimal("0.01")), MoneyBigDecimalUtil.div(rate, new BigDecimal(100))); } - } - return BigDecimalUtil.getWithNoZera(money); + // 杩斿埄姣斾緥涓哄師鏉ョ殑90% + return BigDecimalUtil.getWithNoZera(MoneyBigDecimalUtil.mul(money, new BigDecimal("0.9"))); } + + /** + * 鍟嗗搧浣i噾璁$畻 + * + * @param goods + * @param rate + * @return + */ + public static BigDecimal getGoodsFanLiMoneyPlus(JDGoods goods, BigDecimal rate) { + BigDecimal money = new BigDecimal(0); + BigDecimal commissionPlus = goods.getCommissionPlus(); + if (commissionPlus == null) { + return money; + } + + + + BigDecimal price = null; + JDPingouInfo pinGouInfo = goods.getPinGouInfo(); + if (pinGouInfo == null) { + price = goods.getPrice(); + } else { + price = pinGouInfo.getPingouPrice(); + } + + JDCouponInfo couponInfo = goods.getCouponInfo(); + if (couponInfo == null) { + money = MoneyBigDecimalUtil.mul(MoneyBigDecimalUtil + .mul(MoneyBigDecimalUtil.mul(price, commissionPlus), new BigDecimal("0.01")), + MoneyBigDecimalUtil.div(rate, new BigDecimal(100))); + } else { + BigDecimal quota = couponInfo.getQuota(); + BigDecimal discount = couponInfo.getDiscount(); + if (quota.compareTo(price) <= 0 && price.compareTo(discount) > 0) { + + BigDecimal finalPrice = price.subtract(discount); + money = MoneyBigDecimalUtil.mul(MoneyBigDecimalUtil.mul( + MoneyBigDecimalUtil.mul(finalPrice, commissionPlus), + new BigDecimal("0.01")), MoneyBigDecimalUtil.div(rate, new BigDecimal(100))); + + } else {// 涓嶈兘鐢ㄥ埜 + money = MoneyBigDecimalUtil.mul( + MoneyBigDecimalUtil.mul(MoneyBigDecimalUtil.mul(price,commissionPlus), + new BigDecimal("0.01")), + MoneyBigDecimalUtil.div(rate, new BigDecimal(100))); + } + } + // 杩斿埄姣斾緥涓哄師鏉ョ殑90% + return BigDecimalUtil.getWithNoZera(MoneyBigDecimalUtil.mul(money, new BigDecimal("0.9"))); + } + /** * 璁$畻鍟嗗搧鍒稿悗浠凤紝娌℃湁鍒稿垯杩斿洖鍘熶环 * @@ -544,19 +599,25 @@ } static String jdGoodsJs = null; - - public static String getJDGoodsId(String url) { + static ScriptEngine engine = null; + static { if (jdGoodsJs == null) jdGoodsJs = getJDGoodsJS(); ScriptEngineManager manager = new ScriptEngineManager(); - ScriptEngine engine = manager.getEngineByName("javascript"); + engine = manager.getEngineByName("javascript"); try { engine.eval(jdGoodsJs); + } catch (Exception e) { + } + } + + public static String getJDGoodsId(String url) { + try { if (engine instanceof Invocable) { Invocable in = (Invocable) engine; - String goodsId = in.invokeFunction("getGoodsId", url).toString(); - if (!StringUtil.isNullOrEmpty(goodsId)) - return goodsId.trim(); + Object goodsId = in.invokeFunction("getGoodsId", url); + if (goodsId != null) + return goodsId.toString().trim(); } } catch (Exception e) { e.printStackTrace(); @@ -564,4 +625,145 @@ return null; } + /** + * 鏌ヨ澶╃尗鍟嗗搧鍥剧墖銆佹爣棰� + * + * @param auctionId + * @return + */ + public static JDGoods getSimpleGoodsInfo(String goodsId) { + JDGoods jdGoods = null; + try { + Connection connect = Jsoup.connect(String.format(TM_PHONE_URL, goodsId)); + Document document = connect.get(); + Elements elements = document.getElementsByTag("script"); + if (elements.size() >= 0) { + for (int i = 0; i < elements.size(); i++) { + String content = elements.get(i).toString(); + if (content.contains("window._itemOnly")) { + System.out.println("瀛樺湪"); + content = content.replace("<script>", ""); + content = content.replace("</script>", ""); + int indexOf = content.indexOf("window._isLogin"); + content = content.substring(0, indexOf); + + int indexItem = content.indexOf("\"item\":"); + content = content.substring(indexItem, content.length() - 1); + content = content.replace("\"item\":", "var item ="); + content = content.replace("});", "").trim(); + + content += ";function getData() {return item;}"; + ScriptEngineManager manager = new ScriptEngineManager(); + ScriptEngine engine = manager.getEngineByName("javascript"); + engine.eval(content); + + if (engine instanceof Invocable) { + Invocable in = (Invocable) engine; + JSONObject json = JSONObject.fromObject(in.invokeFunction("getData")); + + jdGoods = new JDGoods(); + jdGoods.setSkuName(json.getString("skuName")); + JSONObject jsonImage = json.getJSONObject("image"); + if (jsonImage != null && jsonImage.size() > 0) { + String picUrl = jsonImage.getString("0"); + jdGoods.setPicUrl("http://m.360buyimg.com/mobilecms/s750x750_" + picUrl); + } + } + + break; + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return jdGoods; + } + + + /** + * 鑾峰彇绫荤洰 + * @param level 绛夌骇 + * @param parentId 涓婄骇id + * @return + */ + public static List<GoodsClassDTO> getCategoryList(int level, int parentId) { + try { + // 璇锋眰鍦板潃 + String requestUrl = "https://union.jd.com/api/help/getCategoryList?level=%s&parentId=%s"; + // 鎵ц璇锋眰 + String result = HttpUtil.get(String.format(requestUrl, level, parentId)); + + if (!StringUtil.isNullOrEmpty(result)) { + JSONObject json = JSONObject.fromObject(result); + JSONArray jsonArray = json.getJSONArray("data"); + if (jsonArray != null && jsonArray.size() > 0) { + List<GoodsClassDTO> list = new ArrayList<GoodsClassDTO>(); + for (int i=0;i <jsonArray.size() ;i ++ ) { + Object object = jsonArray.get(i); + if (object == null) + continue; + JSONObject jsonClass = JSONObject.fromObject(object); + + GoodsClassDTO goodsClass = new GoodsClassDTO(); + goodsClass.setId(jsonClass.optString("id")); + goodsClass.setName(jsonClass.optString("categoryName")); + list.add(goodsClass); + } + return list; + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + /** + * 鑾峰彇绫荤洰 + * @param level 绛夌骇 + * @param parentId 涓婄骇id + * @return + */ + public static List<GoodsClassDTO> getCategoryCommiPlus(int level, int parentId) { + try { + // 璇锋眰鍦板潃 + String requestUrl = "https://union.jd.com/api/help/getCategoryCommiPlus?level=%s&parentId=%s"; + // 鎵ц璇锋眰 + String result = HttpUtil.get(String.format(requestUrl, level, parentId)); + + if (!StringUtil.isNullOrEmpty(result)) { + JSONObject json = JSONObject.fromObject(result); + JSONArray jsonArray = json.getJSONArray("data"); + if (jsonArray != null && jsonArray.size() > 0) { + List<GoodsClassDTO> list = new ArrayList<GoodsClassDTO>(); + for (int i=0;i <jsonArray.size() ;i ++ ) { + Object object = jsonArray.get(i); + if (object == null) + continue; + JSONObject jsonClass = JSONObject.fromObject(object); + + GoodsClassDTO goodsClass = new GoodsClassDTO(); + goodsClass.setId(jsonClass.optString("id")); + goodsClass.setName(jsonClass.optString("name")); + + String selfMobileComm = jsonClass.optString("selfMobileComm"); + if (!StringUtil.isNullOrEmpty(selfMobileComm)) + goodsClass.setSelfComm(new BigDecimal(selfMobileComm)); + + String popMobileComm = jsonClass.optString("popMobileComm"); + if (!StringUtil.isNullOrEmpty(popMobileComm)) + goodsClass.setPopComm(new BigDecimal(popMobileComm)); + + list.add(goodsClass); + } + return list; + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + } -- Gitblit v1.8.0