package com.yeshi.fanli.job.order.taobao;
|
|
import java.util.Iterator;
|
import java.util.List;
|
import java.util.Map;
|
|
import javax.annotation.Resource;
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.stereotype.Component;
|
|
import com.yeshi.fanli.entity.taobao.TaoBaoOrder;
|
import com.yeshi.fanli.log.LogHelper;
|
import com.yeshi.fanli.service.inter.taobao.TaoBaoOrderService;
|
import com.yeshi.fanli.util.CMQManager;
|
import com.yeshi.fanli.util.Constant;
|
import com.yeshi.fanli.util.RedisManager;
|
import com.yeshi.fanli.util.StringUtil;
|
import com.yeshi.fanli.util.TimeUtil;
|
import com.yeshi.fanli.util.taobao.TaoBaoOrderUtil;
|
import com.yeshi.fanli.util.taobao.TaoKeOrderApiUtil;
|
|
/**
|
* 淘宝渠道订单更新
|
*
|
* @author hexiaohui
|
*
|
*/
|
@Component
|
public class UpdateTBRelationAndSpecialOrderJob {
|
|
@Resource
|
private TaoBaoOrderService taoBaoOrderService;
|
|
@Resource
|
private RedisManager redisManager;
|
|
/**
|
* 更新渠道订单
|
*
|
* @param fromPage
|
* 开始页码
|
* @param toPage
|
* 结束页码(每页100条数据)
|
*/
|
public void updateRelationAndSpecialOrder(long startTime, long endTime) {
|
List<TaoBaoOrder> list = TaoKeOrderApiUtil.getSpecialOrder(startTime, endTime);
|
List<TaoBaoOrder> list1 = TaoKeOrderApiUtil.getThirdSpecialOrder(startTime, endTime);
|
List<TaoBaoOrder> list2 = TaoKeOrderApiUtil.getRelationOrder(startTime, endTime);
|
List<TaoBaoOrder> list3 = TaoKeOrderApiUtil.getThirdRelationOrder(startTime, endTime);
|
if (list1 != null && list1.size() > 0)
|
list.addAll(list1);
|
if (list2 != null && list2.size() > 0)
|
list.addAll(list2);
|
if (list3 != null && list3.size() > 0)
|
list.addAll(list3);
|
// 爬取到的订单号
|
if (list != null)
|
for (TaoBaoOrder order : list) {
|
LogHelper.orderInfo("爬取到的订单号:" + order.getOrderId());
|
}
|
|
addRelationAndSpecialOrder(list);
|
}
|
|
private void addRelationAndSpecialOrder(List<TaoBaoOrder> orderList) {
|
try {
|
taoBaoOrderService.addTaoBaoOrderList(orderList);
|
} catch (Exception e) {
|
LogHelper.errorDetailInfo(e);
|
}
|
|
try {
|
Map<String, List<TaoBaoOrder>> map = TaoBaoOrderUtil.classifyTaoBaoOrderByOrderId(orderList);
|
if (map != null) {
|
Iterator<String> its = map.keySet().iterator();
|
while (its.hasNext()) {
|
String key = its.next();
|
List<TaoBaoOrder> orders = map.get(key);
|
String redisKey = "addorderqueue-" + key;
|
// redis做频率限制
|
try {
|
if (!StringUtil.isNullOrEmpty(redisManager.getCommonString(redisKey))) {
|
continue;
|
}
|
|
} catch (Exception e) {
|
|
}
|
|
LogHelper.orderInfo("添加到队列:" + key);
|
if (orders != null && orders.size() > 0 && System.currentTimeMillis()
|
- TimeUtil.convertToTimeTemp(orders.get(0).getCreateTime(), "yyyy-MM-dd HH:mm:ss") < 1000
|
* 60 * 10L)// 10分钟内产生的单作为新订单处理
|
CMQManager.getInstance().addTaoBaoNewOrderMsg(key);
|
else
|
CMQManager.getInstance().addTaoBaoOrderMsg(key);
|
|
try {
|
// 20分钟内不再处理
|
redisManager.cacheCommonString(redisKey, "1", 60 * 20);
|
} catch (Exception e) {
|
|
}
|
}
|
}
|
} catch (Exception e) {
|
LogHelper.errorDetailInfo(e);
|
}
|
}
|
|
// 每30s爬取一次
|
@Scheduled(cron = "0/30 * * * * ? ")
|
public void doJob1() {
|
if (!Constant.IS_TASK)
|
return;
|
// 爬取近20分钟的数据
|
LogHelper.orderInfo("爬单:30s爬取一次单");
|
long endTime = System.currentTimeMillis();
|
updateRelationAndSpecialOrder(endTime - 1000 * 60 * 20L, endTime);
|
}
|
|
// 每5分钟更新(近1天数据)
|
@Scheduled(cron = "0 0/5 * * * ? ")
|
public void doJob2() {
|
if (!Constant.IS_TASK)
|
return;
|
long endTime = System.currentTimeMillis();
|
updateRelationAndSpecialOrder(endTime - 1000 * 60 * 60 * 24L, endTime);
|
}
|
|
// 每个小时更新
|
@Scheduled(cron = "0 0 0/1 * * ? ")
|
public void doJob3() {
|
if (!Constant.IS_TASK)
|
return;
|
// Calendar calendar = Calendar.getInstance();
|
// int h = calendar.get(Calendar.HOUR_OF_DAY);
|
// // 每个小时更新100页数据
|
// int fromPage = h * 100;
|
// if (fromPage <= 0)
|
// fromPage = 11;
|
// int toPage = h * 100 + 100;
|
}
|
|
}
|