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