修改定时拉取逻辑

master
bynt 3 years ago
parent 6af7ea1e04
commit 67d83fa97f

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

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

Loading…
Cancel
Save