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