package com.yeshi.fanli.job.order.dy;
|
|
import com.xxl.job.core.biz.model.ReturnT;
|
import com.xxl.job.core.handler.annotation.XxlJob;
|
import com.yeshi.fanli.dto.mq.order.body.CommonOrderMQMsg;
|
import com.yeshi.fanli.entity.dy.DYOrder;
|
import com.yeshi.fanli.exception.dy.DYOrderException;
|
import com.yeshi.fanli.log.LogHelper;
|
import com.yeshi.fanli.service.inter.order.dy.DYOrderService;
|
import com.yeshi.fanli.util.Constant;
|
import com.yeshi.fanli.util.RedisKeyEnum;
|
import com.yeshi.fanli.util.RedisManager;
|
import com.yeshi.fanli.util.StringUtil;
|
import com.yeshi.fanli.util.goods.douyin.CSJCPSApiUtil;
|
import com.yeshi.fanli.util.goods.douyin.vo.DYOrderFilter;
|
import com.yeshi.fanli.util.goods.douyin.vo.DYOrderResult;
|
import com.yeshi.fanli.util.mq.cmq.order.OrdersCMQManager;
|
import com.yeshi.fanli.util.mq.rabbit.RabbitmqManager;
|
import org.springframework.stereotype.Component;
|
|
import javax.annotation.Resource;
|
import java.util.List;
|
|
//从抖音爬取订单更新
|
@Component
|
public class UpdateDYOrderJob {
|
|
@Resource
|
private DYOrderService dyOrderService;
|
|
@Resource
|
private RedisManager redisManager;
|
|
@Resource
|
private OrdersCMQManager ordersCMQManager;
|
|
|
/**
|
* 保存订单
|
*
|
* @param dyOrderList
|
*/
|
public void saveDYOrders(List<DYOrder> dyOrderList) {
|
//5分钟不更新就报警
|
try {
|
redisManager.cacheCommonString(RedisKeyEnum.monitor.getKey() + Constant.SOURCE_TYPE_DY, "1", 60 * 5);
|
} catch (Exception e) {
|
}
|
|
for (DYOrder order : dyOrderList) {
|
LogHelper.orderInfo("抖音订单:" + order.getOrder_id() + "-" + order.getFlow_point());
|
try {
|
dyOrderService.addOrder(order);
|
/**
|
* 做频率限制
|
*/
|
String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.DYOrder, order.getOrder_id() + "");
|
String result = redisManager.getCommonString(key);
|
// 判断
|
if (StringUtil.isNullOrEmpty(result)) {
|
ordersCMQManager.addOrder(new CommonOrderMQMsg(order.getOrder_id() + "", Constant.SOURCE_TYPE_DY));
|
redisManager.cacheCommonString(key, "1", 60 * 60 * 2);// 2小时内不再更新
|
}
|
} catch (DYOrderException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
|
/**
|
* 快速订单更新(爬取本小时内的单,每分钟一次)
|
*/
|
@XxlJob("updateDYOrderHandler")
|
public ReturnT<String> updateDYOrder(String param) throws Exception {
|
if ("1".equalsIgnoreCase(param)) {// 更新5分钟内的订单
|
LogHelper.job("开始爬取抖音订单");
|
DYOrderFilter filter = new DYOrderFilter();
|
filter.setCursor("0");
|
filter.setEnd_time(System.currentTimeMillis() / 1000);
|
filter.setStart_time(filter.getEnd_time() - 60 * 5);
|
//商品分销订单
|
filter.setOrder_type(DYOrderFilter.ORDER_TYPE_GOODS);
|
updateOrder(filter);
|
//直播分销订单
|
filter.setOrder_type(DYOrderFilter.ORDER_TYPE_LIVE);
|
updateOrder(filter);
|
} else if ("1hour".equalsIgnoreCase(param)) {// 更新1小时内的订单
|
DYOrderFilter filter = new DYOrderFilter();
|
filter.setCursor("0");
|
filter.setEnd_time(System.currentTimeMillis() / 1000);
|
filter.setStart_time(filter.getEnd_time() - 60 * 60);
|
//商品分销订单
|
filter.setOrder_type(DYOrderFilter.ORDER_TYPE_GOODS);
|
updateOrder(filter);
|
//直播分销订单
|
filter.setOrder_type(DYOrderFilter.ORDER_TYPE_LIVE);
|
updateOrder(filter);
|
} else if ("1day".equalsIgnoreCase(param)) {// 更新1天内的订单
|
DYOrderFilter filter = new DYOrderFilter();
|
filter.setCursor("0");
|
filter.setEnd_time(System.currentTimeMillis() / 1000);
|
filter.setStart_time(filter.getEnd_time() - 60 * 60 * 24);
|
//商品分销订单
|
filter.setOrder_type(DYOrderFilter.ORDER_TYPE_GOODS);
|
updateOrder(filter);
|
//直播分销订单
|
filter.setOrder_type(DYOrderFilter.ORDER_TYPE_LIVE);
|
updateOrder(filter);
|
} else if ("3day".equalsIgnoreCase(param)) {// 更新最近3天更新的数据
|
DYOrderFilter filter = new DYOrderFilter();
|
filter.setCursor("0");
|
filter.setEnd_time(System.currentTimeMillis() / 1000);
|
filter.setStart_time(filter.getEnd_time() - 60 * 60 * 24 * 10);
|
//商品分销订单
|
filter.setOrder_type(DYOrderFilter.ORDER_TYPE_GOODS);
|
updateOrder(filter);
|
//直播分销订单
|
filter.setOrder_type(DYOrderFilter.ORDER_TYPE_LIVE);
|
updateOrder(filter);
|
}
|
|
return ReturnT.SUCCESS;
|
}
|
|
public void updateOrder(DYOrderFilter filter) {
|
if (filter.getSize() == null) {
|
filter.setSize(50);
|
}
|
filter.setTime_type("update");
|
DYOrderResult result = CSJCPSApiUtil.orderList(filter);
|
if (result != null && result.getOrders() != null) {
|
saveDYOrders(result.getOrders());
|
}
|
if (result != null && !StringUtil.isNullOrEmpty(result.getCursor())) {
|
filter.setCursor(result.getCursor());
|
updateOrder(filter);
|
}
|
|
}
|
|
|
}
|