From 65aaf1c05bd06cefa82ebc40cc3e01cf4ac233c0 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期六, 27 七月 2024 13:52:08 +0800 Subject: [PATCH] 代理新功能完善 --- src/main/java/com/taoke/autopay/utils/order/DYOrderApi.java | 108 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 102 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/taoke/autopay/utils/order/DYOrderApi.java b/src/main/java/com/taoke/autopay/utils/order/DYOrderApi.java index 4cda4e3..72ec6a3 100644 --- a/src/main/java/com/taoke/autopay/utils/order/DYOrderApi.java +++ b/src/main/java/com/taoke/autopay/utils/order/DYOrderApi.java @@ -1,12 +1,24 @@ package com.taoke.autopay.utils.order; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import com.taoke.autopay.dto.DYOrderDto; +import com.taoke.autopay.dto.DYSkuOrderDto; +import com.taoke.autopay.dto.DYSubsidyDto; import com.taoke.autopay.exception.KeyOrderException; +import com.taoke.autopay.utils.Constant; import com.taoke.autopay.utils.HttpUtil; import com.taoke.autopay.utils.JsonUtil; +import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; + +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * @author hxh @@ -17,26 +29,110 @@ public class DYOrderApi { private static Logger logger = LoggerFactory.getLogger("dyorderApiLogger"); + private static Gson gson=JsonUtil.getSimpleGson(); + private static String requestByOrderNo1(String orderNo) { String url = String.format("https://api.youihuo.com/open/order.getFreeOrder?apiKey=sTIFFTyunIFZfp5i4V6g19PN9biudl4v&orderId=%s", orderNo); String result = HttpUtil.get(url); + System.out.println(result); return result; } - public static DYOrderDto getOrderDetail(String orderNo) throws KeyOrderException { + private static String requestByOrderNo2(String orderNo) { + String url = String.format("https://api.bpshe.com/mall/douyinOMS/getSubsidyOrderInfo?orderId=%s", orderNo); + Map<String,String> headers=new HashMap<>(); + headers.put("Accept","application/json;charset=utf-8"); + String result = HttpUtil.get(url, headers); + return result; + } + + private static DYOrderDto getOrderDetail1(String orderNo) throws KeyOrderException { String result = requestByOrderNo1(orderNo); JSONObject root = JSONObject.fromObject(result); if (root.optInt("code") != 1000) { - logger.error(String.format("鎶栭煶璁㈠崟鏌ヨ鍑洪敊锛�%s - %s",orderNo, result)); + logger.error(String.format("鎶栭煶璁㈠崟鏌ヨ鍑洪敊(1)锛�%s - %s",orderNo, result)); throw new KeyOrderException(root.optString("message")); } - JSONObject data = root.optJSONObject("data"); - return JsonUtil.getSimpleGson().fromJson(data.toString(),DYOrderDto.class); + JSONObject data = root.optJSONObject("data"); + DYOrderDto dto = JsonUtil.getSimpleGson().fromJson(data.toString(),DYOrderDto.class); + dto.setOrderChannel(Constant.ORDER_CHANNEL_CYX); + return dto; + } + + private static DYOrderDto getOrderDetail2(String orderNo) throws KeyOrderException { + String result = requestByOrderNo2(orderNo); + JSONObject root = JSONObject.fromObject(result); + if (root.optInt("errCode") != 0) { + logger.error(String.format("鎶栭煶璁㈠崟鏌ヨ鍑洪敊(2)锛�%s - %s",orderNo, result)); + throw new KeyOrderException(root.optString("errMsg")); + } + JSONObject data = root.optJSONObject("data"); + if(data==null){ + logger.error(String.format("鎶栭煶璁㈠崟鏌ヨ鏃犳暟鎹�(2)锛�%s - %s",orderNo, result)); + throw new KeyOrderException("璁㈠崟鏌ヨ鏃犳暟鎹�"); + } + JSONObject orderDetailData = data.optJSONObject("orderDetail"); + JSONArray subsidyDetailData = data.optJSONArray("subsidyDetail"); + if(orderDetailData==null||subsidyDetailData==null){ + logger.error(String.format("璁㈠崟涓庤ˉ璐存棤鏁版嵁(2)锛�%s - %s",orderNo, result)); + throw new KeyOrderException("璁㈠崟涓庤ˉ璐存棤鏁版嵁"); + } + orderDetailData = orderDetailData.optJSONObject("shop_order_detail"); + DYOrderDto dyOrder = gson.fromJson(orderDetailData.toString(),DYOrderDto.class); + List<DYSubsidyDto> subsidyList = gson.fromJson(subsidyDetailData.toString(), new TypeToken<List<DYSubsidyDto>>(){}.getType()); + if(subsidyList.size()!=dyOrder.getSku_order_list().size()){ + throw new KeyOrderException("璁㈠崟鍟嗗搧涓庤ˉ璐村晢鍝佷笉鐩哥瓑"); + } + Map<String, DYSkuOrderDto> skuMap=new HashMap<>(); + for(DYSkuOrderDto d: dyOrder.getSku_order_list()){ + skuMap.put(d.getProduct_id()+"", d); + } + for(DYSubsidyDto d:subsidyList){ + if(skuMap.get(d.getGoodsId())==null){ + throw new KeyOrderException("琛ヨ创鍟嗗搧娌″湪璁㈠崟鍟嗗搧涓�"); + } + if(skuMap.get(d.getGoodsId()).getPay_amount()> d.getSubsidyAmount()){ + throw new KeyOrderException("璁㈠崟鍟嗗搧閲戦楂樹簬琛ヨ创閲戦"); + } + if(!d.getStatus().equalsIgnoreCase("online")){ + throw new KeyOrderException("琛ヨ创涓嬬嚎"); + } + } + dyOrder.setOrderChannel(Constant.ORDER_CHANNEL_BPS); + return dyOrder; + } + + + public static DYOrderDto getOrderDetail(String orderNo) throws KeyOrderException { + DYOrderDto dto=null; + List<KeyOrderException> exceptions=new ArrayList<>(); + try { + dto = getOrderDetail1(orderNo); + }catch(KeyOrderException e){ + exceptions.add(e); + } + if(dto==null){ + try { + dto = getOrderDetail2(orderNo); + }catch(KeyOrderException e){ + exceptions.add(e); + } + } + + if(dto!=null){ + return dto; + } + String exception=""; + for(KeyOrderException e:exceptions){ + exception+=e.getMessage()+";"; + } + throw new KeyOrderException(exception); } public static void main(String[] args) throws Exception { - DYOrderDto dto = (DYOrderApi.getOrderDetail("6931134387948820382")); - System.out.println("123123"); +// DYOrderDto dto = (DYOrderApi.getOrderDetail("6932591080266339994")); + DYOrderDto result = getOrderDetail("6932591080266471066"); + System.out.println(result); } } -- Gitblit v1.8.0