in lambda/src/main/java/cn/amazon/aws/rp/spapi/lambda/finances/ExecuteTaskForOneSeller.java [60:99]
public void executeTask(SellerCredentials sellerCredentials) {
try {
//get task
final String sellerTaskKey = sellerCredentials.getSeller_id() + "_" + TaskConstants.LIST_FINANCIAL_EVENTS;
List<SpApiTask> spApiTaskList = spApiTaskDao.getTask(sellerTaskKey);
if (spApiTaskList.isEmpty()) {
SpApiTask task = new SpApiTask();
task.setSellerKey(sellerTaskKey);
task.setSellerId(sellerCredentials.getSeller_id());
task.setStartTime("2020-08-01 00:00:00");
task.setEndTime("2020-08-02 00:00:00");
task.setTaskId(idWorker.nextId());
task.setTaskName(TaskConstants.LIST_FINANCIAL_EVENTS);
task.setExecuteStatus(StatusEnum.INIT.getStatus());
spApiTaskDao.addTask(task);
spApiTaskList.add(task);
}
SpApiTask apiTask = spApiTaskList.stream().findFirst().get();
logger.info("sellerId:{} queryTime:{}-{}", apiTask.getSellerId(), apiTask.getStartTime(), apiTask.getEndTime());
//check time
long diff = DateUtil.betweenTwoTime(DateUtil.toUtc(DateUtil.getLocalDateTime(apiTask.getEndTime())), DateUtil.toUtc(LocalDateTime.now()), ChronoUnit.HOURS);
if (diff < 1) {
return;
}
if (StatusEnum.WORKING.getStatus().intValue() == apiTask.getExecuteStatus().intValue()) {
return;
}
sellerCredentials.getMarketplaces().forEach(marketplace -> {
requestFinancesForOneMkt(marketplace, sellerCredentials, apiTask);
});
//update task
spApiTaskDao.upTaskStatus(sellerTaskKey, sellerCredentials.getSeller_id(), StatusEnum.WORKING.getStatus());
//add task
spApiTaskDao.addNewTask(apiTask, DateType.DAYS.name(), 2L);
} catch (Throwable throwable) {
logger.error("Api call failed", throwable);
}
}