package com.yeshi.fanli.job.order.taobao;
|
|
import com.xxl.job.core.biz.model.ReturnT;
|
import com.xxl.job.core.handler.annotation.XxlJob;
|
import com.yeshi.fanli.dao.taobao.TaoBaoOrderBackUpDao;
|
import com.yeshi.fanli.entity.order.CommonOrder;
|
import com.yeshi.fanli.entity.taobao.TaoBaoOrder;
|
import com.yeshi.fanli.entity.taobao.TaoBaoOrderBackUp;
|
import com.yeshi.fanli.service.inter.order.CommonOrderService;
|
import com.yeshi.fanli.service.inter.order.tb.TaoBaoOrderService;
|
import com.yeshi.fanli.util.Constant;
|
import com.yeshi.fanli.util.StringUtil;
|
import com.yeshi.fanli.util.taobao.TaoKeOrderApiUtil;
|
import net.sf.json.JSONObject;
|
import org.springframework.stereotype.Component;
|
import org.yeshi.utils.TimeUtil;
|
|
import javax.annotation.Resource;
|
import java.util.*;
|
|
/**
|
* @author Administrator
|
* @title: TaoBaoOrderUpdateJob
|
* @description: 淘宝订单更新机制
|
* @date 2021/10/9 16:30
|
*/
|
@Component
|
public class TaoBaoOrderUpdateJob {
|
@Resource
|
private CommonOrderService commonOrderService;
|
@Resource
|
private TaoBaoOrderService taoBaoOrderService;
|
@Resource
|
private UpdateTBRelationAndSpecialOrderJob updateRelationAndSpecialOrderJob;
|
@Resource
|
private UpdateOrderJob updateOrderJob;
|
@Resource
|
private TaoBaoOrderBackUpDao taoBaoOrderBackUpDao;
|
|
//更新正在处于付款状态的订单
|
@XxlJob("order-taobao-updatePayStateOrder")
|
public ReturnT<String> updatePayStateOrder(String param) throws Exception {
|
//更新30天之前的
|
String startTime = "20200201";
|
if (!StringUtil.isNullOrEmpty(param)) {
|
startTime = param;
|
}
|
|
List<CommonOrder> commonOrders = commonOrderService.listPayStateOrder(Constant.SOURCE_TYPE_TAOBAO, new Date(TimeUtil.convertToTimeTemp(startTime, "yyyyMMdd")), new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24L * 30),1,200);
|
if (commonOrders == null || commonOrders.size() == 0) {
|
throw new Exception("没有订单需要更新");
|
}
|
|
Set<String> orderIds = new HashSet<>();
|
for (CommonOrder co : commonOrders) {
|
orderIds.add(co.getOrderNo());
|
}
|
|
for (String orderId : orderIds) {
|
updateTaoBaoOrder(orderId);
|
|
}
|
return ReturnT.SUCCESS;
|
}
|
|
public void updateTaoBaoOrder(String orderId) {
|
List<TaoBaoOrder> list = taoBaoOrderService.getTaoBaoOrderByOrderId(orderId);
|
//删除订单成功
|
for (int i = 0; i < list.size(); i++) {
|
//TODO 需要处理订单成功
|
if (list.get(i).getOrderState().equalsIgnoreCase("订单成功")) {
|
list.remove(i);
|
i--;
|
}
|
}
|
|
|
try {
|
//如果创建时间超过了90天的抛出异常
|
if (list.size() == 0 || TimeUtil.convertToTimeTemp(list.get(0).getCreateTime(), "yyyy-MM-dd HH:mm:ss") < System.currentTimeMillis() - 1000 * 60 * 60L * 24 * 90)
|
throw new Exception("需要本地更新");
|
long startTime = TimeUtil.convertToTimeTemp(list.get(0).getCreateTime(), "yyyy-MM-dd HH:mm:ss") - 1000L;
|
long endTime = TimeUtil.convertToTimeTemp(list.get(0).getCreateTime(), "yyyy-MM-dd HH:mm:ss") + 1000L;
|
updateRelationAndSpecialOrderJob.updateRelationAndSpecialOrder(startTime, endTime);
|
updateOrderJob.updateOrder(startTime, endTime);
|
} catch (Exception e) {
|
//从本地备份拿出订单
|
List<String> tradeIds = new ArrayList<>();
|
for (TaoBaoOrder order : list) {
|
tradeIds.add(order.getTradeId());
|
}
|
List<TaoBaoOrderBackUp> orderBackUps = taoBaoOrderBackUpDao.listByIds(tradeIds);
|
List<TaoBaoOrder> orderList = new ArrayList<>();
|
for (TaoBaoOrderBackUp backUp : orderBackUps) {
|
orderList.add(TaoKeOrderApiUtil.parseTaoBaoOrderNew(JSONObject.fromObject(backUp.getContent())));
|
}
|
updateRelationAndSpecialOrderJob.addRelationAndSpecialOrder(orderList);
|
updateOrderJob.addOrder(orderList);
|
}
|
}
|
|
|
}
|