From f4a0f2acc63d7785eab108419a4e16f5f688cb95 Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期六, 18 一月 2020 12:06:27 +0800
Subject: [PATCH] 用户注册信息

---
 fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoBaoOrderUtil.java |  335 ++++++++++++++++++++++---------------------------------
 1 files changed, 132 insertions(+), 203 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoBaoOrderUtil.java b/fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoBaoOrderUtil.java
index 38d8aeb..d466899 100644
--- a/fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoBaoOrderUtil.java
+++ b/fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoBaoOrderUtil.java
@@ -5,40 +5,34 @@
 import java.math.BigDecimal;
 import java.net.URLEncoder;
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-
-import javax.annotation.PostConstruct;
-import javax.annotation.Resource;
+import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.commons.httpclient.HttpClient;
 import org.apache.commons.httpclient.HttpException;
 import org.apache.commons.httpclient.methods.GetMethod;
 import org.springframework.stereotype.Component;
+import org.yeshi.utils.HttpUtil;
 
+import com.yeshi.fanli.dto.order.OrderItem;
 import com.yeshi.fanli.entity.bus.user.Order;
-import com.yeshi.fanli.entity.bus.user.OrderItem;
 import com.yeshi.fanli.entity.bus.user.UserInfo;
 import com.yeshi.fanli.entity.order.CommonOrder;
-import com.yeshi.fanli.entity.taobao.PidOrder;
 import com.yeshi.fanli.entity.taobao.TaoBaoOrder;
 import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig;
 import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder;
-import com.yeshi.fanli.exception.TaoBaoOrderException;
+import com.yeshi.fanli.exception.order.TaoBaoOrderException;
 import com.yeshi.fanli.log.LogHelper;
-import com.yeshi.fanli.service.inter.config.ConfigService;
-import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
-import com.yeshi.fanli.service.inter.hongbao.HongBaoService;
-import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce;
-import com.yeshi.fanli.service.inter.order.OrderItemServcie;
-import com.yeshi.fanli.service.inter.order.OrderService;
 import com.yeshi.fanli.util.Constant;
 import com.yeshi.fanli.util.MoneyBigDecimalUtil;
 import com.yeshi.fanli.util.StringUtil;
 import com.yeshi.fanli.util.TimeUtil;
-import org.yeshi.utils.HttpUtil;
 
 import jxl.Sheet;
 import jxl.Workbook;
@@ -47,40 +41,10 @@
 @Component
 public class TaoBaoOrderUtil {
 
-	private final static String CACHENAME = "tbCookie";
-
 	private static final String ORDERFAILURE = "璁㈠崟澶辨晥";
 	private static final String ORDERPAYMENT = "璁㈠崟浠樻";
 	private static final String ORDERSETTLEMENT = "璁㈠崟缁撶畻";
 	private static final String ORDERSUCCESS = "璁㈠崟鎴愬姛";
-
-	@Resource
-	private OrderService orderService;
-	@Resource
-	private HongBaoService hongBaoService;
-	@Resource
-	private ConfigService configService;
-
-	@Resource
-	private OrderItemServcie orderItemServcie;
-
-	@Resource
-	private HongBaoManageService hongBaoManageService;
-
-	@Resource
-	private ThreeSaleSerivce threeSaleSerivce;
-
-	private static TaoBaoOrderUtil taoBaoOrderUtil;
-
-	@PostConstruct
-	public void init() {
-		taoBaoOrderUtil = this;
-		taoBaoOrderUtil.orderService = this.orderService;
-		taoBaoOrderUtil.hongBaoService = this.hongBaoService;
-		taoBaoOrderUtil.configService = this.configService;
-		taoBaoOrderUtil.hongBaoManageService = this.hongBaoManageService;
-		taoBaoOrderUtil.orderItemServcie = this.orderItemServcie;
-	}
 
 	/**
 	 * 鑾峰彇娣樺疂鑱旂洘鐨凜ookie
@@ -137,14 +101,14 @@
 			String as = gm.getResponseBodyAsString();
 			JSONObject root = JSONObject.fromObject(as);
 			if (root.optInt("code") == 0) {// 涓婃姤鎴愬姛
-				LogHelper.cookieLog("涓婃姤鎴愬姛锛�");
+				LogHelper.error("涓婃姤鎴愬姛锛�");
 				return;
 			}
-			LogHelper.cookieLog("涓婃姤澶辫触锛�");
+			LogHelper.error("涓婃姤澶辫触锛�");
 
 		} catch (Exception e) {
 			e.printStackTrace();
-			LogHelper.cookieLog("涓婃姤澶辫触锛�");
+			LogHelper.error("涓婃姤澶辫触锛�");
 		}
 	}
 
@@ -157,7 +121,7 @@
 	public static List<TaoBaoOrder> getOrderList(int day, TaoBaoUnionConfig config) {
 		String cookie1 = getTaoBaoCookie(config.getAccount());
 
-		LogHelper.cookieLog("璐﹀彿涓猴細" + config.getAccount() + ",cookie涓猴細" + cookie1);
+		LogHelper.error("璐﹀彿涓猴細" + config.getAccount() + ",cookie涓猴細" + cookie1);
 
 		String[] cookies = new String[] { cookie1 };
 		List<TaoBaoOrder> list = new ArrayList<TaoBaoOrder>();
@@ -231,7 +195,7 @@
 	private static List<TaoBaoOrder> downLoadOrderFromTaoBao(String url, TaoBaoUnionConfig config)
 			throws TaoBaoOrderException {
 		String cookie1 = getTaoBaoCookie(config.getAccount());
-		LogHelper.cookieLog("璐﹀彿涓猴細" + config.getAccount() + ",cookie涓猴細" + cookie1);
+		LogHelper.error("璐﹀彿涓猴細" + config.getAccount() + ",cookie涓猴細" + cookie1);
 		String[] cookies = new String[] { cookie1 };
 		List<TaoBaoOrder> list = new ArrayList<TaoBaoOrder>();
 		int i = 0;
@@ -343,16 +307,8 @@
 		return getOrderList(30, config);
 	}
 
-	/**
-	 * 鑾峰彇缁存潈鎴愬姛璁㈠崟
-	 * 
-	 * @param startTime
-	 * @param endTime
-	 * @return
-	 */
-	public static List<TaoBaoWeiQuanOrder> getWeiQuanOrders(long startTime, long endTime, TaoBaoUnionConfig config) {
-		String cookie = getTaoBaoCookie(config.getAccount());
-		return getWeiQuanOrders(cookie, startTime, endTime);
+	public static List<TaoBaoWeiQuanOrder> getWeiQuanOrders(InputStream input) {
+		return parseWeiQuanOrder(input);
 	}
 
 	private static List<TaoBaoWeiQuanOrder> getWeiQuanOrders(String cookies, long startTime, long endTime) {
@@ -596,24 +552,6 @@
 	}
 
 	/**
-	 * 瑙f瀽鍟嗗搧鍒嗕韩璁㈠崟
-	 * 
-	 * @param in
-	 * @return
-	 */
-	public static List<PidOrder> parsePidOrder(InputStream in) {
-		List<TaoBaoOrder> orderList = parseOrder(in);
-		if (orderList != null && orderList.size() > 0) {
-			List<PidOrder> pidOrderList = new ArrayList<>();
-			for (TaoBaoOrder order : orderList) {
-				pidOrderList.add(convertToPidOrder(order));
-			}
-			return pidOrderList;
-		}
-		return new ArrayList<PidOrder>();
-	}
-
-	/**
 	 * 瑙f瀽缁存潈璁㈠崟
 	 * 
 	 * @param in
@@ -629,38 +567,42 @@
 				for (int c = 0; c < sheet.getColumns(); c++) {
 					String content = sheet.getCell(c, r).getContents().trim();
 					switch (c) {
-					case 0://
-						orderRecord.setOrderId(content);
-						break;
-					case 1://
-						orderRecord.setOrderItemId(content);
-						break;
-					case 2://
-						orderRecord.setGoodsName(content);
-						break;
-					case 3:
-						orderRecord.setMoney(StringUtil.isNullOrEmpty(content) ? null : new BigDecimal(content));
-						break;
-					case 4:
-						orderRecord.setFanMoney(StringUtil.isNullOrEmpty(content) ? null : new BigDecimal(content));
-						break;
-					case 5://
-						orderRecord.setState(content);
-						break;
-					case 6://
-						if (!StringUtil.isNullOrEmpty(content))
-							orderRecord.setJieSuanTime(
-									new Date(TimeUtil.convertToTimeTemp(content, "yyyy-MM-dd HH:mm:ss")));
-						break;
-					case 7://
+					case 0:// 缁存潈鏃堕棿
 						if (!StringUtil.isNullOrEmpty(content))
 							orderRecord.setWeiQuanTime(
 									new Date(TimeUtil.convertToTimeTemp(content, "yyyy-MM-dd HH:mm:ss")));
 						break;
-					case 8://
+					case 1:// 缁存潈瀹屾垚鏃堕棿
 						if (!StringUtil.isNullOrEmpty(content))
 							orderRecord.setWeiQuanFinishTime(
 									new Date(TimeUtil.convertToTimeTemp(content, "yyyy-MM-dd HH:mm:ss")));
+						break;
+					case 2:// 缁撶畻鏃堕棿
+						if (!StringUtil.isNullOrEmpty(content))
+							orderRecord.setJieSuanTime(
+									new Date(TimeUtil.convertToTimeTemp(content, "yyyy-MM-dd HH:mm:ss")));
+						break;
+					case 3:// 鍟嗗搧鍚嶇О
+						orderRecord.setGoodsName(content);
+						break;
+					case 5:// 娣樺疂璁㈠崟鍙�
+						orderRecord.setOrderId(content);
+						break;
+					case 6:// 娣樺疂瀛愯鍗曞彿
+						orderRecord.setOrderItemId(content);
+						break;
+					case 7:// 缁存潈鐘舵��
+						orderRecord.setState(content);
+						break;
+					case 8:// 缁撶畻閲戦
+
+						break;
+					case 9:// 閫�娆鹃噾棰�
+						orderRecord.setMoney(StringUtil.isNullOrEmpty(content) ? null : new BigDecimal(content));
+						break;
+
+					case 10:// 杩旇繕鍟嗗閲戦
+						orderRecord.setFanMoney(StringUtil.isNullOrEmpty(content) ? null : new BigDecimal(content));
 						break;
 					}
 				}
@@ -723,74 +665,6 @@
 		return orderItem;
 	}
 
-	public static List<PidOrder> getPidOrderList(int day, TaoBaoUnionConfig config) {
-		String cookie1 = getTaoBaoCookie(config.getAccount());
-
-		LogHelper.cookieLog("璐﹀彿涓猴細" + config.getAccount() + ",cookie涓猴細" + cookie1);
-
-		String[] cookies = new String[] { cookie1 };
-		List<PidOrder> list = new ArrayList<PidOrder>();
-		int i = 0;
-		for (String cookie : cookies) {
-			if (com.yeshi.fanli.util.StringUtil.isNullOrEmpty(cookie)) {
-				i++;
-				continue;
-			}
-			// 鍘熷涓�30
-			String startTime = TimeUtil.getGernalTime(System.currentTimeMillis() - 1000 * 60 * 60 * 24L * day,
-					"yyyy-MM-dd");
-			String endTime = TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyy-MM-dd");
-
-			String url = String.format(
-					"http://pub.alimama.com/report/getTbkPaymentDetails.json?spm=a219t.7664554.1998457203.85.9pFBtK&queryType=1&payStatus=&DownloadID=DOWNLOAD_REPORT_INCOME_NEW&startTime=%s&endTime=%s",
-					startTime, endTime);
-			HttpClient client = new HttpClient();
-			// client.getHostConfiguration().setProxy("192.168.1.200", 8888);
-			GetMethod gm = new GetMethod(url);
-			gm.setRequestHeader("Cookie", cookie);
-			gm.setRequestHeader("User-Agent",
-					"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36");
-			InputStream inputStream = null;
-			try {
-				client.executeMethod(gm);
-				System.out.println(gm.getStatusCode());
-				if (gm.getStatusCode() == 200) {
-					System.out.println(gm.getResponseHeader("Content-Type").getValue());
-					if (!gm.getResponseHeader("Content-Type").getValue().contains("excel")) {
-						if (i == 0) {
-							reportCookieInvalid(config.getAccount());
-						}
-						continue;
-					}
-					inputStream = gm.getResponseBodyAsStream();
-					list.addAll(parsePidOrder(inputStream));
-
-					// String path =
-					// TaoBaoOrderUtil.class.getClassLoader().getResource("/").getPath();
-					// String yyyyMMddHHmmss =
-					// TimeUtil.yyyyMMddHHmmss(System.currentTimeMillis());
-					// FileUtils.copyInputStreamToFile(inputStream, new
-					// File(path+"/excel/"+yyyyMMddHHmmss+"."+"xls"));
-				}
-			} catch (HttpException e) {
-				e.printStackTrace();
-			} catch (IOException e) {
-				e.printStackTrace();
-			} finally {
-				i++;
-				if (inputStream != null) {
-					try {
-						inputStream.close();
-					} catch (IOException e) {
-						e.printStackTrace();
-					}
-				}
-			}
-		}
-
-		return list;
-	}
-
 	/**
 	 * 灏嗘窐瀹濊鍗曟寜鐓ц鍗曞彿褰掔被
 	 * 
@@ -798,7 +672,7 @@
 	 * @return
 	 */
 	public static Map<String, List<TaoBaoOrder>> classifyTaoBaoOrderByOrderId(List<TaoBaoOrder> orderList) {
-		Map<String, List<TaoBaoOrder>> map = new HashMap<>();
+		Map<String, List<TaoBaoOrder>> map = new ConcurrentHashMap<>();
 		for (TaoBaoOrder order : orderList) {
 			if (map.get(order.getOrderId()) == null)
 				map.put(order.getOrderId(), new ArrayList<>());
@@ -806,38 +680,65 @@
 			order.setOrderBy(map.get(order.getOrderId()).size() + 1);
 			map.get(order.getOrderId()).add(order);
 		}
+
+		// 璁㈠崟鎺掑簭鍊肩伆搴︽祴璇�
+		try {
+			for (Iterator<String> its = map.keySet().iterator(); its.hasNext();) {
+				String orderId = its.next();
+				try {
+					setOrderBy(map.get(orderId));
+				} catch (Exception e) {
+					LogHelper.errorDetailInfo(e, "璁㈠崟鍙�:" + orderId, "璁㈠崟鎺掑簭鍊肩伆搴︽祴璇�");
+				}
+			}
+		} catch (Exception e) {
+		}
+
 		return map;
 	}
 
-	/**
-	 * 璁㈠崟杞崲
-	 * 
-	 * @param taoBaoOrder
-	 * @return
-	 */
-	public static PidOrder convertToPidOrder(TaoBaoOrder taoBaoOrder) {
-		PidOrder pidOrder = new PidOrder();
-		pidOrder.setOrderCreateTime(new Date(TimeUtil.convertDateToTemp2(taoBaoOrder.getCreateTime())));
-		pidOrder.setGoodsTitle(taoBaoOrder.getTitle());
-		pidOrder.setAuctionId(taoBaoOrder.getAuctionId());
-		pidOrder.setGoodsNum(taoBaoOrder.getCount());
-		pidOrder.setPrice(taoBaoOrder.getPrice());
-		pidOrder.setState(taoBaoOrder.getOrderState());
-		pidOrder.setOrderType(taoBaoOrder.getOrderType());
-		pidOrder.setRate(taoBaoOrder.getiRatio());
-		pidOrder.setPayMoney(taoBaoOrder.getPayment());
-		if ("璁㈠崟缁撶畻".equalsIgnoreCase(taoBaoOrder.getOrderState()))
-			pidOrder.setPreMoney(taoBaoOrder.geteIncome());
-		else
-			pidOrder.setPreMoney(taoBaoOrder.getEstimate());
-		pidOrder.setFinalMoney(taoBaoOrder.getSettlement());
-		if (!StringUtil.isNullOrEmpty(taoBaoOrder.getSettlementTime()))
-			pidOrder.setBalanceTime(new Date(TimeUtil.convertDateToTemp2(taoBaoOrder.getSettlementTime())));
-		pidOrder.setOrderId(taoBaoOrder.getOrderId());
-		pidOrder.setTypeName(taoBaoOrder.getClassName());
-		pidOrder.setSrcMediaId(taoBaoOrder.getSourceMediaId());
-		pidOrder.setAdzoneId(taoBaoOrder.getAdPositionId());
-		return pidOrder;
+	public static void setOrderBy(List<TaoBaoOrder> orderList) {// 鎻愬彇涓�鏍风殑
+		if (orderList == null || orderList.size() == 1)
+			return;
+		int len = orderList.get(0).getTradeId().length();
+		int startIndex = 0;
+		for (int i = 0; i < len; i++) {
+			boolean isSame = true;
+			for (int j = 0; j < orderList.size() - 1; j++) {
+				if (orderList.get(j).getTradeId().charAt(i) != orderList.get(j + 1).getTradeId().charAt(i)) {
+					isSame = false;
+					break;
+				}
+			}
+			if (!isSame) {
+				startIndex = i;
+				break;
+			}
+		}
+		int endIndex = 0;
+
+		for (int i = len - 1; i >= 0; i--) {
+			boolean isSame = true;
+			for (int j = 0; j < orderList.size() - 1; j++) {
+				if (orderList.get(j).getTradeId().charAt(i) != orderList.get(j + 1).getTradeId().charAt(i)) {
+					isSame = false;
+					break;
+				}
+			}
+			if (!isSame) {
+				endIndex = i;
+				break;
+			}
+		}
+		for (TaoBaoOrder taoBaoOrder : orderList) {
+			String tradeId = taoBaoOrder.getTradeId();
+			String orderByStr = tradeId.substring(startIndex, endIndex + 1);
+			if (orderByStr.length() > 8) {
+				LogHelper.error(taoBaoOrder.getOrderId() + "-璁㈠崟鐨刼rderBy瓒呰繃8浣�:" + taoBaoOrder.getOrderBy());
+			}
+			int orderBy = Integer.parseInt(orderByStr);
+			// taoBaoOrder.setOrderBy(orderBy);
+		}
 	}
 
 	/**
@@ -866,7 +767,10 @@
 		CommonOrder commonOrder = new CommonOrder();
 		commonOrder.setCount(taoBaoOrder.getCount());
 		commonOrder.setCreateTime(new Date());
-		commonOrder.seteIncome(taoBaoOrder.geteIncome());
+		if (taoBaoOrder.geteIncome() != null && taoBaoOrder.getSubsidy() != null)
+			commonOrder.seteIncome(taoBaoOrder.geteIncome().add(taoBaoOrder.getSubsidy()));
+		else
+			commonOrder.seteIncome(taoBaoOrder.geteIncome());
 		commonOrder.setEstimate(taoBaoOrder.getEstimate());
 		commonOrder.setOrderNo(taoBaoOrder.getOrderId());
 		commonOrder.setPayment(taoBaoOrder.getPayment());
@@ -874,8 +778,8 @@
 		if (!StringUtil.isNullOrEmpty(taoBaoOrder.getSettlementTime()))
 			commonOrder.setSettleTime(
 					new Date(TimeUtil.convertToTimeTemp(taoBaoOrder.getSettlementTime(), "yyyy-MM-dd HH:mm:ss")));
-		commonOrder.setSourcePosition(
-				String.format("mm_%s_%s_%s", "124933865", taoBaoOrder.getSourceMediaId(), taoBaoOrder.getAdPositionId()));
+		commonOrder.setSourcePosition(String.format("mm_%s_%s_%s", "124933865", taoBaoOrder.getSourceMediaId(),
+				taoBaoOrder.getAdPositionId()));
 		commonOrder.setSourceType(Constant.SOURCE_TYPE_TAOBAO);
 		int state = 0;
 		if ("璁㈠崟浠樻".equalsIgnoreCase(taoBaoOrder.getOrderState())) {
@@ -887,13 +791,38 @@
 		} else if ("璁㈠崟缁撶畻".equalsIgnoreCase(taoBaoOrder.getOrderState())) {
 			state = CommonOrder.STATE_JS;
 		}
-
+		commonOrder.setOrderBy(taoBaoOrder.getOrderBy());
 		commonOrder.setState(state);
 		commonOrder.setThirdCreateTime(
 				new Date(TimeUtil.convertToTimeTemp(taoBaoOrder.getCreateTime(), "yyyy-MM-dd HH:mm:ss")));
 		commonOrder.setUpdateTime(new Date());
+		commonOrder.setTradeId(taoBaoOrder.getTradeId());
 
 		return commonOrder;
 
 	}
+
+	/**
+	 * 鑾峰彇涓�缁勮鍗曠殑hash鍊�
+	 * 
+	 * @param list
+	 * @return
+	 */
+	public static String getOrderDataHashCode(List<TaoBaoOrder> list) {
+		List<TaoBaoOrder> orderList = new ArrayList<>();
+		orderList.addAll(list);
+		Comparator<TaoBaoOrder> orderCM = new Comparator<TaoBaoOrder>() {
+
+			@Override
+			public int compare(TaoBaoOrder o1, TaoBaoOrder o2) {
+				return Long.parseLong(o1.getTradeId()) - Long.parseLong(o2.getTradeId()) > 0 ? 1 : -1;
+			}
+		};
+		Collections.sort(orderList, orderCM);
+		String sts = "";
+		for (TaoBaoOrder order : orderList) {
+			sts += (order.getTradeId() + "-" + order.getSpecialId() + "-" + order.getRelationId());
+		}
+		return StringUtil.Md5(sts);
+	}
 }

--
Gitblit v1.8.0