From 671a0b04e156bdb00e2eda3082bef87934bceeb3 Mon Sep 17 00:00:00 2001
From: yujian <yujian>
Date: 星期一, 15 四月 2019 15:22:23 +0800
Subject: [PATCH] 后端订单统计 队友关系bug优化
---
fanli/src/main/java/com/yeshi/fanli/job/UpdateOrderJob.java | 350 +++++++++++++++++++++++++++++++++++++--------------------
1 files changed, 227 insertions(+), 123 deletions(-)
diff --git a/fanli/src/main/java/com/yeshi/fanli/job/UpdateOrderJob.java b/fanli/src/main/java/com/yeshi/fanli/job/UpdateOrderJob.java
index da68078..546b7aa 100644
--- a/fanli/src/main/java/com/yeshi/fanli/job/UpdateOrderJob.java
+++ b/fanli/src/main/java/com/yeshi/fanli/job/UpdateOrderJob.java
@@ -1,6 +1,8 @@
package com.yeshi.fanli.job;
import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -16,16 +18,11 @@
import com.yeshi.fanli.entity.taobao.TaoBaoOrder;
import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig;
import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder;
-import com.yeshi.fanli.exception.TaoBaoOrderException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.common.DataMonitorService;
-import com.yeshi.fanli.service.inter.hongbao.HongBaoService;
-import com.yeshi.fanli.service.inter.hongbao.ThreeSaleGiftService;
import com.yeshi.fanli.service.inter.order.LostOrderService;
-import com.yeshi.fanli.service.inter.order.OrderItemServcie;
import com.yeshi.fanli.service.inter.order.OrderProcessService;
import com.yeshi.fanli.service.inter.order.OrderService;
-import com.yeshi.fanli.service.inter.order.PidOrderService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoOrderService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoWeiQuanOrderService;
@@ -33,9 +30,10 @@
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
+import com.yeshi.fanli.util.TaoBaoConstant;
import com.yeshi.fanli.util.TimeUtil;
-import com.yeshi.fanli.util.taobao.TaoBao110Util;
import com.yeshi.fanli.util.taobao.TaoBaoOrderUtil;
+import com.yeshi.fanli.util.taobao.TaoKeOrderApiUtil;
//浠庢窐瀹濈埇鍘昏鍗曟洿鏂�
@Component
@@ -44,18 +42,6 @@
public UpdateOrderJob() {
System.out.println("鍒濆鍖�:UpdateOrderJob");
}
-
- @Resource
- private OrderItemServcie orderItemServcie;
-
- @Resource
- private ThreeSaleGiftService threeSaleGiftService;
-
- @Resource
- private HongBaoService hongBaoService;
-
- @Resource
- private PidOrderService pidOrderService;
@Resource
private OrderProcessService orderProcessService;
@@ -84,30 +70,156 @@
@Resource
private OrderService orderService;
- private void updateOrder(long startTime, long endTime) {
- List<TaoBaoUnionConfig> configList = taoBaoUnionConfigService.getConfigByTypeCache(PidUser.TYPE_FANLI_ANDROID);
+ /**
+ * 鏂扮増鑾峰彇鏅�氳鍗�
+ *
+ * @param startTime
+ * @param span
+ * @return
+ */
+ private static List<TaoBaoOrder> getCommonOrder(long startTime, int span) {
+ int page = 1;
+ String startTimeStr = TimeUtil.getGernalTime(startTime, "yyyy-MM-dd HH:mm:ss");
+ List<TaoBaoOrder> orderList = TaoKeOrderApiUtil.getTaoBaoAllOrder(startTimeStr, span, page,
+ TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
+ while (orderList.size() == 100 * page) {
+ page++;
+ List<TaoBaoOrder> tempOrderList = TaoKeOrderApiUtil.getTaoBaoAllOrder(startTimeStr, span, page,
+ TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
+ if (tempOrderList != null && tempOrderList.size() > 0)
+ orderList.addAll(tempOrderList);
+ }
+ return orderList;
+ }
+
+ /**
+ * 鑾峰彇绗笁鏂规櫘閫氳鍗�
+ *
+ * @param startTime
+ * @param span
+ * @return
+ */
+ private static List<TaoBaoOrder> getThirdCommonOrder(long startTime, int span) {
+ int page = 1;
+ String startTimeStr = TimeUtil.getGernalTime(startTime, "yyyy-MM-dd HH:mm:ss");
+ List<TaoBaoOrder> orderList = TaoKeOrderApiUtil.getTaoBaoThirdAllOrder(startTimeStr, span, page,
+ TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
+ while (orderList.size() == 100 * page) {
+ page++;
+ List<TaoBaoOrder> tempOrderList = TaoKeOrderApiUtil.getTaoBaoThirdAllOrder(startTimeStr, span, page,
+ TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
+ if (tempOrderList != null && tempOrderList.size() > 0)
+ orderList.addAll(tempOrderList);
+ }
+ return orderList;
+ }
+
+ /**
+ * 鑾峰彇鏌愪釜鍖洪棿娈电殑璁㈠崟
+ *
+ * @param startTime
+ * @param endTime
+ * @return
+ */
+ public static List<TaoBaoOrder> getCommonOrder(long startTime, long endTime) {
List<TaoBaoOrder> orderList = new ArrayList<>();
- try {
- orderList = TaoBaoOrderUtil.getOrderList(startTime, endTime, configList.get(0));
- } catch (TaoBaoOrderException e2) {
- try {
- LogHelper.errorDetailInfo(e2);
- } catch (Exception e) {
- e.printStackTrace();
+ long span = (endTime - startTime) % 1000 == 0 ? (endTime - startTime) / 1000 : (endTime - startTime) / 1000 + 1;
+ int count = (int) (span / 1200);
+ if (span % 1200 != 0)
+ count++;
+ for (int i = 0; i < count; i++) {
+ long startT = startTime + i * 1200 * 1000L;
+ int s = 1200;
+ if (endTime < startT + 1200 * 1000L) {
+ s = (int) ((endTime - startT) / 1000) + 1;
+ if (s < 60)
+ s = 60;
}
+ List<TaoBaoOrder> tempOrderList = getCommonOrder(startT, s);
+ if (tempOrderList != null && tempOrderList.size() > 0)
+ orderList.addAll(tempOrderList);
}
- List<TaoBaoOrder> thirdOrderList = new ArrayList<>();
- try {
- thirdOrderList = TaoBaoOrderUtil.getThirdServiceOrderList(startTime, endTime, configList.get(0));
- } catch (TaoBaoOrderException e2) {
- try {
- LogHelper.errorDetailInfo(e2);
- } catch (Exception e) {
- e.printStackTrace();
+ return orderList;
+ }
+
+ /**
+ * 鐖彇涓夋柟璁㈠崟
+ *
+ * @param startTime
+ * @param endTime
+ * @return
+ */
+ public static List<TaoBaoOrder> getThirdCommonOrder(long startTime, long endTime) {
+ List<TaoBaoOrder> orderList = new ArrayList<>();
+ long span = (endTime - startTime) % 1000 == 0 ? (endTime - startTime) / 1000 : (endTime - startTime) / 1000 + 1;
+ int count = (int) (span / 1200);
+ if (span % 1200 != 0)
+ count++;
+ for (int i = 0; i < count; i++) {
+ long startT = startTime + i * 1200 * 1000L;
+ int s = 1200;
+ if (endTime < startT + 1200 * 1000L) {
+ s = (int) ((endTime - startT) / 1000) + 1;
+ if (s < 60)
+ s = 60;
}
+ List<TaoBaoOrder> tempOrderList = getThirdCommonOrder(startT, s);
+ if (tempOrderList != null && tempOrderList.size() > 0)
+ orderList.addAll(tempOrderList);
}
- if (thirdOrderList != null && thirdOrderList.size() > 0)
- orderList.addAll(thirdOrderList);
+ return orderList;
+ }
+
+ /**
+ * 鎸夊ぉ鑾峰彇鏅�氳鍗曪紙鏂扮増锛�
+ *
+ * @param date
+ * @return
+ */
+ public List<TaoBaoOrder> getCommonOrderByDay(Date date) {
+ List<TaoBaoOrder> orderList = new ArrayList<>();
+ // 灏嗕竴澶╁垎鎴�12娈�
+ for (int i = 0; i < 72; i++) {
+ List<TaoBaoOrder> tempOrderList = getCommonOrder(date.getTime() + 1000 * 60 * 20L * i, 1200);
+ if (tempOrderList != null && tempOrderList.size() > 0)
+ orderList.addAll(tempOrderList);
+ }
+ return orderList;
+ }
+
+ public void updateOrder(long startTime, long endTime) {
+ // 鑰佺増鏈鐞嗘柟寮�
+ // List<TaoBaoUnionConfig> configList =
+ // taoBaoUnionConfigService.getConfigByTypeCache(PidUser.TYPE_FANLI_ANDROID);
+ // List<TaoBaoOrder> orderList = new ArrayList<>();
+ // try {
+ // orderList = TaoBaoOrderUtil.getOrderList(startTime, endTime,
+ // configList.get(0));
+ // } catch (TaoBaoOrderException e2) {
+ // try {
+ // LogHelper.errorDetailInfo(e2);
+ // } catch (Exception e) {
+ // e.printStackTrace();
+ // }
+ // }
+ // List<TaoBaoOrder> thirdOrderList = new ArrayList<>();
+ // try {
+ // thirdOrderList = TaoBaoOrderUtil.getThirdServiceOrderList(startTime,
+ // endTime, configList.get(0));
+ // } catch (TaoBaoOrderException e2) {
+ // try {
+ // LogHelper.errorDetailInfo(e2);
+ // } catch (Exception e) {
+ // e.printStackTrace();
+ // }
+ // }
+ // if (thirdOrderList != null && thirdOrderList.size() > 0)
+ // orderList.addAll(thirdOrderList);
+ // 鏂扮増鏈鐞嗘柟寮�
+ List<TaoBaoOrder> orderList = getCommonOrder(startTime, endTime);
+ List<TaoBaoOrder> tempOrderList2 = getThirdCommonOrder(startTime, endTime);
+ if (tempOrderList2 != null && tempOrderList2.size() > 0)
+ orderList.addAll(tempOrderList2);
LogHelper.orderInfo("姝e湪鎵ц璁㈠崟鐖彇缁撴潫锛屽叡鏈夎鍗�:" + orderList.size());
addOrder(orderList);
@@ -116,55 +228,42 @@
} catch (InterruptedException e) {
e.printStackTrace();
}
-
}
- private void addRelationAndSpecialOrder(List<TaoBaoOrder> orderList) {
- try {
- taoBaoOrderService.addTaoBaoOrderList(orderList);
- } catch (Exception e) {
- try {
- LogHelper.errorDetailInfo(e);
- } catch (Exception e1) {
- e1.printStackTrace();
+ public static List<TaoBaoOrder> mixTaoBaoOrder(List<TaoBaoOrder> commonOrderList, List<TaoBaoOrder> sorderList) {
+ Map<String, List<TaoBaoOrder>> commonMap = TaoBaoOrderUtil.classifyTaoBaoOrderByOrderId(commonOrderList);
+ Map<String, List<TaoBaoOrder>> sMap = TaoBaoOrderUtil.classifyTaoBaoOrderByOrderId(sorderList);
+ // 鑾峰彇璁㈠崟浜ら泦
+ Iterator<String> its = commonMap.keySet().iterator();
+ List<String> commonOrderIdList = new ArrayList<>();
+ List<String> sOrderIdList = new ArrayList<>();
+ while (its.hasNext()) {
+ String orderId = its.next();
+ commonOrderIdList.add(orderId);
+ }
+ its = sMap.keySet().iterator();
+ while (its.hasNext()) {
+ String orderId = its.next();
+ sOrderIdList.add(orderId);
+ }
+
+ // 姹備氦闆�
+ commonOrderIdList.retainAll(sOrderIdList);
+
+ List<TaoBaoOrder> orderList = new ArrayList<>();
+
+ for (String orderId : commonOrderIdList) {
+ List<TaoBaoOrder> list = commonMap.get(orderId);
+ String specialId = sMap.get(orderId).get(0).getSpecialId();
+ String relationId = sMap.get(orderId).get(0).getRelationId();
+ for (TaoBaoOrder to : list) {
+ to.setSpecialId(specialId);
+ to.setRelationId(relationId);
+ orderList.add(to);
}
}
- 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 {
- // 6灏忔椂鍐呬笉鍐嶅鐞�
- redisManager.cacheCommonString(redisKey, "1", 60 * 60 * 6);
- } catch (Exception e) {
-
- }
- }
- }
- } catch (Exception e) {
- try {
- LogHelper.errorDetailInfo(e);
- } catch (Exception e1) {
- e1.printStackTrace();
- }
- }
+ return orderList;
}
private void addOrder(List<TaoBaoOrder> orderList) {
@@ -243,7 +342,7 @@
public void doJob1() {
if (!Constant.IS_TASK)
return;
- long currentTime = System.currentTimeMillis();
+ long currentTime = System.currentTimeMillis() - 1000 * 60;
String h = TimeUtil.getGernalTime(currentTime, "HH");
String m = TimeUtil.getGernalTime(currentTime, "mm");
int mm = Integer.parseInt(h) * 60 + Integer.parseInt(m);
@@ -262,39 +361,9 @@
public void doJob6() {
if (!Constant.IS_TASK)
return;
- List<TaoBaoUnionConfig> configList = taoBaoUnionConfigService.getConfigByTypeCache(PidUser.TYPE_FANLI_ANDROID);
- LogHelper.orderInfo("姝e湪鎵ц璁㈠崟鐖彇...");
- // 鐖彇1鍒嗛挓浠ュ墠鐨�
- long endTime = System.currentTimeMillis() - 1000 * 60 * 1L;
- List<TaoBaoOrder> orderList = new ArrayList<TaoBaoOrder>();
- try {
- orderList = TaoBaoOrderUtil.getOrderList(endTime - 1000 * 60 * 60 * 24 * 2L, endTime, configList.get(0));
- TaoBao110Util.rightTaoBaoOrderWarning();
- } catch (TaoBaoOrderException e) {
- try {
- LogHelper.errorDetailInfo(e);
- TaoBao110Util.reportTaoBaoOrderWarning(e.getCode(), e.getMessage());
- } catch (Exception e2) {
- e2.printStackTrace();
- }
- }
- List<TaoBaoOrder> thirdOrderList = new ArrayList<>();
- try {
- thirdOrderList = TaoBaoOrderUtil.getThirdServiceOrderList(endTime - 1000 * 60 * 60 * 24 * 2L, endTime,
- configList.get(0));
- } catch (TaoBaoOrderException e) {
- try {
- LogHelper.errorDetailInfo(e);
- } catch (Exception e2) {
- e2.printStackTrace();
- }
- }
- if (thirdOrderList != null && thirdOrderList.size() > 0)
- orderList.addAll(thirdOrderList);
- if (orderList != null && orderList.size() > 0)
- dataMonitorService.parseTaoBaoOrderSuccess();
- LogHelper.orderInfo("姝e湪鎵ц璁㈠崟鐖彇缁撴潫锛屽叡鏈夎鍗�:" + orderList.size());
- addOrder(orderList);
+ long endTime = System.currentTimeMillis() - 1000 * 60;
+ ;
+ updateOrder(endTime - 1000 * 60 * 20L, endTime);
}
// 杩斿埄
@@ -331,18 +400,53 @@
orderProcessService.weiQuanOrder(orderList);
}
- // 澶勭悊鍒嗕韩鍟嗗搧鎵�浜х敓鐨勮鍗�(鍚庣画鐗堟湰搴熼櫎)
- // @Scheduled(cron = "0 0/2 * * * ? ")
- // public void doPidOrder() {
- // if (!Constant.IS_TASK)
- // return;
- // pidOrderService.doPidOrder();
- // }
-
// 姣�6涓皬鏃舵墽琛屼竴娆�
@Scheduled(cron = "0 0 0/6 * * ? ")
public void doLostOrder() {
+ if (!Constant.IS_TASK)
+ return;
lostOrderService.processFail();
}
+ // 姣�2鍒嗛挓鎵ц涓�娆�
+ @Scheduled(cron = "0 0/2 * * * ? ")
+ public void addLostOrder() {
+ if (!Constant.IS_TASK)
+ return;
+ List<LostOrder> list = lostOrderService.listByStateAndResultCode(LostOrder.STATE_PASS,
+ LostOrder.RESULT_CODE_VERFING, 1, 50);
+ if (list != null)
+ for (LostOrder lo : list) {
+ List<TaoBaoOrder> taoBaoOrderList = taoBaoOrderService.getTaoBaoOrderByOrderId(lo.getOrderId());
+ // 娓呴櫎棰戠巼闄愬埗
+ if (taoBaoOrderList != null && taoBaoOrderList.size() > 0) {
+ String key = "addorder-" + lo.getOrderId();
+ redisManager.removeCommonString(key);
+ addOrder(taoBaoOrderList);
+ }
+ }
+ }
+
+ /**
+ * 澶勭悊娣樺疂缁撶畻璁㈠崟,姣忓皬鏃舵墽琛屼竴娆�
+ */
+ @Scheduled(cron = "30 0 0/1 * * ? ")
+ public void doSettleOrders() {
+ if (!Constant.IS_TASK)
+ return;
+ // 澶勭悊3-15澶╁墠鐨勮鍗曪紝姣忓ぉ璺戜竴娆�
+ Calendar ca = Calendar.getInstance();
+ int hour = ca.get(Calendar.HOUR_OF_DAY);
+
+ long startTime = TimeUtil.convertToTimeTemp(
+ TimeUtil.getGernalTime(ca.getTimeInMillis() - 1000 * 60 * 60 * 24 * 3L, "yyyy-MM-dd"), "yyyy-MM-dd")
+ - hour * (1000 * 60 * 60 * 12L);
+ long endTime = startTime + 1000 * 60 * 60 * 12L;
+ List<TaoBaoOrder> orderList = TaoKeOrderApiUtil.getTaoBaoSettleOrders(startTime, endTime, false);
+ List<TaoBaoOrder> tempOrderList = TaoKeOrderApiUtil.getTaoBaoSettleOrders(startTime, endTime, true);
+ if (tempOrderList != null && tempOrderList.size() > 0)
+ orderList.addAll(tempOrderList);
+ addOrder(orderList);
+ }
+
}
--
Gitblit v1.8.0