From 28cf328a098334b51a3e9d2d56f983fb8c862211 Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期六, 23 五月 2020 09:54:38 +0800
Subject: [PATCH] 足迹、收藏订单兼容新需求

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/order/tb/TaoBaoOrderServiceImpl.java |  161 ++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 110 insertions(+), 51 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/tb/TaoBaoOrderServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/tb/TaoBaoOrderServiceImpl.java
index b8b2908..d2988bf 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/tb/TaoBaoOrderServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/tb/TaoBaoOrderServiceImpl.java
@@ -9,16 +9,22 @@
 
 import javax.annotation.Resource;
 
+import org.springframework.jdbc.datasource.DataSourceTransactionManager;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.TransactionStatus;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.support.DefaultTransactionDefinition;
 
+import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoOrderGoodsMapper;
 import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoOrderMapper;
 import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoOrderTradeMapMapper;
 import com.yeshi.fanli.entity.taobao.TaoBaoOrder;
+import com.yeshi.fanli.entity.taobao.TaoBaoOrderGoods;
 import com.yeshi.fanli.entity.taobao.TaoBaoOrderTradeMap;
 import com.yeshi.fanli.log.LogHelper;
 import com.yeshi.fanli.service.inter.order.tb.TaoBaoOrderService;
 import com.yeshi.fanli.util.Constant;
+import com.yeshi.fanli.util.RedisKeyEnum;
 import com.yeshi.fanli.util.RedisManager;
 import com.yeshi.fanli.util.StringUtil;
 import com.yeshi.fanli.util.taobao.TaoBaoOrderUtil;
@@ -35,6 +41,12 @@
 	@Resource
 	private TaoBaoOrderTradeMapMapper taoBaoOrderTradeMapMapper;
 
+	@Resource(name = "transactionManager")
+	private DataSourceTransactionManager transactionManager;
+
+	@Resource
+	private TaoBaoOrderGoodsMapper taoBaoOrderGoodsMapper;
+
 	/**
 	 * 鑾峰彇璁㈠崟鐨勫搱甯屽��
 	 * 
@@ -50,7 +62,8 @@
 		Iterator<String> its = map.keySet().iterator();
 		while (its.hasNext()) {
 			String orderId = its.next();
-			String key = "addorder-" + TaoBaoOrderUtil.getOrderDataHashCode(map.get(orderId));
+			String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.addOrder,
+					TaoBaoOrderUtil.getOrderDataHashCode(map.get(orderId)));
 			// redis鍋氶鐜囬檺鍒�
 			try {
 				if (Constant.IS_OUTNET) {
@@ -87,71 +100,94 @@
 			taoBaoOrderTradeMapMapper.insertSelective(map);
 	}
 
+	// 娣诲姞娣樺疂璁㈠崟
+	private void insertTaoBaoOrder(TaoBaoOrder taoBaoOrder) {
+		taoBaoOrderMapper.insertSelective(taoBaoOrder);
+		addTaoBaoOrderTradeMap(taoBaoOrder);
+		addTaoBaoOrderGoods(taoBaoOrder.getGoods());
+	}
+
 	@Transactional
 	@Override
 	public void addTaoBaoOrder(String orderId, List<TaoBaoOrder> list) {
-		LogHelper.test("璁㈠崟鍙蜂笌璁㈠崟鏁伴噺:" + orderId + "-" + list.size());
-		// 楠岃瘉orderby鏄惁姝g‘
-		if (list != null && list.size() > 0) {
-			int maxOrderBy = list.get(0).getOrderBy();
-			if (list.size() > 1)
-				for (TaoBaoOrder order : list) {
-					if (order.getOrderBy() > maxOrderBy)
-						maxOrderBy = order.getOrderBy();
+		TransactionStatus transactionStatus = transactionManager.getTransaction(new DefaultTransactionDefinition());
+		try {
+
+			LogHelper.test("璁㈠崟鍙蜂笌璁㈠崟鏁伴噺:" + orderId + "-" + list.size());
+
+			// 楠岃瘉orderby鏄惁姝g‘
+			if (list != null && list.size() > 0) {
+				int maxOrderBy = list.get(0).getOrderBy();
+				if (list.size() > 1)
+					for (TaoBaoOrder order : list) {
+						if (order.getOrderBy() > maxOrderBy)
+							maxOrderBy = order.getOrderBy();
+					}
+
+				if (list.size() != maxOrderBy) {
+					LogHelper.test("鎹曟崏鍒版帓搴忓�奸敊璇�:" + orderId);
+					throw new Exception();
+				}
+			}
+			// 楠岃瘉tradeId闂
+			Set<String> tradesIds = new HashSet<>();
+			for (TaoBaoOrder order : list) {
+				tradesIds.add(order.getTradeId());
+			}
+
+			// 鏈夐噸澶嶇殑浜ゆ槗ID涓嶅鐞�
+			if (tradesIds.size() != list.size()) {
+				// 鍘婚櫎閲嶅浜ゆ槗ID
+				tradesIds = new HashSet<>();
+				for (int i = 0; i < list.size(); i++) {
+					if (tradesIds.contains(list.get(i).getTradeId())) {
+						list.remove(i--);
+					} else
+						tradesIds.add(list.get(i).getTradeId());
 				}
 
-			if (list.size() != maxOrderBy) {
-				LogHelper.test("鎹曟崏鍒版帓搴忓�奸敊璇�:" + orderId);
-				return;
+				LogHelper.test("妫�娴嬪埌浜ゆ槗ID閲嶅闂:" + orderId);
+//				throw new Exception();
 			}
-		}
-		// 楠岃瘉tradeId闂
-		Set<String> tradesIds = new HashSet<>();
-		for (TaoBaoOrder order : list) {
-			tradesIds.add(order.getTradeId());
-		}
 
-		// 鏈夐噸澶嶇殑浜ゆ槗ID涓嶅鐞�
-		if (tradesIds.size() != list.size()) {
-			LogHelper.test("妫�娴嬪埌浜ゆ槗ID閲嶅闂:" + orderId);
-			return;
-		}
-
-		List<TaoBaoOrder> oldOrderList = taoBaoOrderMapper.selectTaoBaoOrderByOrderId(orderId);
-		if (oldOrderList == null || oldOrderList.size() == 0) {
-			for (TaoBaoOrder taoBaoOrder : list) {
-				taoBaoOrder.setLatestUpdateTime(new Date());
-				taoBaoOrderMapper.insertSelective(taoBaoOrder);
-				addTaoBaoOrderTradeMap(taoBaoOrder);
-			}
-		} else {
-			if (StringUtil.isNullOrEmpty(oldOrderList.get(0).getTradeId())) {
-				taoBaoOrderMapper.deleteByOrderId(orderId);
+			List<TaoBaoOrder> oldOrderList = taoBaoOrderMapper.selectTaoBaoOrderByOrderId(orderId);
+			if (oldOrderList == null || oldOrderList.size() == 0) {
 				for (TaoBaoOrder taoBaoOrder : list) {
 					taoBaoOrder.setLatestUpdateTime(new Date());
-					taoBaoOrderMapper.insertSelective(taoBaoOrder);
-					addTaoBaoOrderTradeMap(taoBaoOrder);
+					insertTaoBaoOrder(taoBaoOrder);
 				}
 			} else {
-				// 鎸塼radeId鏇存柊
-				for (TaoBaoOrder taoBaoOrder : list) {
-					TaoBaoOrder order = taoBaoOrderMapper.selectTaoBaoOrderByTradeId(taoBaoOrder.getTradeId());
-					if (order == null) {
+				if (StringUtil.isNullOrEmpty(oldOrderList.get(0).getTradeId())) {
+					taoBaoOrderMapper.deleteByOrderId(orderId);
+					for (TaoBaoOrder taoBaoOrder : list) {
 						taoBaoOrder.setLatestUpdateTime(new Date());
-						taoBaoOrderMapper.insertSelective(taoBaoOrder);
-						addTaoBaoOrderTradeMap(taoBaoOrder);
-					} else {
-						taoBaoOrder.setId(order.getId());
-						if (!StringUtil.isNullOrEmpty(order.getRelationId()))
-							taoBaoOrder.setRelationId(order.getRelationId());
-						if (!StringUtil.isNullOrEmpty(order.getSpecialId()))
-							taoBaoOrder.setSpecialId(order.getSpecialId());
-						taoBaoOrder.setLatestUpdateTime(new Date());
-						taoBaoOrderMapper.updateByPrimaryKeySelective(taoBaoOrder);
-						addTaoBaoOrderTradeMap(taoBaoOrder);
+						insertTaoBaoOrder(taoBaoOrder);
+					}
+				} else {
+					// 鎸塼radeId鏇存柊
+					for (TaoBaoOrder taoBaoOrder : list) {
+						TaoBaoOrder order = taoBaoOrderMapper.selectTaoBaoOrderByTradeId(taoBaoOrder.getTradeId());
+						if (order == null) {
+							taoBaoOrder.setLatestUpdateTime(new Date());
+							insertTaoBaoOrder(taoBaoOrder);
+						} else {
+							taoBaoOrder.setId(order.getId());
+							if (!StringUtil.isNullOrEmpty(order.getRelationId()))
+								taoBaoOrder.setRelationId(order.getRelationId());
+							if (!StringUtil.isNullOrEmpty(order.getSpecialId()))
+								taoBaoOrder.setSpecialId(order.getSpecialId());
+							taoBaoOrder.setLatestUpdateTime(new Date());
+							taoBaoOrderMapper.updateByPrimaryKeySelective(taoBaoOrder);
+							addTaoBaoOrderTradeMap(taoBaoOrder);
+						}
 					}
 				}
 			}
+			// 鎻愪氦浜嬪姟
+			transactionManager.commit(transactionStatus);
+		} catch (Exception e) {
+			e.printStackTrace();
+			transactionManager.rollback(transactionStatus);
 		}
 	}
 
@@ -211,4 +247,27 @@
 		return taoBaoOrderMapper.countBySettlementTime(minTime, maxTime);
 	}
 
+	@Override
+	public List<TaoBaoOrder> listByStateAndCreateTime(String state, Date minCreateTime, Date maxCreateTime) {
+		return taoBaoOrderMapper.listByStateAndCreateTime(state, minCreateTime.getTime(), maxCreateTime.getTime());
+	}
+
+	@Override
+	public Long countOrderByDay(String preDay) {
+		return taoBaoOrderMapper.countOrderByDay(preDay);
+	}
+
+	@Override
+	public void addTaoBaoOrderGoods(TaoBaoOrderGoods goods) {
+		if (goods == null || StringUtil.isNullOrEmpty(goods.getTradeId()))
+			return;
+		TaoBaoOrderGoods oldGoods = taoBaoOrderGoodsMapper.selectByTradeId(goods.getTradeId());
+		if (oldGoods != null)
+			return;
+
+		if (goods.getCreateTime() == null)
+			goods.setCreateTime(new Date());
+		taoBaoOrderGoodsMapper.insertSelective(goods);
+	}
+
 }

--
Gitblit v1.8.0