fanli/src/main/java/com/yeshi/fanli/controller/admin/UploadController.java
@@ -161,7 +161,7 @@ } } CMQManager.getInstance().addTaoBaoOrderMsg(key, orders); CMQManager.getInstance().addTaoBaoOrderMsg(key); try { // 6小时内不再处理 if (Constant.IS_OUTNET) { fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserOrderController.java
@@ -498,7 +498,7 @@ try { isS = orderService.addOrder(or); if (isS) { CMQManager.getInstance().addTaoBaoOrderMsg(order, orderList); CMQManager.getInstance().addTaoBaoOrderMsg(order); // 加入到LostOrder LostOrder lo = new LostOrder(); lo.setCreateTime(System.currentTimeMillis()); fanli/src/main/java/com/yeshi/fanli/job/TaoLiJinJob.java
@@ -169,7 +169,7 @@ List<TaoBaoGoodsBrief> list = tljBuyGoodsService.listPreGoods(1); Collections.shuffle(list); if (list.size() > 20) list = list.subList(0, 1); list = list.subList(0, 20); addTLJBuyGoods(list, day); } fanli/src/main/java/com/yeshi/fanli/job/UpdateCommonOrderJob.java
@@ -160,7 +160,7 @@ } CMQManager.getInstance().addTaoBaoOrderMsg(key, orders); CMQManager.getInstance().addTaoBaoOrderMsg(key); try { // 6小时内不再处理 fanli/src/main/java/com/yeshi/fanli/job/UpdateOrderJob.java
@@ -324,7 +324,7 @@ } CMQManager.getInstance().addTaoBaoOrderMsg(key, orders); CMQManager.getInstance().addTaoBaoOrderMsg(key); try { // 6小时内不再处理 fanli/src/main/java/com/yeshi/fanli/job/UpdateRelationAndSpecialOrderJob.java
@@ -16,6 +16,7 @@ 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; @@ -53,6 +54,12 @@ 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); } @@ -81,7 +88,13 @@ } CMQManager.getInstance().addTaoBaoOrderMsg(key, orders); 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分钟内不再处理 @@ -102,6 +115,7 @@ if (!Constant.IS_TASK) return; // 爬取近20分钟的数据 LogHelper.orderInfo("爬单:30s爬取一次单"); long endTime = System.currentTimeMillis(); updateRelationAndSpecialOrder(endTime - 1000 * 60 * 20L, endTime); } fanli/src/main/java/com/yeshi/fanli/util/CMQManager.java
@@ -1,8 +1,7 @@ package com.yeshi.fanli.util; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -11,7 +10,6 @@ import com.alipay.api.response.AlipayFundTransToaccountTransferResponse; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; import com.qcloud.cmq.Message; import com.yeshi.fanli.dto.HongBao; import com.yeshi.fanli.entity.bus.user.AlipayTransferResultInfo; @@ -19,10 +17,7 @@ import com.yeshi.fanli.entity.bus.user.HongBaoV2; import com.yeshi.fanli.entity.common.AdminUser; import com.yeshi.fanli.entity.push.PushQueueRecord; import com.yeshi.fanli.entity.taobao.TaoBaoOrder; import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder; import net.sf.json.JSONObject; public class CMQManager { private static String secretId = "AKIDTlpgJhLjOozvd6QI2XnpfGbgV4NQJk25"; @@ -31,6 +26,10 @@ private static CMQUtil cmqUtil; // TODO 订单处理队列 public static String QUEUENAME_ORDER = "fanli-orders"; // 刚刚产生的订单处理队列 public static String QUEUENAME_NEW_ORDER = "fanli-new-orders"; // 提现结果处理队列 public static String EXTRACT_RESULT = "extract-result"; // TODO IOS推送队列 @@ -53,6 +52,7 @@ if (Constant.IS_TEST) { QUEUENAME_ORDER = "test-" + QUEUENAME_ORDER; QUEUENAME_NEW_ORDER = "test-" + QUEUENAME_NEW_ORDER; EXTRACT_RESULT = "test-" + EXTRACT_RESULT; PUSH_IOS = "test-" + PUSH_IOS; FANLI_ORDER = "test-" + FANLI_ORDER; @@ -62,6 +62,7 @@ } QUEUENAME_ORDER += "-" + Constant.systemCommonConfig.getProjectName(); QUEUENAME_NEW_ORDER += "-" + Constant.systemCommonConfig.getProjectName(); EXTRACT_RESULT += "-" + Constant.systemCommonConfig.getProjectName(); PUSH_IOS += "-" + Constant.systemCommonConfig.getProjectName(); FANLI_ORDER += "-" + Constant.systemCommonConfig.getProjectName(); @@ -72,6 +73,7 @@ cmqUtil = CMQUtil.getInstance(secretId, secretKey); // 最大消息为1M cmqUtil.createQueue(QUEUENAME_ORDER, 1024 * 1024); cmqUtil.createQueue(QUEUENAME_NEW_ORDER, 1024 * 1024); cmqUtil.createQueue(EXTRACT_RESULT); cmqUtil.createQueue(PUSH_IOS); cmqUtil.createQueue(FANLI_ORDER); @@ -92,11 +94,9 @@ * * @param orderMap */ public void addTaoBaoOrderMsg(String orderId, List<TaoBaoOrder> orderList) { if (!StringUtil.isNullOrEmpty(orderId) && orderList != null && orderList.size() > 0) { JSONObject item = new JSONObject(); item.put(orderId, new GsonBuilder().create().toJson(orderList)); cmqUtil.sendMsg(QUEUENAME_ORDER, item.toString()); public void addTaoBaoOrderMsg(String orderId) { if (!StringUtil.isNullOrEmpty(orderId)) { cmqUtil.sendMsg(QUEUENAME_ORDER, orderId); } } @@ -105,27 +105,18 @@ * * @param count */ @SuppressWarnings("unchecked") public Map<String, List<TaoBaoOrder>> consumeTaoBaoOrderMsg(int count) { public List<String> consumeTaoBaoOrderMsg(int count) { List<String> resultList = new ArrayList<>(); List<Message> list = cmqUtil.recieveMsg(count, QUEUENAME_ORDER); Map<String, List<TaoBaoOrder>> map = new HashMap<>(); if (list != null) for (Message msg : list) { String result = msg.msgBody; JSONObject data = JSONObject.fromObject(result); Iterator<String> its = data.keySet().iterator(); if (its.hasNext()) { String orderId = its.next(); Type type = new TypeToken<List<TaoBaoOrder>>() { }.getType(); List<TaoBaoOrder> orderList = new Gson().fromJson(data.optJSONArray(orderId).toString(), type); map.put(orderId, orderList); } resultList.add(result); // 删除消息 cmqUtil.deleteMsg(QUEUENAME_ORDER, msg.receiptHandle); } return map; return resultList; } /** @@ -134,7 +125,46 @@ * @param receiptHandle */ public void deleteTaoBaoOrderMsg(String receiptHandle) { cmqUtil.deleteMsg(EXTRACT_RESULT, receiptHandle); cmqUtil.deleteMsg(QUEUENAME_ORDER, receiptHandle); } /** * 发送订单消息(刚刚产生的订单) * * @param orderMap */ public void addTaoBaoNewOrderMsg(String orderId) { if (!StringUtil.isNullOrEmpty(orderId)) { cmqUtil.sendMsg(QUEUENAME_NEW_ORDER, orderId); } } /** * 消费淘宝订单消息(刚刚产生的订单) * * @param count */ public List<String> consumeTaoBaoNewOrderMsg(int count) { List<String> resultList = new ArrayList<>(); List<Message> list = cmqUtil.recieveMsg(count, QUEUENAME_NEW_ORDER); if (list != null) for (Message msg : list) { String result = msg.msgBody; resultList.add(result); // 删除消息 cmqUtil.deleteMsg(QUEUENAME_NEW_ORDER, msg.receiptHandle); } return resultList; } /** * 删除淘宝订单消息(刚刚产生的订单) * * @param receiptHandle */ public void deleteTaoBaoNewOrderMsg(String receiptHandle) { cmqUtil.deleteMsg(QUEUENAME_NEW_ORDER, receiptHandle); } /** fanli/src/main/java/com/yeshi/fanli/util/SpringContext.java
@@ -1,6 +1,7 @@ package com.yeshi.fanli.util; import java.math.BigDecimal; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -12,6 +13,7 @@ import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.core.task.TaskExecutor; import org.springframework.stereotype.Component; import org.yeshi.utils.NumberUtil; import org.yeshi.utils.tencentcloud.COSManager; import org.yeshi.utils.tencentcloud.entity.COSInitParams; @@ -108,6 +110,7 @@ if (Constant.IS_TASK) { doExtractResult();// 处理提现结果 doTaoBaoOrders();// 处理淘宝订单 doTaoBaoNewOrders();// 处理淘宝订单(刚刚产生的) doOrderFanLiNew();// 新版返利 doOrderTiChengFanLi();// 处理订单提成返利 doWeiQuanOrder();// 处理维权订单 @@ -185,16 +188,58 @@ while (true) { try { // 取16个订单 Map<String, List<TaoBaoOrder>> map = CMQManager.getInstance().consumeTaoBaoOrderMsg(16); if (map != null) { // 从库里面查询 Iterator<String> its = map.keySet().iterator(); while (its.hasNext()) { String orderId = its.next(); List<String> orderIds = CMQManager.getInstance().consumeTaoBaoOrderMsg(16); Map<String, List<TaoBaoOrder>> map = new HashMap<>(); if (orderIds != null) { for (String orderId : orderIds) { if (NumberUtil.isNumeric(orderId.trim())) { List<TaoBaoOrder> orderList = taoBaoOrderService .getTaoBaoOrderByOrderId(orderId); map.put(orderId, orderList); LogHelper.orderInfo("开始处理订单:" + orderId); orderProcessService.processOrder(map); LogHelper.orderInfo("结束处理订单:" + orderId); } } } } catch (Exception e) { try { LogHelper.errorDetailInfo(e); } catch (Exception e1) { } } } } }); } } /** * 刚刚产生的订单 */ public void doTaoBaoNewOrders() { // 同时开启3个线程处理 for (int i = 0; i < 1; i++) { executor.execute(new Runnable() { @Override public void run() { while (true) { try { // 取16个订单 List<String> orderIds = CMQManager.getInstance().consumeTaoBaoNewOrderMsg(16); Map<String, List<TaoBaoOrder>> map = new HashMap<>(); if (orderIds != null) { for (String orderId : orderIds) { List<TaoBaoOrder> orderList = taoBaoOrderService.getTaoBaoOrderByOrderId(orderId); map.put(orderId, orderList); LogHelper.orderInfo("新订单-开始处理订单:" + orderId); long startTime = System.currentTimeMillis(); orderProcessService.processOrder(map); LogHelper.orderInfo("新订单-结束处理订单:" + orderId + "- 处理时间:" + (System.currentTimeMillis() - startTime)); } orderProcessService.processOrder(map); } } catch (Exception e) { try { @@ -384,7 +429,6 @@ boutiqueAutoRuleService.startScheduler(); } /** * 更新精选库商品 */