From 30d8e227e8d823b6c38c3b9c90ac2df03b63befe Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 25 二月 2025 16:41:22 +0800 Subject: [PATCH] 淘宝转链接口更新 --- fanli/src/main/java/com/yeshi/fanli/service/impl/order/tb/TaoBaoOrderServiceImpl.java | 518 +++++++++++++++++++++++++++++++-------------------------- 1 files changed, 283 insertions(+), 235 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 ce17e2b..81d525f 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 @@ -1,235 +1,283 @@ -package com.yeshi.fanli.service.impl.order.tb; - -import java.util.Date; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; - -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.TaoBaoOrderMapper; -import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoOrderTradeMapMapper; -import com.yeshi.fanli.entity.taobao.TaoBaoOrder; -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; - -@Service -public class TaoBaoOrderServiceImpl implements TaoBaoOrderService { - - @Resource - private TaoBaoOrderMapper taoBaoOrderMapper; - - @Resource - private RedisManager redisManager; - - @Resource - private TaoBaoOrderTradeMapMapper taoBaoOrderTradeMapMapper; - - @Resource(name = "transactionManager") - private DataSourceTransactionManager transactionManager; - - /** - * 鑾峰彇璁㈠崟鐨勫搱甯屽�� - * - * @param list - * @return - */ - - @Override - public void addTaoBaoOrderList(List<TaoBaoOrder> list) { - if (list == null || list.size() == 0) - return; - Map<String, List<TaoBaoOrder>> map = TaoBaoOrderUtil.classifyTaoBaoOrderByOrderId(list); - Iterator<String> its = map.keySet().iterator(); - while (its.hasNext()) { - String orderId = its.next(); - String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.addOrder, TaoBaoOrderUtil.getOrderDataHashCode(map.get(orderId))); - // redis鍋氶鐜囬檺鍒� - try { - if (Constant.IS_OUTNET) { - if (!StringUtil.isNullOrEmpty(redisManager.getCommonString(key))) { - continue; - } - } - - } catch (Exception e) { - - } - - addTaoBaoOrder(orderId, map.get(orderId)); - try { - // 6灏忔椂鍐呬笉鍐嶅鐞� - if (Constant.IS_OUTNET) - redisManager.cacheCommonString(key, "1", 60 * 60 * 6); - } catch (Exception e) { - - } - } - } - - @Transactional - private void addTaoBaoOrderTradeMap(TaoBaoOrder order) { - if (order == null || StringUtil.isNullOrEmpty(order.getTradeId())) - return; - TaoBaoOrderTradeMap map = new TaoBaoOrderTradeMap(); - map.setCreateTime(new Date()); - map.setTaoBaoOrder(order); - map.setTradeId(order.getTradeId()); - TaoBaoOrderTradeMap oldMap = taoBaoOrderTradeMapMapper.selectByTradeId(order.getTradeId()); - if (oldMap == null) - taoBaoOrderTradeMapMapper.insertSelective(map); - } - - @Transactional - @Override - public void addTaoBaoOrder(String orderId, List<TaoBaoOrder> list) { - 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()) { - LogHelper.test("妫�娴嬪埌浜ゆ槗ID閲嶅闂:" + orderId); - throw new Exception(); - } - - 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); - for (TaoBaoOrder taoBaoOrder : list) { - taoBaoOrder.setLatestUpdateTime(new Date()); - taoBaoOrderMapper.insertSelective(taoBaoOrder); - addTaoBaoOrderTradeMap(taoBaoOrder); - } - } else { - // 鎸塼radeId鏇存柊 - for (TaoBaoOrder taoBaoOrder : list) { - TaoBaoOrder order = taoBaoOrderMapper.selectTaoBaoOrderByTradeId(taoBaoOrder.getTradeId()); - if (order == null) { - 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); - } - } - } - } - // 鎻愪氦浜嬪姟 - transactionManager.commit(transactionStatus); - } catch (Exception e) { - transactionManager.rollback(transactionStatus); - } - } - - @Override - public List<TaoBaoOrder> getTaoBaoOrderByOrderId(String orderId) { - return taoBaoOrderMapper.selectTaoBaoOrderByOrderId(orderId); - } - - @Override - public double countEstimate(String date) throws Exception { - return taoBaoOrderMapper.countEstimate(date); - } - - @Override - public void bindSpecialIdAndRealtionId(String tradeId, String specialId, String realtionId) { - if (StringUtil.isNullOrEmpty(specialId) && StringUtil.isNullOrEmpty(realtionId)) - return; - TaoBaoOrder order = taoBaoOrderMapper.selectTaoBaoOrderByTradeId(tradeId); - if (order != null) { - TaoBaoOrder update = new TaoBaoOrder(); - update.setId(order.getId()); - update.setSpecialId(specialId); - update.setRelationId(realtionId); - update.setLatestUpdateTime(new Date()); - taoBaoOrderMapper.updateByPrimaryKeySelective(update); - } - } - - @Override - public TaoBaoOrder selectByTradeId(String tradeId) { - return taoBaoOrderMapper.selectTaoBaoOrderByTradeId(tradeId); - } - - @Override - public List<TaoBaoOrder> listAllOrder(int page, int pageSize) { - return taoBaoOrderMapper.listAllOrder(null, (page - 1) * pageSize, pageSize); - } - - @Override - public long countAllOrder() { - return taoBaoOrderMapper.countAllOrder(null); - } - - @Override - public TaoBaoOrder selectByPrimaryKey(Long id) { - return taoBaoOrderMapper.selectByPrimaryKey(id); - } - - @Override - public List<TaoBaoOrder> listBySettlementTime(Long minTime, Long maxTime, int page, int pageSize) { - - return taoBaoOrderMapper.listBySettlementTime(minTime, maxTime, (page - 1) * pageSize, pageSize); - } - - @Override - public Long countBySettlementTime(Long minTime, Long maxTime) { - return taoBaoOrderMapper.countBySettlementTime(minTime, maxTime); - } - - @Override - public List<TaoBaoOrder> listByStateAndCreateTime(String state, Date minCreateTime, Date maxCreateTime) { - return taoBaoOrderMapper.listByStateAndCreateTime(state, minCreateTime.getTime(), maxCreateTime.getTime()); - } - -} +package com.yeshi.fanli.service.impl.order.tb; + +import java.util.Date; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; + +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; + +@Service +public class TaoBaoOrderServiceImpl implements TaoBaoOrderService { + + @Resource + private TaoBaoOrderMapper taoBaoOrderMapper; + + @Resource + private RedisManager redisManager; + + @Resource + private TaoBaoOrderTradeMapMapper taoBaoOrderTradeMapMapper; + + @Resource(name = "transactionManager") + private DataSourceTransactionManager transactionManager; + + @Resource + private TaoBaoOrderGoodsMapper taoBaoOrderGoodsMapper; + + /** + * 鑾峰彇璁㈠崟鐨勫搱甯屽�� + * + * @param list + * @return + */ + + @Override + public void addTaoBaoOrderList(List<TaoBaoOrder> list) { + if (list == null || list.size() == 0) + return; + Map<String, List<TaoBaoOrder>> map = TaoBaoOrderUtil.classifyTaoBaoOrderByOrderId(list); + Iterator<String> its = map.keySet().iterator(); + while (its.hasNext()) { + String orderId = its.next(); + String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.addOrder, + TaoBaoOrderUtil.getOrderDataHashCode(map.get(orderId))); + // redis鍋氶鐜囬檺鍒� + try { + if (Constant.IS_OUTNET) { + if (!StringUtil.isNullOrEmpty(redisManager.getCommonString(key))) { + continue; + } + } + + } catch (Exception e) { + + } + + addTaoBaoOrder(orderId, map.get(orderId)); + try { + // 6灏忔椂鍐呬笉鍐嶅鐞� + if (Constant.IS_OUTNET) + redisManager.cacheCommonString(key, "1", 60 * 60 * 6); + } catch (Exception e) { + + } + } + } + + @Transactional + private void addTaoBaoOrderTradeMap(TaoBaoOrder order) { + if (order == null || StringUtil.isNullOrEmpty(order.getTradeId())) + return; + TaoBaoOrderTradeMap map = new TaoBaoOrderTradeMap(); + map.setCreateTime(new Date()); + map.setTaoBaoOrder(order); + map.setTradeId(order.getTradeId()); + TaoBaoOrderTradeMap oldMap = taoBaoOrderTradeMapMapper.selectByTradeId(order.getTradeId()); + if (oldMap == null) + taoBaoOrderTradeMapMapper.insertSelective(map); + } + + // 娣诲姞娣樺疂璁㈠崟 + private void insertTaoBaoOrder(TaoBaoOrder taoBaoOrder) { + //濡傛灉鍟嗗搧ID涓虹┖锛屽氨浠ヤ氦鏄揑D浣滀负鍟嗗搧ID + if(StringUtil.isNullOrEmpty(taoBaoOrder.getAuctionId())){ + taoBaoOrder.setAuctionId(taoBaoOrder.getTradeId()); + } + + taoBaoOrderMapper.insertSelective(taoBaoOrder); + addTaoBaoOrderTradeMap(taoBaoOrder); + addTaoBaoOrderGoods(taoBaoOrder.getGoods()); + } + + @Transactional + @Override + public void addTaoBaoOrder(String orderId, List<TaoBaoOrder> list) { + 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()); + } + + LogHelper.test("妫�娴嬪埌浜ゆ槗ID閲嶅闂:" + orderId); +// throw new Exception(); + } + + List<TaoBaoOrder> oldOrderList = taoBaoOrderMapper.selectTaoBaoOrderByOrderId(orderId); + if (oldOrderList == null || oldOrderList.size() == 0) { + for (TaoBaoOrder taoBaoOrder : list) { + taoBaoOrder.setLatestUpdateTime(new Date()); + insertTaoBaoOrder(taoBaoOrder); + } + } else { + if (StringUtil.isNullOrEmpty(oldOrderList.get(0).getTradeId())) { + taoBaoOrderMapper.deleteByOrderId(orderId); + for (TaoBaoOrder taoBaoOrder : list) { + taoBaoOrder.setLatestUpdateTime(new Date()); + 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); + } + } + + @Override + public List<TaoBaoOrder> getTaoBaoOrderByOrderId(String orderId) { + return taoBaoOrderMapper.selectTaoBaoOrderByOrderId(orderId); + } + + @Override + public double countEstimate(String date) throws Exception { + return taoBaoOrderMapper.countEstimate(date); + } + + @Override + public void bindSpecialIdAndRealtionId(String tradeId, String specialId, String realtionId) { + if (StringUtil.isNullOrEmpty(specialId) && StringUtil.isNullOrEmpty(realtionId)) + return; + TaoBaoOrder order = taoBaoOrderMapper.selectTaoBaoOrderByTradeId(tradeId); + if (order != null) { + TaoBaoOrder update = new TaoBaoOrder(); + update.setId(order.getId()); + update.setSpecialId(specialId); + update.setRelationId(realtionId); + update.setLatestUpdateTime(new Date()); + taoBaoOrderMapper.updateByPrimaryKeySelective(update); + } + } + + @Override + public TaoBaoOrder selectByTradeId(String tradeId) { + return taoBaoOrderMapper.selectTaoBaoOrderByTradeId(tradeId); + } + + @Override + public List<TaoBaoOrder> listAllOrder(int page, int pageSize) { + return taoBaoOrderMapper.listAllOrder(null, (page - 1) * pageSize, pageSize); + } + + @Override + public long countAllOrder() { + return taoBaoOrderMapper.countAllOrder(null); + } + + @Override + public TaoBaoOrder selectByPrimaryKey(Long id) { + return taoBaoOrderMapper.selectByPrimaryKey(id); + } + + @Override + public List<TaoBaoOrder> listBySettlementTime(Long minTime, Long maxTime, int page, int pageSize) { + + return taoBaoOrderMapper.listBySettlementTime(minTime, maxTime, (page - 1) * pageSize, pageSize); + } + + @Override + public Long countBySettlementTime(Long minTime, Long maxTime) { + 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); + } + + @Override + public void updateSelectiveByPrimaryKey(TaoBaoOrder order) { + taoBaoOrderMapper.updateByPrimaryKeySelective(order); + } + +} -- Gitblit v1.8.0