From 6fdcc0c26dd33e87a024a69ed635d9aedb59cad6 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 07 一月 2020 12:02:50 +0800 Subject: [PATCH] 订单搜索引擎增量更新 --- fanli/src/main/java/com/yeshi/fanli/service/impl/money/extract/ExtractServiceImpl.java | 123 +++++++++++++++++++++++++++++++++++++++- 1 files changed, 119 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 4a5a8cd..6099276 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 @@ -172,12 +172,23 @@ updateExtract.setId(id); updateExtract.setState(Extract.STATE_PROCESSING); extractMapper.updateByPrimaryKeySelective(updateExtract); + // TODO 鏂扮増閮ㄧ讲鍚庡垹闄� + // 鏀瑰彉璧勯噾璁板綍鐘舵�� + UserMoneyDetail detail = userMoneyDetailService.selectByTypeAndUidAndIdentifyCode( + UserMoneyDetailTypeEnum.extract, find.getUserInfo().getId(), find.getId()); + if (detail != null) { + UserMoneyDetail update = new UserMoneyDetail(detail.getId()); + update.setShow(true); + update.setUpdateTime(new Date()); + userMoneyDetailMapper.updateByPrimaryKeySelective(update); + } + transfer(find, admin); // 鎻愮幇閫氳繃锛屾敮浠樺疂杞处 return null; } - @Transactional + @Transactional(rollbackFor = Exception.class) public synchronized void rejectExtract(long id, String reason, AdminUser admin) throws ObjectStateException, NotExistObjectException { Extract find = extractMapper.selectByPrimaryKey(id); @@ -317,7 +328,6 @@ LogHelper.userInfo("uid=" + user.getId() + ",鎻愪氦杞处鐢宠!"); } else {// 鏆傛椂涓嶈嚜鍔ㄦ彁鐜� // transfer(extract, null); - ; } return null; } @@ -416,7 +426,7 @@ response = alipayClient.execute(request); LogHelper.userErrorInfo("鎻愮幇:鏀粯瀹濋�氳繃鎻愮幇鎴愬姛-" + extract.getId()); } catch (AlipayApiException e) { - e.printStackTrace(); + LogHelper.errorDetailInfo(e, "鏀粯瀹濊浆璐﹀紓甯�:" + extract.getId(), ""); LogHelper.userErrorInfo("鎻愮幇:鏀粯瀹濇彁鐜板紓甯革細" + response + ",鎻愮幇淇℃伅" + GsonUtil.toJson(extract)); } @@ -531,7 +541,7 @@ return extractMapper.selectByPrimaryKey(id); } - @Transactional + @Transactional(rollbackFor = Exception.class) @Override public void checkExtract(Long uid) throws ExtractException { BigDecimal compensateMoney = extractMapper.computeCompensateByUid(uid); @@ -1077,6 +1087,111 @@ return listOpendIDs; } + @Override + public List<UserInfo> preAutoUserTo1212() 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); + // 浣欓鏈�浣庨檺鍒� + List<UserInfo> list = new ArrayList<UserInfo>(); + while (true) { + // 鏌ヨ婊¤冻鏉′欢 1銆�2 鐨剈id + List<UserInfo> listUser = userInfoService.getAutoExtractUserTo1212(page * pageSize, pageSize); + 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> getAutoExtractOpenIdsTo1212() throws Exception { + int page = 0; + int pageSize = 100; + int maxSize = 301; // appId + 瀹為檯openid300涓� + Date nowDate = new Date(); + // 鏉′欢3锛氳窛绂讳笂涓�娆℃垚鍔熼鍙栧井淇$孩鍖呭凡缁忚秴杩囦簡30澶╂椂闂达紝鍙湪绗�31澶╁啀娆′笅鍙戯紱 + String receivedDate = DateUtil.reduceDayTostring(30, nowDate); + // 鏉′欢4锛氳窛绂讳笂涓�娆℃湭鎴愬姛棰嗗彇寰俊绾㈠寘宸茬粡瓒呰繃浜�15澶╂椂闂达紝鍙湪绗�16澶╁啀娆′笅鍙戯紱 + String refundDate = DateUtil.reduceDayTostring(15, nowDate); + + // 鎻愮幇閲戦 + BigDecimal money = BigDecimal.valueOf(1); + + List<String> listOpendIDs = new ArrayList<String>(); + // 棣栬appID + listOpendIDs.add(Constant.getWXAccount(null, null).getAppId()); + + while (true) { + // 鏌ヨ婊¤冻鏉′欢 1銆�2 鐨剈id + List<UserInfo> listUser = userInfoService.getAutoExtractUserTo1212(page * pageSize, pageSize); + 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) { + UserInfo userInfo = subHongBaoByUid(uid, money, money); + if (userInfo != null) { + listOpendIDs.add(userInfo.getWxOpenId()); + if (listOpendIDs.size() >= maxSize) + break; + } + } + + if (listOpendIDs.size() >= maxSize) + break; + + page++; + } + return listOpendIDs; + } + @Transactional(rollbackFor = Exception.class) private UserInfo subHongBaoByUid(Long uid, BigDecimal money, BigDecimal minSurplus) { UserInfo userInfo = userInfoMapper.selectByPrimaryKeyForUpdate(uid); -- Gitblit v1.8.0