package com.yeshi.fanli.job;
|
|
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.TaoKeApiUtil;
|
|
/**
|
* 淘宝渠道订单更新
|
*
|
* @author hexiaohui
|
*
|
*/
|
@Component
|
public class UpdateRelationAndSpecialOrderJob {
|
|
@Resource
|
private TaoBaoOrderService taoBaoOrderService;
|
|
@Resource
|
private RedisManager redisManager;
|
|
private void updateRelationOrder(long startTime) {
|
String startTimeStr = TimeUtil.getGernalTime(startTime, "yyyy-MM-dd HH:mm:ss");
|
List<TaoBaoOrder> orderList = TaoKeApiUtil.getTaoBaoRelationOrder(startTimeStr, Constant.TAOBAO_AUTH_APPKEY,
|
Constant.TAOBAO_AUTH_APPSECRET);
|
addRelationAndSpecialOrder(orderList);
|
}
|
|
private void updateSpecialOrder(long startTime) {
|
String startTimeStr = TimeUtil.getGernalTime(startTime, "yyyy-MM-dd HH:mm:ss");
|
List<TaoBaoOrder> orderList = TaoKeApiUtil.getTaoBaoSpecialOrder(startTimeStr, Constant.TAOBAO_AUTH_APPKEY,
|
Constant.TAOBAO_AUTH_APPSECRET);
|
addRelationAndSpecialOrder(orderList);
|
}
|
|
private void addRelationAndSpecialOrder(List<TaoBaoOrder> orderList) {
|
try {
|
taoBaoOrderService.addTaoBaoOrderList(orderList);
|
} catch (Exception e) {
|
try {
|
LogHelper.errorDetailInfo(e);
|
} catch (Exception e1) {
|
e1.printStackTrace();
|
}
|
}
|
|
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) {
|
|
}
|
|
CMQManager.getInstance().addTaoBaoOrderMsg(key, orders);
|
|
try {
|
// 20分钟内不再处理
|
redisManager.cacheCommonString(redisKey, "1", 60 * 20);
|
} catch (Exception e) {
|
|
}
|
}
|
}
|
} catch (Exception e) {
|
try {
|
LogHelper.errorDetailInfo(e);
|
} catch (Exception e1) {
|
e1.printStackTrace();
|
}
|
}
|
}
|
|
// 每30s爬取一次
|
@Scheduled(cron = "0/30 * * * * ? ")
|
public void doJob1() {
|
if (!Constant.IS_TASK)
|
return;
|
long currentTime = System.currentTimeMillis();
|
updateRelationOrder(currentTime);
|
updateSpecialOrder(currentTime);
|
}
|
|
}
|