| | |
| | |
|
| | | import javax.annotation.Resource;
|
| | |
|
| | | import com.yeshi.fanli.util.*;
|
| | | import org.springframework.stereotype.Component;
|
| | |
|
| | | import com.xxl.job.core.biz.model.ReturnT;
|
| | |
| | | import com.yeshi.fanli.entity.taobao.TaoBaoOrder;
|
| | | import com.yeshi.fanli.log.LogHelper;
|
| | | import com.yeshi.fanli.service.inter.order.tb.TaoBaoOrderService;
|
| | | import com.yeshi.fanli.util.CMQManager;
|
| | | import com.yeshi.fanli.util.RedisKeyEnum;
|
| | | import com.yeshi.fanli.util.RedisManager;
|
| | | import com.yeshi.fanli.util.StringUtil;
|
| | | import org.yeshi.utils.TimeUtil;
|
| | | import com.yeshi.fanli.util.taobao.TaoBaoOrderUtil;
|
| | | import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
|
| | |
| | |
|
| | | /**
|
| | | * 淘宝渠道订单更新
|
| | | * |
| | | * @author hexiaohui
|
| | | *
|
| | | * @author hexiaohui
|
| | | */
|
| | | @Component
|
| | | public class UpdateTBRelationAndSpecialOrderJob {
|
| | |
|
| | | @Resource
|
| | | private TaoBaoOrderService taoBaoOrderService;
|
| | | @Resource
|
| | | private TaoBaoOrderService taoBaoOrderService;
|
| | |
|
| | | @Resource
|
| | | private RedisManager redisManager;
|
| | | @Resource
|
| | | private RedisManager redisManager;
|
| | |
|
| | | /**
|
| | | * 更新渠道订单
|
| | | * |
| | | * @param fromPage
|
| | | * 开始页码
|
| | | * @param toPage
|
| | | * 结束页码(每页100条数据)
|
| | | */
|
| | | public void updateRelationAndSpecialOrder(long startTime, long endTime) {
|
| | | List<TaoBaoOrder> list = TaoKeOrderApiUtil.getTaoBaoSpecialOrderList(startTime, endTime, 1);
|
| | | List<TaoBaoOrder> list1 = TaoKeOrderApiUtil.getTaoBaoRelationOrderList(startTime, endTime, 1);
|
| | | if (list1 != null && list1.size() > 0)
|
| | | list.addAll(list1);
|
| | | // 爬取到的订单号
|
| | | if (list != null)
|
| | | for (TaoBaoOrder order : list) {
|
| | | LogHelper.orderInfo("会员/渠道爬取到的订单号:" + order.getOrderId());
|
| | | }
|
| | | /**
|
| | | * 更新渠道订单
|
| | | * @param startTime
|
| | | * @param endTime
|
| | | */
|
| | | public void updateRelationAndSpecialOrder(long startTime, long endTime) {
|
| | | List<TaoBaoOrder> list = TaoKeOrderApiUtil.getTaoBaoSpecialOrderList(startTime, endTime, 1);
|
| | | List<TaoBaoOrder> list1 = TaoKeOrderApiUtil.getTaoBaoRelationOrderList(startTime, endTime, 1);
|
| | | if (list1 != null && list1.size() > 0)
|
| | | list.addAll(list1);
|
| | | // 爬取到的订单号
|
| | | if (list != null)
|
| | | for (TaoBaoOrder order : list) {
|
| | | LogHelper.orderInfo("会员/渠道爬取到的订单号:" + order.getOrderId());
|
| | | }
|
| | |
|
| | | addRelationAndSpecialOrder(list);
|
| | | }
|
| | | addRelationAndSpecialOrder(list);
|
| | | }
|
| | |
|
| | | /**
|
| | | * 按付款时间查询
|
| | | * |
| | | * @param startTime
|
| | | * @param endTime
|
| | | */
|
| | | public void updateRelationAndSpecialPaidOrder(long startTime, long endTime) {
|
| | | List<TaoBaoOrder> list = TaoKeOrderApiUtil.getTaoBaoSpecialOrderList(startTime, endTime, 2);
|
| | | List<TaoBaoOrder> list1 = TaoKeOrderApiUtil.getTaoBaoRelationOrderList(startTime, endTime, 2);
|
| | | if (list1 != null && list1.size() > 0)
|
| | | list.addAll(list1);
|
| | | // 爬取到的订单号
|
| | | if (list != null)
|
| | | for (TaoBaoOrder order : list) {
|
| | | LogHelper.orderInfo("会员/渠道爬取到的订单号:" + order.getOrderId());
|
| | | }
|
| | | /**
|
| | | * 按付款时间查询
|
| | | *
|
| | | * @param startTime
|
| | | * @param endTime
|
| | | */
|
| | | public void updateRelationAndSpecialPaidOrder(long startTime, long endTime) {
|
| | | List<TaoBaoOrder> list = TaoKeOrderApiUtil.getTaoBaoSpecialOrderList(startTime, endTime, 2);
|
| | | List<TaoBaoOrder> list1 = TaoKeOrderApiUtil.getTaoBaoRelationOrderList(startTime, endTime, 2);
|
| | | if (list1 != null && list1.size() > 0)
|
| | | list.addAll(list1);
|
| | | // 爬取到的订单号
|
| | | if (list != null)
|
| | | for (TaoBaoOrder order : list) {
|
| | | LogHelper.orderInfo("会员/渠道爬取到的订单号:" + order.getOrderId());
|
| | | }
|
| | |
|
| | | addRelationAndSpecialOrder(list);
|
| | | }
|
| | | addRelationAndSpecialOrder(list);
|
| | | }
|
| | |
|
| | | public void updateRelationAndSpecialSettleOrder(long startTime, long endTime) {
|
| | | List<TaoBaoOrder> list = TaoKeOrderApiUtil.getTaoBaoSpecialOrderList(startTime, endTime, 3);
|
| | | List<TaoBaoOrder> list1 = TaoKeOrderApiUtil.getTaoBaoRelationOrderList(startTime, endTime, 3);
|
| | | if (list1 != null && list1.size() > 0)
|
| | | list.addAll(list1);
|
| | | // 爬取到的订单号
|
| | | if (list != null)
|
| | | for (TaoBaoOrder order : list) {
|
| | | LogHelper.orderInfo("会员/渠道爬取到的订单号:" + order.getOrderId());
|
| | | }
|
| | | addRelationAndSpecialOrder(list);
|
| | | }
|
| | | public void updateRelationAndSpecialSettleOrder(long startTime, long endTime) {
|
| | | List<TaoBaoOrder> list = TaoKeOrderApiUtil.getTaoBaoSpecialOrderList(startTime, endTime, 3);
|
| | | List<TaoBaoOrder> list1 = TaoKeOrderApiUtil.getTaoBaoRelationOrderList(startTime, endTime, 3);
|
| | | if (list1 != null && list1.size() > 0)
|
| | | list.addAll(list1);
|
| | | // 爬取到的订单号
|
| | | 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);
|
| | | }
|
| | | private void addRelationAndSpecialOrder(List<TaoBaoOrder> orderList) {
|
| | | //5分钟不更新就报警
|
| | | try {
|
| | | redisManager.cacheCommonString(RedisKeyEnum.monitor.getKey() + Constant.SOURCE_TYPE_TAOBAO, "1", 60 * 5);
|
| | | } catch (Exception 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 = RedisKeyEnum.getRedisKey(RedisKeyEnum.addOrderQueue,
|
| | | TaoBaoOrderUtil.getOrderDataHashCode(orders));
|
| | | // redis做频率限制
|
| | | try {
|
| | | if (!StringUtil.isNullOrEmpty(redisManager.getCommonString(redisKey))) {
|
| | | continue;
|
| | | }
|
| | | try {
|
| | | taoBaoOrderService.addTaoBaoOrderList(orderList);
|
| | | } catch (Exception e) {
|
| | | LogHelper.errorDetailInfo(e);
|
| | | }
|
| | |
|
| | | } catch (Exception 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 = RedisKeyEnum.getRedisKey(RedisKeyEnum.addOrderQueue,
|
| | | TaoBaoOrderUtil.getOrderDataHashCode(orders));
|
| | | // 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) {
|
| | | 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);
|
| | |
|
| | | }
|
| | | }
|
| | | }
|
| | | } catch (Exception e) {
|
| | | LogHelper.errorDetailInfo(e);
|
| | | }
|
| | | }
|
| | | try {
|
| | | // 20分钟内不再处理
|
| | | redisManager.cacheCommonString(redisKey, "1", 60 * 20);
|
| | | } catch (Exception e) {
|
| | |
|
| | | @XxlJob("updateTBRelationAndSpecialOrderHandler")
|
| | | public ReturnT<String> updateTBRelationAndSpecialOrder(String param) throws Exception {
|
| | | if ("1".equalsIgnoreCase(param)) {// 爬取近20分钟的数据
|
| | | doJob1();
|
| | | } else if ("1day".equalsIgnoreCase(param)) {// 每5分钟更新(近1天数据)
|
| | | doJob2();
|
| | | }
|
| | | return ReturnT.SUCCESS;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | } catch (Exception e) {
|
| | | LogHelper.errorDetailInfo(e);
|
| | | }
|
| | | }
|
| | |
|
| | | // 每30s爬取一次
|
| | | public void doJob1() {
|
| | | LogHelper.job("爬单:30s爬取一次单");
|
| | | Date systemDate = TaoKeApiUtil.getTaoBaoSystemTime();
|
| | | long endTime = systemDate != null ? systemDate.getTime() : System.currentTimeMillis();
|
| | | updateRelationAndSpecialOrder(endTime - 1000 * 60 * 20L, endTime);
|
| | | updateRelationAndSpecialPaidOrder(endTime - 1000 * 60 * 20L, endTime);
|
| | | updateRelationAndSpecialSettleOrder(endTime - 1000 * 60 * 20L, endTime);
|
| | | }
|
| | | @XxlJob("updateTBRelationAndSpecialOrderHandler")
|
| | | public ReturnT<String> updateTBRelationAndSpecialOrder(String param) throws Exception {
|
| | | if ("1".equalsIgnoreCase(param)) {// 爬取近20分钟的数据
|
| | | doJob1();
|
| | | } else if ("1day".equalsIgnoreCase(param)) {// 每5分钟更新(近1天数据)
|
| | | doJob2();
|
| | | }
|
| | | return ReturnT.SUCCESS;
|
| | | }
|
| | |
|
| | | // 每5分钟更新(近1天数据)
|
| | | public void doJob2() {
|
| | | LogHelper.job("爬单:5min爬取一次单");
|
| | | Date systemDate = TaoKeApiUtil.getTaoBaoSystemTime();
|
| | | long endTime = systemDate != null ? systemDate.getTime() : System.currentTimeMillis();
|
| | | updateRelationAndSpecialOrder(endTime - 1000 * 60 * 60 * 24L, endTime);
|
| | | updateRelationAndSpecialSettleOrder(endTime - 1000 * 60 * 60 * 24L, endTime);
|
| | | }
|
| | | // 每30s爬取一次
|
| | | public void doJob1() {
|
| | | LogHelper.job("爬单:30s爬取一次单");
|
| | | Date systemDate = TaoKeApiUtil.getTaoBaoSystemTime();
|
| | | long endTime = systemDate != null ? systemDate.getTime() : System.currentTimeMillis();
|
| | | updateRelationAndSpecialOrder(endTime - 1000 * 60 * 20L, endTime);
|
| | | updateRelationAndSpecialPaidOrder(endTime - 1000 * 60 * 20L, endTime);
|
| | | updateRelationAndSpecialSettleOrder(endTime - 1000 * 60 * 20L, endTime);
|
| | | }
|
| | |
|
| | | // 每5分钟更新(近1天数据)
|
| | | public void doJob2() {
|
| | | LogHelper.job("爬单:5min爬取一次单");
|
| | | Date systemDate = TaoKeApiUtil.getTaoBaoSystemTime();
|
| | | long endTime = systemDate != null ? systemDate.getTime() : System.currentTimeMillis();
|
| | | updateRelationAndSpecialOrder(endTime - 1000 * 60 * 60 * 24L, endTime);
|
| | | updateRelationAndSpecialSettleOrder(endTime - 1000 * 60 * 60 * 24L, endTime);
|
| | | }
|
| | | }
|