From 51a4ff5d777028d52a19c314a99f796334cb7b51 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期六, 23 十一月 2019 18:30:01 +0800
Subject: [PATCH] 配置文件修改

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsDetailV2ServiceImpl.java |  231 +++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 206 insertions(+), 25 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsDetailV2ServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsDetailV2ServiceImpl.java
index 586109a..cdad78e 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsDetailV2ServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsDetailV2ServiceImpl.java
@@ -2,6 +2,7 @@
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.Date;
@@ -12,23 +13,24 @@
 
 import javax.annotation.Resource;
 
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import com.yeshi.fanli.dao.goods.taobao.dataoke.DaTaoKeGoodsDetailV2Dao;
 import com.yeshi.fanli.dto.dataoke.DaTaoKeGoodsResult;
+import com.yeshi.fanli.dto.dataoke.DingDongQiangDTO;
 import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
 import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2;
 import com.yeshi.fanli.log.LogHelper;
 import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailV2Service;
-import com.yeshi.fanli.util.BeanUtil;
-import com.yeshi.fanli.util.Constant;
-import com.yeshi.fanli.util.MoneyBigDecimalUtil;
 import com.yeshi.fanli.util.RedisManager;
 import com.yeshi.fanli.util.StringUtil;
 import com.yeshi.fanli.util.TimeUtil;
 import com.yeshi.fanli.util.dataoke.DaTaoKeApiUtil;
 import com.yeshi.fanli.util.taobao.DaTaoKeUtil;
+import com.yeshi.fanli.util.taobao.TaoBaoUtil;
 
 @Service
 public class DaTaoKeGoodsDetailV2ServiceImpl implements DaTaoKeGoodsDetailV2Service {
@@ -41,18 +43,38 @@
 	@Override
 	public void startSyncGoods() {
 		LogHelper.test("澶ф窐瀹㈠悓姝ュ紑濮�");
-		DaTaoKeGoodsResult result = DaTaoKeApiUtil.listAll("1");
-		int page = 0;
-		while (result.getGoodsList() != null && result.getGoodsList().size() > 0) {
-			System.out.println(page++);
-			for (DaTaoKeDetailV2 v2 : result.getGoodsList())
-				daTaoKeGoodsDetailV2Dao.saveWithCommision(v2);
-			result = DaTaoKeApiUtil.listAll(result.getPageId());
-			try {
-				Thread.sleep(10);
-			} catch (InterruptedException e) {
-				e.printStackTrace();
+
+		int totalCount = 0;
+		try {
+			DaTaoKeGoodsResult result = DaTaoKeApiUtil.listAll("1");
+			int page = 0;
+
+			while (result.getGoodsList() != null && result.getGoodsList().size() > 0) {
+				System.out.println(page++);
+				totalCount += result.getGoodsList().size();
+				for (DaTaoKeDetailV2 v2 : result.getGoodsList()) {
+					try {
+						daTaoKeGoodsDetailV2Dao.saveWithCommision(v2);
+					} catch (Exception e) {
+					}
+				}
+
+				try {
+					result = DaTaoKeApiUtil.listAll(result.getPageId());
+				} catch (Exception e) {
+					result = DaTaoKeApiUtil.listAll(result.getPageId());
+				}
+
+				try {
+					Thread.sleep(10);
+				} catch (InterruptedException e) {
+					e.printStackTrace();
+				}
 			}
+		} catch (Exception e) {
+			LogHelper.errorDetailInfo(e, "澶ф窐瀹㈠叏閲忔暟鎹嚭閿�", "");
+		} finally {
+			LogHelper.test("澶ф窐瀹㈡柊鐗堝晢鍝佸悓姝ユ暟閲�:" + totalCount);
 		}
 	}
 
@@ -98,7 +120,7 @@
 		String startTime = null;
 		DaTaoKeDetailV2 latest = daTaoKeGoodsDetailV2Dao.selectLatest();
 		if (latest != null) {
-			startTime = latest.getCreateTime();
+			startTime = TimeUtil.getGernalTime(latest.getCreateTime().getTime(), "yyyy-MM-dd HH:mm:ss");
 		}
 		DaTaoKeGoodsResult result = DaTaoKeApiUtil.getNewGoodsList(null, startTime, null);
 		while (!StringUtil.isNullOrEmpty(result.getPageId())) {
@@ -192,10 +214,10 @@
 	}
 
 	@Override
-	public List<DaTaoKeDetailV2> listPreShareHotGoods(int page) {
+	public List<DaTaoKeDetailV2> listPreShareHotGoods(int page, BigDecimal minCommission) {
 		Map<Long, DaTaoKeDetailV2> map = new HashMap<>();
-		List<DaTaoKeDetailV2> list = daTaoKeGoodsDetailV2Dao.listPreShareHotGoods((page - 1) * Constant.PAGE_SIZE,
-				Constant.PAGE_SIZE, "updateTime");
+		List<DaTaoKeDetailV2> list = daTaoKeGoodsDetailV2Dao.listPreShareHotGoods((page - 1) * 100, 100, "hotPush",
+				minCommission);
 		System.out.println(list);
 		for (DaTaoKeDetailV2 v2 : list) {
 			map.put(v2.getId(), v2);
@@ -222,20 +244,179 @@
 		return finalList;
 	}
 
+	private boolean canAddToTLJBuyGoods(DaTaoKeDetailV2 v2) {
+		return TaoBaoUtil.canAddToTLJBuyGoods(TaoBaoUtil.convert(v2));
+	}
+
 	@Override
 	public List<DaTaoKeDetailV2> listPreTLJBuyGoods(int page) {
 		if (page == 1) {
-			DaTaoKeGoodsResult result = DaTaoKeApiUtil.getRankingList(DaTaoKeApiUtil.RANK_TYPE_DAY);
-			List<DaTaoKeDetailV2> goodsList = new ArrayList<>();
-			for (DaTaoKeDetailV2 v2 : result.getGoodsList()) {
-				BigDecimal commision = MoneyBigDecimalUtil
-						.div(MoneyBigDecimalUtil.mul(v2.getActualPrice(), v2.getCommissionRate()), new BigDecimal(100));
-				if (commision.multiply(new BigDecimal("0.7")).compareTo(new BigDecimal("1.01")) >= 0)
-					goodsList.add(v2);
+			List<DaTaoKeDetailV2> listPreGoodsList = new ArrayList<>();
+			// 鐑攢姒�
+			DaTaoKeGoodsResult result = DaTaoKeApiUtil.getRankingList(DaTaoKeApiUtil.RANK_TYPE_HOT, null);
+			if (result != null && result.getGoodsList() != null)
+				listPreGoodsList.addAll(result.getGoodsList());
+			// 澶嶈喘姒�
+			result = DaTaoKeApiUtil.getRankingList(DaTaoKeApiUtil.RANK_TYPE_REBUY, null);
+			if (result != null && result.getGoodsList() != null)
+				listPreGoodsList.addAll(result.getGoodsList());
+			// 缁煎悎鎼滅储
+			try {
+				result = DaTaoKeApiUtil.search("", null, null, null, 1, 200, DaTaoKeApiUtil.SORT_DEFAULT);
+				if (result == null)
+					throw new Exception();
+			} catch (Exception e) {// 寮傚父閲嶅涓�娆�
+				result = DaTaoKeApiUtil.search("", null, null, null, 1, 200, DaTaoKeApiUtil.SORT_DEFAULT);
 			}
+
+			if (result != null && result.getGoodsList() != null)
+				listPreGoodsList.addAll(result.getGoodsList());
+
+			List<DaTaoKeDetailV2> goodsList = new ArrayList<>();
+			for (DaTaoKeDetailV2 v2 : listPreGoodsList) {
+				if (canAddToTLJBuyGoods(v2)) {
+					Date time = new Date(TimeUtil.convertToTimeTemp(v2.getCouponEndTime(), "yyyy-MM-dd HH:mm:ss"));
+
+					Date targetTime = new Date(TimeUtil
+							.convertToTimeTemp(TimeUtil.getGernalTime(
+									System.currentTimeMillis() + 1000 * 60 * 60 * 24 * 2L, "yyyy-MM-dd"), "yyyy-MM-dd")
+							- 1000L);
+					// 濡傛灉鏄噷鏅ㄩ�夋嫨鐨�
+					if (Calendar.getInstance().get(Calendar.HOUR_OF_DAY) < 12) {// 涓婂崍閫夋嫨鐨勮绠椾负褰撳ぉ鐨�
+						targetTime = new Date(TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(
+								System.currentTimeMillis() + 1000 * 60 * 60 * 24 * 1L, "yyyy-MM-dd"), "yyyy-MM-dd")
+								- 1000L);
+					}
+					if (time.getTime() >= targetTime.getTime())
+						goodsList.add(v2);
+				}
+			}
+
+			// 鍘婚噸
+			Map<Long, DaTaoKeDetailV2> goodsMap = new HashMap<>();
+			for (DaTaoKeDetailV2 v2 : goodsList) {
+				goodsMap.put(v2.getGoodsId(), v2);
+			}
+			goodsList.clear();
+			for (Iterator<Long> its = goodsMap.keySet().iterator(); its.hasNext();) {
+				goodsList.add(goodsMap.get(its.next()));
+			}
+			Comparator<DaTaoKeDetailV2> cm = new Comparator<DaTaoKeDetailV2>() {
+
+				@Override
+				public int compare(DaTaoKeDetailV2 o1, DaTaoKeDetailV2 o2) {
+					return o1.getActualPrice().compareTo(o2.getActualPrice());
+				}
+			};
+			Collections.sort(goodsList, cm);
 			return goodsList;
 		} else
 			return new ArrayList<>();
 	}
 
+	@Override
+	public void deleteOutOfDate(Date minTime) {
+		daTaoKeGoodsDetailV2Dao.listAndRemoveByMinUpdateTime(minTime, 0, 3000);
+	}
+
+	@Override
+	public long countByMinUpdateTime(Date minTime) {
+		return daTaoKeGoodsDetailV2Dao.countByMinUpdateTime(minTime);
+	}
+
+	@Cacheable(value = "daTaoKeGoodsCache", key = "'getDingDongQiangData'")
+	@Override
+	public List<DingDongQiangDTO> getDingDongQiangData() {
+		List<DingDongQiangDTO> list = null;
+		int count = 0;
+		while ((list == null || list.size() == 0) && count < 3) {
+			count++;
+			list = DaTaoKeUtil.getDingDongQiang();
+		}
+		if (list == null)
+			return null;
+		return list;
+	}
+
+	@Async
+	private void updateGoods(Long id) {
+		DaTaoKeDetailV2 v2 = DaTaoKeApiUtil.getGoodsDetail(id);
+		if (v2 != null)
+			daTaoKeGoodsDetailV2Dao.save(v2);
+	}
+
+	private List<DaTaoKeDetailV2> getDefaultDingDongQiang() {
+		// 鎸夋洿鏂版椂闂村姞
+		DaTaoKeGoodsResult result = DaTaoKeApiUtil.getRankingList(DaTaoKeApiUtil.RANK_TYPE_TIME, null);
+		if (result != null && result.getGoodsList().size() > 0) {
+			List<DaTaoKeDetailV2> finalList = new ArrayList<>();
+			Collections.shuffle(result.getGoodsList());
+			finalList.addAll(result.getGoodsList().subList(0,
+					result.getGoodsList().size() > 8 ? 8 : result.getGoodsList().size()));
+			for (DaTaoKeDetailV2 detail : finalList) {
+				detail.setCouponReceiveNum(detail.getCouponTotalNum() - (int) (200 + Math.random() * 1000));
+				if (detail.getCouponTotalNum() - detail.getCouponReceiveNum() <= 0)
+					detail.setCouponReceiveNum(detail.getCouponTotalNum());
+			}
+			return finalList;
+		}
+		return null;
+	}
+
+	@Cacheable(value = "daTaoKeGoodsCache", key = "'getDingDongQiangData-'+#time")
+	@Override
+	public List<DaTaoKeDetailV2> getDingDongQiangData(String time) {
+		List<DingDongQiangDTO> list = getDingDongQiangData();
+		if (list == null || list.size() == 0) {
+			return getDefaultDingDongQiang();
+		}
+
+		Map<String, DingDongQiangDTO> map = new HashMap<>();
+		for (DingDongQiangDTO dto : list)
+			map.put(dto.getTime(), dto);
+
+		DingDongQiangDTO dto = map.get(time);
+		if (dto != null) {
+			List<Long> idList = new ArrayList<>();
+			for (DaTaoKeDetailV2 td : dto.getGoodsList())
+				idList.add(td.getId());
+			List<DaTaoKeDetailV2> finalList = listByIds(idList);
+			if (finalList.size() != idList.size()) {
+				for (Long id : idList)
+					updateGoods(id);
+				finalList = listByIds(idList);
+			}
+
+			// 濡傛灉鍟嗗搧鏁板皬浜�4锛岄渶瑕佸啀鍔犲晢鍝�
+			if (finalList == null || finalList.size() <= 3) {
+				// 鎸夋洿鏂版椂闂村姞
+				List<DaTaoKeDetailV2> latestList = daTaoKeGoodsDetailV2Dao.listPreShareHotGoods(0, 50, "updateTime",
+						new BigDecimal("0.5"));
+				if (latestList != null && latestList.size() > 0) {
+					Collections.shuffle(latestList);
+					finalList.addAll(latestList.subList(0, latestList.size() > 8 ? 8 : latestList.size()));
+				}
+			}
+
+			for (DaTaoKeDetailV2 detail : finalList) {
+				detail.setCouponReceiveNum(detail.getCouponTotalNum() - (int) (200 + Math.random() * 1000));
+				if (detail.getCouponTotalNum() - detail.getCouponReceiveNum() <= 0)
+					detail.setCouponReceiveNum(detail.getCouponTotalNum());
+			}
+			return finalList;
+		} else {
+			return getDefaultDingDongQiang();
+		}
+	}
+
+	@Override
+	public List<String> getDingDongQiangTime() {
+		List<DingDongQiangDTO> list = getDingDongQiangData();
+		List<String> dateList = new ArrayList<>();
+		for (DingDongQiangDTO dto : list) {
+			dateList.add(dto.getTime());
+		}
+		return dateList;
+	}
+
 }

--
Gitblit v1.8.0