修改定时拉取逻辑

master
bynt 3 years ago
parent 6af7ea1e04
commit 67d83fa97f

@ -151,7 +151,7 @@ public class SlaverTest {
@Test @Test
public void findUserList() { public void findUserList() {
taoBaoRdsPushService.turnOnPushService("50008301b31rk9pRecixBK0WlkFRHzfvTjjwFOTePoX17adf61appvZWSIB0F8x8sx",15L); taoBaoRdsPushService.turnOnPushService("500081016120qBdWPaxsHcjj146e0b2bUdPxTGleKn3kssGebCTtcLo4ZTDVE07pAg",20L);
} }
@Test @Test

@ -1,6 +1,7 @@
package com.hchbox.task; package com.hchbox.task;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.ArrayListMultimap;
@ -27,6 +28,9 @@ import lombok.RequiredArgsConstructor;
import lombok.Setter; import lombok.Setter;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Slice;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
@ -42,7 +46,6 @@ import java.util.concurrent.atomic.AtomicInteger;
/** /**
* *
*
* @author Enzo * @author Enzo
* @date : 2021/6/23 * @date : 2021/6/23
*/ */
@ -81,7 +84,7 @@ public class SyncTask {
*/ */
@Async("pullOrderTaskExecutor") @Async("pullOrderTaskExecutor")
@Scheduled(cron = "0 0/10 * * * *") @Scheduled(cron = "0 0/10 * * * *")
//@Scheduled(cron = "0 0/1 * * * *") // @Scheduled(cron = "0 0/1 * * * *")
public void pullOrdersRegularly() throws ApiException, SecretException, NoSuchFieldException, IllegalAccessException { public void pullOrdersRegularly() throws ApiException, SecretException, NoSuchFieldException, IllegalAccessException {
if (flag != null && flag) { if (flag != null && flag) {
long startTime = System.currentTimeMillis(); long startTime = System.currentTimeMillis();
@ -108,58 +111,68 @@ public class SyncTask {
Date startTime; Date startTime;
Date endTime = new Date(); Date endTime = new Date();
Multimap<String, Trade> multimap = ArrayListMultimap.create(); Multimap<String, Trade> multimap = ArrayListMultimap.create();
Pageable pageable = PageRequest.of(DefaultNumberConstants.ZERO_NUMBER, DefaultNumberConstants.FIVE_THOUSAND);
// 第一次任务往前10分钟 // 第一次任务往前10分钟
startTime = lastUpdateTime == null ? DateUtil.offsetMinute(date, -DefaultNumberConstants.TEN_NUMBER) : lastUpdateTime; startTime = lastUpdateTime == null ? DateUtil.offsetMinute(date, -DefaultNumberConstants.TEN_NUMBER) : lastUpdateTime;
lastUpdateTime = endTime; lastUpdateTime = endTime;
List<JdpTrade> jdpOrderList = jdpTradeService.findJdpOrderByTime(startTime, endTime); while (true) {
log.info("================== the orderList size as {} =======================", jdpOrderList.size()); // 分页查询数据
if (!CollectionUtils.isEmpty(jdpOrderList)) { Slice<JdpTrade> jdpTradeSlice = jdpTradeService.findJdpOrderByTime(startTime, endTime, pageable);
for (JdpTrade jdpTrade : jdpOrderList) { List<JdpTrade> jdpOrderList = jdpTradeSlice.getContent();
if (jdpTrade != null && jdpTrade.getJdpResponse() != null) { if (CollUtil.isNotEmpty(jdpOrderList)) {
// 淘宝用此方式转换为trade log.info("================== the orderList size as {} =======================", jdpOrderList.size());
TradeFullinfoGetResponse rsp = TaobaoUtils.parseResponse(jdpTrade.getJdpResponse(), if (!CollectionUtils.isEmpty(jdpOrderList)) {
TradeFullinfoGetResponse.class); for (JdpTrade jdpTrade : jdpOrderList) {
Trade trade = rsp.getTrade(); if (jdpTrade != null && jdpTrade.getJdpResponse() != null) {
multimap.put(trade.getSellerNick(), trade); // 淘宝用此方式转换为trade
TradeFullinfoGetResponse rsp = TaobaoUtils.parseResponse(jdpTrade.getJdpResponse(),
TradeFullinfoGetResponse.class);
Trade trade = rsp.getTrade();
multimap.put(trade.getSellerNick(), trade);
}
}
} }
} // 卖家昵称分组
} Map<String, Collection<Trade>> tradeListMap = multimap.asMap();
// 卖家昵称分组 List<String> fieldName = Lists.newArrayList(
Map<String, Collection<Trade>> tradeListMap = multimap.asMap(); TaoBaoDataMethodConstants.BUYER_NICK,
List<String> fieldName = Lists.newArrayList( TaoBaoDataMethodConstants.BUYER_EMAIL,
TaoBaoDataMethodConstants.BUYER_NICK, TaoBaoDataMethodConstants.RECEIVER_NAME,
TaoBaoDataMethodConstants.BUYER_EMAIL, TaoBaoDataMethodConstants.RECEIVER_PHONE,
TaoBaoDataMethodConstants.RECEIVER_NAME, TaoBaoDataMethodConstants.BUYER_ALIPAY_NO,
TaoBaoDataMethodConstants.RECEIVER_PHONE, TaoBaoDataMethodConstants.RECEIVER_ADDRESS,
TaoBaoDataMethodConstants.BUYER_ALIPAY_NO, TaoBaoDataMethodConstants.ENCRYPT_ALI_PAY_ID);
TaoBaoDataMethodConstants.RECEIVER_ADDRESS, TopTrade syncTask;
TaoBaoDataMethodConstants.ENCRYPT_ALI_PAY_ID); for (Map.Entry<String, Collection<Trade>> stringListEntry : tradeListMap.entrySet()) {
TopTrade syncTask; String sellerNick = stringListEntry.getKey();
for (Map.Entry<String, Collection<Trade>> stringListEntry : tradeListMap.entrySet()) { SellerAccountDTO sellerAccount = sellerAccountService.getAccountByNick(sellerNick);
String sellerNick = stringListEntry.getKey(); // 判断账号
SellerAccountDTO sellerAccount = sellerAccountService.getAccountByNick(sellerNick); if (sellerAccount != null && sellerAccount.getStatus() == DefaultNumberConstants.ONE_NUMBER) {
// 判断账号 List<Trade> trades = Lists.newArrayList(stringListEntry.getValue());
if (sellerAccount != null && sellerAccount.getStatus() == DefaultNumberConstants.ONE_NUMBER) { log.info(" ========== the analyze the order quantity size as {} ========== ", trades.size());
List<Trade> trades = Lists.newArrayList(stringListEntry.getValue()); if (!CollectionUtils.isEmpty(trades)) {
log.info(" ========== the analyze the order quantity size as {} ========== ", trades.size()); TaoBaoEncryption.decrypt(miProperties, sellerAccount.getSessionKey(), trades, fieldName);
if (!CollectionUtils.isEmpty(trades)) { // 手机号码单独解密
TaoBaoEncryption.decrypt(miProperties, sellerAccount.getSessionKey(), trades, fieldName); TaoBaoEncryption.decrypt(miProperties, sellerAccount.getSessionKey(), trades, TaoBaoDataMethodConstants.PHONE,
// 手机号码单独解密 Trade.class.getDeclaredField(TaoBaoDataMethodConstants.RECEIVER_MOBILE));
TaoBaoEncryption.decrypt(miProperties, sellerAccount.getSessionKey(), trades, TaoBaoDataMethodConstants.PHONE, for (Trade trade : trades) {
Trade.class.getDeclaredField(TaoBaoDataMethodConstants.RECEIVER_MOBILE)); syncTask = new TopTrade();
for (Trade trade : trades) { BeanUtil.copyProperties(trade, syncTask);
syncTask = new TopTrade(); List<TopOrder> topOrders = CommConverter.CommConverter(trade.getOrders(), TopOrder.class);
BeanUtil.copyProperties(trade, syncTask); boolean createResult = topTradeService.createTrade(syncTask, sellerAccount, topOrders);
List<TopOrder> topOrders = CommConverter.CommConverter(trade.getOrders(), TopOrder.class); if (createResult && Boolean.TRUE.equals(TradeEnum.checkStatus(trade.getStatus()))) {
boolean createResult = topTradeService.createTrade(syncTask, sellerAccount, topOrders); memberService.synMemberByTrade(syncTask);
if (createResult && Boolean.TRUE.equals(TradeEnum.checkStatus(trade.getStatus()))) { }
memberService.synMemberByTrade(syncTask); }
} }
} }
} }
} }
if (!jdpTradeSlice.hasNext()) {
break;
}
pageable = jdpTradeSlice.nextPageable();
} }
count.decrementAndGet(); count.decrementAndGet();
} }
} }

Loading…
Cancel
Save