From c91ccd847a5c31391ddd41b3e464bc2ca02b7ac6 Mon Sep 17 00:00:00 2001
From: yujian <yujian@123.com>
Date: 星期三, 16 十月 2019 16:47:49 +0800
Subject: [PATCH] 专题标签  + 微信红包

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/money/extract/ExtractServiceImpl.java |   73 ++++++++++++++++++++++++++++++++++--
 1 files changed, 69 insertions(+), 4 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/money/extract/ExtractServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/money/extract/ExtractServiceImpl.java
index 4b479cc..7558cbb 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/money/extract/ExtractServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/money/extract/ExtractServiceImpl.java
@@ -954,11 +954,70 @@
 	}
 	
 	
+	
+	@Override
+	public List<UserInfo> preAutoUser() throws Exception {
+		int page = 0;
+		int pageSize = 100;
+		int maxSize = 300;
+		Date nowDate = new Date();
+		// 鏉′欢3锛氳窛绂讳笂涓�娆℃垚鍔熼鍙栧井淇$孩鍖呭凡缁忚秴杩囦簡30澶╂椂闂达紝鍙湪绗�31澶╁啀娆′笅鍙戯紱
+		String receivedDate = DateUtil.reduceDayTostring(30, nowDate);
+		// 鏉′欢4锛氳窛绂讳笂涓�娆℃湭鎴愬姛棰嗗彇寰俊绾㈠寘宸茬粡瓒呰繃浜�15澶╂椂闂达紝鍙湪绗�16澶╁啀娆′笅鍙戯紱
+		String refundDate = DateUtil.reduceDayTostring(15, nowDate);
+		
+		// 浣欓鏈�浣庨檺鍒�
+		BigDecimal minSurplus = BigDecimal.valueOf(Constant.AUTO_EXTRACT_MIN_SURPLUS);
+		
+		List<UserInfo> list = new ArrayList<UserInfo>();
+		
+		while (true) {
+			// 鏌ヨ婊¤冻鏉′欢 1銆�2 鐨剈id
+			List<UserInfo> listUser = userInfoService.getAutoExtractUserIds(page * pageSize, pageSize, minSurplus);
+			if (listUser == null || listUser.isEmpty())
+				break;
+			
+			List<Long> listId = new ArrayList<Long>();
+			for (UserInfo userInfo: listUser) {
+				listId.add(userInfo.getId());
+			}
+			
+			// 鏌ヨ璁板綍鏄惁婊¤冻
+			List<Long> listValid = extractWeiXinRecordService.getValidUsers(listId, receivedDate, refundDate);
+			if (listValid == null || listValid.isEmpty()) {
+				page ++;
+				continue;
+			}
+			
+			for (Long uid: listValid) {
+				if (list.size() >= maxSize)
+					break;
+				for (UserInfo userInfo: listUser) {
+					if (list.size() >= maxSize)
+						break;
+					
+					if (userInfo.getId().longValue() == uid.longValue()) {
+						list.add(userInfo);
+						break;
+					}
+				}
+			}
+			
+			if (list.size() >= maxSize)
+				break;
+			
+			page ++;
+		}
+		return list;
+	}
+	
+	
+	
 	@Override
 	public List<String> getAutoExtractOpenIds() throws Exception {
 		int page = 0;
 		int pageSize = 100;
-		int maxSize = 300;
+		int maxSize = 301; // appId + 瀹為檯openid300涓�
 		Date nowDate = new Date();
 		// 鏉′欢3锛氳窛绂讳笂涓�娆℃垚鍔熼鍙栧井淇$孩鍖呭凡缁忚秴杩囦簡30澶╂椂闂达紝鍙湪绗�31澶╁啀娆′笅鍙戯紱
 		String receivedDate = DateUtil.reduceDayTostring(30, nowDate);
@@ -976,9 +1035,14 @@
 		
 		while (true) {
 			// 鏌ヨ婊¤冻鏉′欢 1銆�2 鐨剈id
-			List<Long> listId = userInfoService.getAutoExtractUserIds(page * pageSize, pageSize, minSurplus);
-			if (listId == null || listId.isEmpty())
+			List<UserInfo> listUser = userInfoService.getAutoExtractUserIds(page * pageSize, pageSize, minSurplus);
+			if (listUser == null || listUser.isEmpty())
 				break;
+			
+			List<Long> listId = new ArrayList<Long>();
+			for (UserInfo userInfo: listUser) {
+				listId.add(userInfo.getId());
+			}
 			
 			// 鏌ヨ璁板綍鏄惁婊¤冻
 			List<Long> listValid = extractWeiXinRecordService.getValidUsers(listId, receivedDate, refundDate);
@@ -1009,7 +1073,8 @@
 	@Transactional(rollbackFor = Exception.class)
 	private UserInfo subHongBaoByUid(Long uid, BigDecimal money, BigDecimal minSurplus) {
 		UserInfo userInfo = userInfoMapper.selectByPrimaryKeyForUpdate(uid);
-		if (userInfo != null && userInfo.getMyHongBao().compareTo(minSurplus) >= 0) {
+		if (userInfo != null && !StringUtil.isNullOrEmpty(userInfo.getWxOpenId())
+				&& !StringUtil.isNullOrEmpty(userInfo.getWxUnionId()) && userInfo.getMyHongBao().compareTo(minSurplus) >= 0) {
 			// 寰俊鎻愮幇璁板綍
 			ExtractWeiXinRecord extractRecord = new ExtractWeiXinRecord();
 			extractRecord.setUid(uid);

--
Gitblit v1.8.0