|
|
|
@ -3,7 +3,9 @@ package com.hchbox.task;
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
|
|
import cn.hutool.core.date.DateTime;
|
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
|
|
import com.google.common.collect.ArrayListMultimap;
|
|
|
|
|
import com.google.common.collect.Lists;
|
|
|
|
|
import com.google.common.collect.Multimap;
|
|
|
|
|
import com.hchbox.config.MiProperties;
|
|
|
|
|
import com.hchbox.constant.DefaultNumberConstants;
|
|
|
|
|
import com.hchbox.constant.TaoBaoDataMethodConstants;
|
|
|
|
@ -31,9 +33,11 @@ import org.springframework.scheduling.annotation.Scheduled;
|
|
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.Collection;
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -77,7 +81,7 @@ public class SyncTask {
|
|
|
|
|
*/
|
|
|
|
|
@Async("pullOrderTaskExecutor")
|
|
|
|
|
@Scheduled(cron = "0 0/10 * * * *")
|
|
|
|
|
// @Scheduled(cron = "0 0/1 * * * *")
|
|
|
|
|
//@Scheduled(cron = "0 0/1 * * * *")
|
|
|
|
|
public void pullOrdersRegularly() throws ApiException, SecretException, NoSuchFieldException, IllegalAccessException {
|
|
|
|
|
if (flag != null && flag) {
|
|
|
|
|
long startTime = System.currentTimeMillis();
|
|
|
|
@ -94,16 +98,16 @@ public class SyncTask {
|
|
|
|
|
}
|
|
|
|
|
syncOrder(date);
|
|
|
|
|
long endTime = System.currentTimeMillis();
|
|
|
|
|
log.info("====== [ the pull order end time consuming as {} ] ======", endTime - startTime);
|
|
|
|
|
log.info("====== [ the pull order end time consuming as {} ] ======", endTime - startTime);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void syncOrder(Date date) throws ApiException, SecretException, NoSuchFieldException, IllegalAccessException {
|
|
|
|
|
count.incrementAndGet();
|
|
|
|
|
List<Trade> list = new ArrayList<>();
|
|
|
|
|
Date startTime;
|
|
|
|
|
Date endTime = new Date();
|
|
|
|
|
Multimap<String, Trade> multimap = ArrayListMultimap.create();
|
|
|
|
|
// 第一次任务往前10分钟
|
|
|
|
|
startTime = lastUpdateTime == null ? DateUtil.offsetMinute(date, -DefaultNumberConstants.TEN_NUMBER) : lastUpdateTime;
|
|
|
|
|
lastUpdateTime = endTime;
|
|
|
|
@ -115,13 +119,13 @@ public class SyncTask {
|
|
|
|
|
// 淘宝用此方式转换为trade
|
|
|
|
|
TradeFullinfoGetResponse rsp = TaobaoUtils.parseResponse(jdpTrade.getJdpResponse(),
|
|
|
|
|
TradeFullinfoGetResponse.class);
|
|
|
|
|
list.add(rsp.getTrade());
|
|
|
|
|
Trade trade = rsp.getTrade();
|
|
|
|
|
multimap.put(trade.getSellerNick(), trade);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 卖家昵称分组
|
|
|
|
|
Map<String, List<Trade>> tradeListMap = list.stream().
|
|
|
|
|
collect(Collectors.groupingBy(Trade::getSellerNick));
|
|
|
|
|
Map<String, Collection<Trade>> tradeListMap = multimap.asMap();
|
|
|
|
|
List<String> fieldName = Lists.newArrayList(
|
|
|
|
|
TaoBaoDataMethodConstants.BUYER_NICK,
|
|
|
|
|
TaoBaoDataMethodConstants.BUYER_EMAIL,
|
|
|
|
@ -131,12 +135,12 @@ public class SyncTask {
|
|
|
|
|
TaoBaoDataMethodConstants.RECEIVER_ADDRESS,
|
|
|
|
|
TaoBaoDataMethodConstants.ENCRYPT_ALI_PAY_ID);
|
|
|
|
|
TopTrade syncTask;
|
|
|
|
|
for (Map.Entry<String, List<Trade>> stringListEntry : tradeListMap.entrySet()) {
|
|
|
|
|
for (Map.Entry<String, Collection<Trade>> stringListEntry : tradeListMap.entrySet()) {
|
|
|
|
|
String sellerNick = stringListEntry.getKey();
|
|
|
|
|
SellerAccountDTO sellerAccount = sellerAccountService.getAccountByNick(sellerNick);
|
|
|
|
|
// 判断账号
|
|
|
|
|
if (sellerAccount != null && sellerAccount.getStatus() == DefaultNumberConstants.ONE_NUMBER) {
|
|
|
|
|
List<Trade> trades = stringListEntry.getValue();
|
|
|
|
|
List<Trade> trades = Lists.newArrayList(stringListEntry.getValue());
|
|
|
|
|
log.info(" ========== the analyze the order quantity size as {} ========== ", trades.size());
|
|
|
|
|
if (!CollectionUtils.isEmpty(trades)) {
|
|
|
|
|
TaoBaoEncryption.decrypt(miProperties, sellerAccount.getSessionKey(), trades, fieldName);
|
|
|
|
@ -157,4 +161,5 @@ public class SyncTask {
|
|
|
|
|
}
|
|
|
|
|
count.decrementAndGet();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|