|
@@ -40,6 +40,7 @@ import org.springframework.stereotype.Component;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
* @author root
|
|
@@ -48,6 +49,15 @@ import java.util.List;
|
|
|
@Lazy(false)
|
|
|
public class TaobaoTask {
|
|
|
|
|
|
+ /**
|
|
|
+ * 爱贝源淘宝店铺 rst id
|
|
|
+ */
|
|
|
+ public static final int STORE_ID_IAMBERRY = 86;
|
|
|
+ /**
|
|
|
+ * 美塔璞儿淘宝店铺 rst id
|
|
|
+ */
|
|
|
+ public static final int STORE_ID_METAPURE = 186;
|
|
|
+
|
|
|
private static Logger logger = LoggerFactory.getLogger(TaobaoTask.class);
|
|
|
|
|
|
/** 是否允许淘宝抓取订单,true表示允许,false表示不允许 */
|
|
@@ -93,90 +103,116 @@ public class TaobaoTask {
|
|
|
if (endTime == null) {
|
|
|
endTime = DateTimeUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss");
|
|
|
}
|
|
|
- // 批次号
|
|
|
- String batchIdST = generateKeyUtil.getSalesBatchIdST();
|
|
|
- // 循环抓取
|
|
|
- boolean hasNext = true;
|
|
|
- long pageNo = 1;
|
|
|
- try {
|
|
|
- int total = 0;
|
|
|
- // 开始循环
|
|
|
- while (hasNext) {
|
|
|
- logger.info("【淘宝订单】抓取第{}页的数据......", pageNo);
|
|
|
- // 抓取淘宝数据
|
|
|
- TaobaoClient client = new DefaultTaobaoClient(TaobaoConfig.TAOBAO_URL, TaobaoConfig.appkey, TaobaoConfig.secret);
|
|
|
- TradesSoldIncrementGetRequest req = new TradesSoldIncrementGetRequest();
|
|
|
- req.setFields("tid,type,status,payment,orders,rx_audit_status");
|
|
|
- req.setStartModified(StringUtils.parseDateTime(startTime));
|
|
|
- req.setEndModified(StringUtils.parseDateTime(endTime));
|
|
|
- req.setStatus("WAIT_SELLER_SEND_GOODS");
|
|
|
- req.setPageNo(pageNo);
|
|
|
- req.setPageSize(40L);
|
|
|
- req.setUseHasNext(true);
|
|
|
- TradesSoldIncrementGetResponse rsp = null;
|
|
|
- try {
|
|
|
- rsp = client.execute(req, (String) AdminTaobaoAuthController.getToken().get("token"));
|
|
|
- logger.info("订单数据:{}, {}", rsp.getTotalResults(), rsp.getBody());
|
|
|
- } catch (ApiException e) {
|
|
|
- logger.error("", e);
|
|
|
- }
|
|
|
- if (rsp == null) {
|
|
|
- logger.error("【淘宝订单】请求淘宝服务器失败!");
|
|
|
- return;
|
|
|
- }
|
|
|
- // 判断数据
|
|
|
- List<Trade> trades1 = rsp.getTrades();
|
|
|
- if (trades1 == null) {
|
|
|
- break;
|
|
|
+
|
|
|
+ // 同时拉取爱贝源和美塔璞儿的淘宝店铺
|
|
|
+ int[] storeIds = new int[]{STORE_ID_IAMBERRY, STORE_ID_METAPURE};
|
|
|
+ for (int storeId : storeIds) {
|
|
|
+ // 销售公司 tb_rst_sales_company
|
|
|
+ int salesCompanyId;
|
|
|
+ String token = null;
|
|
|
+ if (storeId == STORE_ID_IAMBERRY) {
|
|
|
+ salesCompanyId = 1;
|
|
|
+ Map<String, Object> iamberryTokenMap = AdminTaobaoAuthController.getToken();
|
|
|
+ if (iamberryTokenMap != null) {
|
|
|
+ token = (String) iamberryTokenMap.get("token");
|
|
|
}
|
|
|
- if (trades1.size() == 0) {
|
|
|
- logger.info("【淘宝订单】数据请求完毕");
|
|
|
- break;
|
|
|
+ } else {
|
|
|
+ salesCompanyId = 16;
|
|
|
+ Map<String, Object> metaureTokenMap = AdminTaobaoAuthController.getMetaureToken();
|
|
|
+ if (metaureTokenMap != null) {
|
|
|
+ token = (String)metaureTokenMap.get("token");
|
|
|
}
|
|
|
- for (Trade trade : trades1) {
|
|
|
- Trade details = getOrderDetails(trade.getTid());
|
|
|
- if (details == null) {
|
|
|
- logger.error("【淘宝订单】{}获取订单详细数据失败", trade.getTid());
|
|
|
- return;
|
|
|
+ }
|
|
|
+ if (StringUtils.isEmpty(token)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 批次号
|
|
|
+ String batchIdST = generateKeyUtil.getSalesBatchIdST();
|
|
|
+ // 循环抓取
|
|
|
+ boolean hasNext = true;
|
|
|
+ long pageNo = 1;
|
|
|
+ try {
|
|
|
+ int total = 0;
|
|
|
+ // 开始循环
|
|
|
+ while (hasNext) {
|
|
|
+ logger.info("【淘宝订单】抓取第{}页的数据......", pageNo);
|
|
|
+ // 抓取淘宝数据
|
|
|
+ TaobaoClient client = new DefaultTaobaoClient(TaobaoConfig.TAOBAO_URL, TaobaoConfig.appkey, TaobaoConfig.secret);
|
|
|
+ TradesSoldIncrementGetRequest req = new TradesSoldIncrementGetRequest();
|
|
|
+ req.setFields("tid,type,status,payment,orders,rx_audit_status");
|
|
|
+ req.setStartModified(StringUtils.parseDateTime(startTime));
|
|
|
+ req.setEndModified(StringUtils.parseDateTime(endTime));
|
|
|
+ req.setStatus("WAIT_SELLER_SEND_GOODS");
|
|
|
+ req.setPageNo(pageNo);
|
|
|
+ req.setPageSize(40L);
|
|
|
+ req.setUseHasNext(true);
|
|
|
+ TradesSoldIncrementGetResponse rsp = null;
|
|
|
+ try {
|
|
|
+ rsp = client.execute(req, token);
|
|
|
+ logger.info("订单数据:{}, {}", rsp.getTotalResults(), rsp.getBody());
|
|
|
+ } catch (ApiException e) {
|
|
|
+ logger.error("", e);
|
|
|
+ }
|
|
|
+ if (rsp == null) {
|
|
|
+ logger.error("【淘宝订单】请求淘宝服务器失败!");
|
|
|
+ break;
|
|
|
}
|
|
|
- // 组装数据
|
|
|
- SalesOrder salesOrder = packageOrder(details);
|
|
|
- if (salesOrder != null) {
|
|
|
- salesOrder.setSalesBatchId(batchIdST);
|
|
|
- salesOrderService.addOrder(salesOrder, "创建订单(淘宝拉取订单)");
|
|
|
- total ++;
|
|
|
+ // 判断数据
|
|
|
+ List<Trade> trades1 = rsp.getTrades();
|
|
|
+ if (trades1 == null) {
|
|
|
+ break;
|
|
|
}
|
|
|
+ if (trades1.size() == 0) {
|
|
|
+ logger.info("【淘宝订单】数据请求完毕");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ for (Trade trade : trades1) {
|
|
|
+ Trade details = getOrderDetails(trade.getTid(), token);
|
|
|
+ if (details == null) {
|
|
|
+ logger.error("【淘宝订单】{}获取订单详细数据失败", trade.getTid());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 组装数据
|
|
|
+ SalesOrder salesOrder = packageOrder(details, storeId, salesCompanyId);
|
|
|
+ if (salesOrder != null) {
|
|
|
+ salesOrder.setSalesBatchId(batchIdST);
|
|
|
+ salesOrderService.addOrder(salesOrder, "创建订单(淘宝拉取订单)");
|
|
|
+ total ++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 迭代数据
|
|
|
+ hasNext = rsp.getHasNext();
|
|
|
+ pageNo ++;
|
|
|
}
|
|
|
- // 迭代数据
|
|
|
- hasNext = rsp.getHasNext();
|
|
|
- pageNo ++;
|
|
|
- }
|
|
|
|
|
|
- OrderSyncLog orderSyncLog = new OrderSyncLog();
|
|
|
- orderSyncLog.setSyncPlatId(1);
|
|
|
- orderSyncLog.setSyncLogType(1);
|
|
|
- orderSyncLog.setSyncLogMode(1);
|
|
|
- orderSyncLog.setSyncLogRecentNum(total); //同步总数量
|
|
|
- orderSyncLog.setSyncLogErrorNum(0); //同步失败数量
|
|
|
- orderSyncLog.setSyncLogMsg("拉取天猫订单"); //备注
|
|
|
- orderSyncLogMapper.save(orderSyncLog);
|
|
|
+ OrderSyncLog orderSyncLog = new OrderSyncLog();
|
|
|
+ orderSyncLog.setSyncPlatId(1);
|
|
|
+ orderSyncLog.setSyncLogType(1);
|
|
|
+ orderSyncLog.setSyncLogMode(1);
|
|
|
+ orderSyncLog.setSyncLogRecentNum(total); //同步总数量
|
|
|
+ orderSyncLog.setSyncLogErrorNum(0); //同步失败数量
|
|
|
+ orderSyncLog.setSyncLogMsg("拉取天猫订单:店铺id" + storeId); //备注
|
|
|
+ orderSyncLogMapper.save(orderSyncLog);
|
|
|
|
|
|
- RedisUtils.put("TAOBAO_SYNC_TIME", endTime);
|
|
|
- } catch (Exception e) {
|
|
|
- logger.error("", e);
|
|
|
- OrderSyncLog orderSyncLog = new OrderSyncLog();
|
|
|
- orderSyncLog.setSyncPlatId(1);
|
|
|
- orderSyncLog.setSyncLogType(1);
|
|
|
- orderSyncLog.setSyncLogMode(1);
|
|
|
- orderSyncLog.setSyncLogRecentNum(1); //同步总数量
|
|
|
- orderSyncLog.setSyncLogErrorNum(1); //同步失败数量
|
|
|
- orderSyncLog.setSyncLogMsg("拉取天猫订单"); //备注
|
|
|
- orderSyncLog.setSyncLogErrorMsg(e.getMessage());
|
|
|
- orderSyncLogMapper.save(orderSyncLog);
|
|
|
+ RedisUtils.put("TAOBAO_SYNC_TIME", endTime);
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error("", e);
|
|
|
+ OrderSyncLog orderSyncLog = new OrderSyncLog();
|
|
|
+ orderSyncLog.setSyncPlatId(1);
|
|
|
+ orderSyncLog.setSyncLogType(1);
|
|
|
+ orderSyncLog.setSyncLogMode(1);
|
|
|
+ orderSyncLog.setSyncLogRecentNum(1); //同步总数量
|
|
|
+ orderSyncLog.setSyncLogErrorNum(1); //同步失败数量
|
|
|
+ orderSyncLog.setSyncLogMsg("拉取天猫订单:店铺id" + storeId); //备注
|
|
|
+ orderSyncLog.setSyncLogErrorMsg(e.getMessage());
|
|
|
+ orderSyncLogMapper.save(orderSyncLog);
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
|
|
|
- public Trade getOrderDetails(Long tid) {
|
|
|
+ public Trade getOrderDetails(Long tid, String token) {
|
|
|
try {
|
|
|
Thread.sleep(1000);
|
|
|
} catch (InterruptedException e) {
|
|
@@ -189,19 +225,19 @@ public class TaobaoTask {
|
|
|
req.setIncludeOaid("true");
|
|
|
TradeFullinfoGetResponse rsp = null;
|
|
|
try {
|
|
|
- rsp = detailsClient.execute(req, (String) AdminTaobaoAuthController.getToken().get("token"));
|
|
|
+ rsp = detailsClient.execute(req, token);
|
|
|
logger.info("淘宝数据:{}", JSONObject.toJSONString(rsp));
|
|
|
JSONObject body = JSONObject.parseObject(rsp.getBody());
|
|
|
JSONObject resp = body.getJSONObject("trade_fullinfo_get_response");
|
|
|
JSONObject trade = resp.getJSONObject("trade");
|
|
|
- return convert(trade);
|
|
|
+ return convert(trade, token);
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
- public static Trade convert(JSONObject data) {
|
|
|
+ public static Trade convert(JSONObject data, String token) {
|
|
|
logger.info("转换数据:{}", data.toJSONString());
|
|
|
Trade trade = new Trade();
|
|
|
trade.setReceiverState(data.getString("receiver_state"));
|
|
@@ -278,7 +314,7 @@ public class TaobaoTask {
|
|
|
req.setQueryList(list2);
|
|
|
TopOaidDecryptResponse rsp = null;
|
|
|
try {
|
|
|
- rsp = client.execute(req, (String) AdminTaobaoAuthController.getToken().get("token"));
|
|
|
+ rsp = client.execute(req, token);
|
|
|
logger.info("请求解密后的数据:{}", rsp.getBody());
|
|
|
JSONObject body = JSONObject.parseObject(rsp.getBody());
|
|
|
JSONObject topOaidDecryptResponse = body.getJSONObject("top_oaid_decrypt_response");
|
|
@@ -314,10 +350,13 @@ public class TaobaoTask {
|
|
|
|
|
|
/**
|
|
|
* 数据还需要完善地址库编码、成本价格
|
|
|
+ *
|
|
|
* @param trade
|
|
|
+ * @param storeId
|
|
|
+ * @param salesCompanyId
|
|
|
* @return
|
|
|
*/
|
|
|
- private SalesOrder packageOrder(Trade trade) {
|
|
|
+ private SalesOrder packageOrder(Trade trade, int storeId, int salesCompanyId) {
|
|
|
String tid = trade.getTid().toString();
|
|
|
SalesOrder order = new SalesOrder();
|
|
|
order.setSalesOrderId(tid);
|
|
@@ -380,8 +419,8 @@ public class TaobaoTask {
|
|
|
order.setSalesCreateTime(trade.getCreated());
|
|
|
order.setSalesAdminRemark(trade.getSellerMemo());
|
|
|
order.setSalesUserRemark(trade.getBuyerMemo());
|
|
|
- order.setSalesCompanyId(1);
|
|
|
- order.setSalesStoreId(86);
|
|
|
+ order.setSalesCompanyId(salesCompanyId);
|
|
|
+ order.setSalesStoreId(storeId);
|
|
|
order.setSalesType(1);
|
|
|
order.setSalesAddType(4);
|
|
|
order.setSalesAdminId(10135);
|