From 6159dc58f50d3e4680779b7989bbd4d49a76bad5 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期五, 09 五月 2025 19:13:35 +0800
Subject: [PATCH] 添加日志

---
 src/main/java/com/taoke/autopay/task/KeyOrderDistributeTask.java |  123 +++++++++++++++++++++++++++++++++++++++-
 1 files changed, 119 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/taoke/autopay/task/KeyOrderDistributeTask.java b/src/main/java/com/taoke/autopay/task/KeyOrderDistributeTask.java
index 23003d1..98631fb 100644
--- a/src/main/java/com/taoke/autopay/task/KeyOrderDistributeTask.java
+++ b/src/main/java/com/taoke/autopay/task/KeyOrderDistributeTask.java
@@ -1,12 +1,22 @@
 package com.taoke.autopay.task;
 
+import com.taoke.autopay.dao.KeyOrderMapper;
+import com.taoke.autopay.dto.DYOrderDto;
+import com.taoke.autopay.entity.ClientInfo;
 import com.taoke.autopay.entity.KeyOrder;
+import com.taoke.autopay.exception.KeyOrderException;
+import com.taoke.autopay.manager.OrderPayFailProcessor;
+import com.taoke.autopay.service.ClientInfoService;
 import com.taoke.autopay.service.KeyOrderService;
+import com.taoke.autopay.utils.Constant;
+import com.taoke.autopay.utils.StringUtil;
+import com.taoke.autopay.utils.order.DYOrderApi;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.Scheduled;
 
 import javax.annotation.Resource;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 
@@ -17,15 +27,15 @@
     private KeyOrderService keyOrderService;
 
     @Scheduled(cron = "0/5 * * * * ? ")
-    private void distribute(){
+    private void distribute() {
         try {
             List<KeyOrder> results = keyOrderService.listNotDistributed(1, 20);
             if (results != null) {
                 for (KeyOrder order : results) {
-                    if (order.getDistributeClientUid() == null) {
+                    if (order.getDistributeClientUid() != null) {
                         continue;
                     }
-                    Long uid = keyOrderService.getCanDistributeUid();
+                    Long uid = keyOrderService.getCanDistributeUid(Constant.MAX_PAY_ACCOUNT_QUEUE_SIZE);
                     if (uid != null) {
                         KeyOrder orderUpdate = new KeyOrder();
                         orderUpdate.setId(order.getId());
@@ -35,9 +45,114 @@
                     }
                 }
             }
-        }catch(Exception e){
+        } catch (Exception e) {
 
         }
     }
 
+    /**
+     * @return void
+     * @author hxh
+     * @description 淇宸茬粡澶勭悊鐨勮鍗�
+     * @date 17:53 2024/6/20
+     **/
+    @Scheduled(cron = "0/5 * * * * ? ")
+    private void repaireProcessedOrders() {
+        // TODO 寰呭畬鎴�
+        KeyOrderMapper.DaoQuery query = new KeyOrderMapper.DaoQuery();
+        // 淇1鍒嗛挓鍒�1灏忔椂鐨勬暟鎹箣鍓嶆墽琛岀殑鏁版嵁
+        query.maxUpdateTime = new Date(System.currentTimeMillis() - 1000 * 60 * 1L);
+        query.minUpdateTime = new Date(System.currentTimeMillis() - 1000 * 60 * 60L);
+        query.sortList = Arrays.asList(new String[]{"update_time asc"});
+        query.stateList = Arrays.asList(new Integer[]{KeyOrder.STATE_NOT_PAY, KeyOrder.STATE_PAY});
+        query.orderState = DYOrderDto.ORDER_STATUS_NOT_PAY;
+        query.start = 0;
+        query.count = 20;
+        List<KeyOrder> list = keyOrderService.list(query);
+        if (list != null && list.size() > 0) {
+            for (KeyOrder order : list) {
+                // 濡傛灉娌℃湁鎷垮埌璁㈠崟灏变笉鍋氬鐞�
+                if (StringUtil.isNullOrEmpty(order.getOrderNo())) {
+                    continue;
+                }
+                // 鏌ヨ缁撴灉
+                DYOrderDto dto = null;
+                try {
+                    dto = DYOrderApi.getOrderDetail(order.getOrderNo());
+                    if (dto.getOrder_status() != DYOrderDto.ORDER_STATUS_NOT_PAY) {
+                        // 璁㈠崟涓嶅浜庡皻鏈粯娆剧姸鎬�
+                        KeyOrder orderUpdate = new KeyOrder();
+                        orderUpdate.setId(order.getId());
+                        orderUpdate.setOrderState(dto.getOrder_status());
+                        orderUpdate.setState(KeyOrder.STATE_PAY);
+                        orderUpdate.setStateDesc(dto.getOrder_status_desc());
+                        keyOrderService.update(orderUpdate);
+                    } else {
+                        KeyOrder update = new KeyOrder();
+                        update.setId(order.getId());
+                        update.setState(KeyOrder.STATE_NOT_PROCESS);
+                        update.setStateDesc("閲嶇疆鏈垎閰�");
+                        update.setOrderState(dto.getOrder_status());
+                        keyOrderService.update(update);
+                    }
+                } catch (KeyOrderException e) {
+                    e.printStackTrace();
+                    KeyOrder orderUpdate = new KeyOrder();
+                    orderUpdate.setId(order.getId());
+                    orderUpdate.setState(KeyOrder.STATE_PAY);
+                    orderUpdate.setStateDesc(e.getMessage());
+                    keyOrderService.update(orderUpdate);
+                }
+            }
+        }
+    }
+
+
+    @Resource
+    private OrderPayFailProcessor orderPayFailProcessor;
+
+    @Scheduled(cron = "0/5 * * * * ? ")
+    private void processPayFail() {
+        for (int i = 0; i < 10; i++) {
+            // 涓�娆℃渶澶氬鐞�10鏉℃暟鎹�
+            orderPayFailProcessor.processFromQueue();
+        }
+    }
+
+    @Scheduled(cron = "0 0 3 * * ? ")
+    private void clearProcessPayFailCache() {
+        orderPayFailProcessor.clearCacheData();
+    }
+
+    @Resource
+    private ClientInfoService clientInfoService;
+
+    // 澶勭悊璁惧涓嬬嚎
+    @Scheduled(cron = "0 0/1 * * * ? ")
+    private void processPayClientOffLine() {
+        KeyOrderMapper.DaoQuery daoQuery = new KeyOrderMapper.DaoQuery();
+        // 鍒嗛厤鏃堕棿鍦ㄦ渶杩�5鍒嗛挓鍒版渶杩�30鍒嗛挓鐨勶紝鐘舵�佷负鏈鐞嗙殑闇�瑕侀噸鏂板垎閰�
+        daoQuery.stateList = Arrays.asList(new Integer[]{KeyOrder.STATE_NOT_PAY, KeyOrder.STATE_NOT_PROCESS});
+        daoQuery.minDistributeTime = new Date(System.currentTimeMillis() - 1000 * 60 * 30L);
+        daoQuery.maxDistributeTime = new Date(System.currentTimeMillis() - 1000 * 60 * 5L);
+        daoQuery.sortList = Arrays.asList(new String[]{"create_time desc"});
+        daoQuery.count = 10;
+        List<KeyOrder> orderList = keyOrderService.list(daoQuery);
+        for (KeyOrder order : orderList) {
+            // 鏌ヨ璁惧娲昏穬鏃堕棿鏄惁宸茬粡鏈�5鍒嗛挓鏈椿璺�
+            if (order.getDistributeClientUid() == null) {
+                continue;
+            }
+
+            ClientInfo clientInfo = clientInfoService.selectByPrimaryKey(order.getDistributeClientUid());
+            if (clientInfo.getActiveTime()==null||System.currentTimeMillis() - clientInfo.getActiveTime().getTime() < 1000 * 60 * 5L) {
+                continue;
+            }
+            // 閲嶆柊鍒嗛厤
+            keyOrderService.removeDistributedClient(order.getId());
+        }
+
+
+    }
+
 }

--
Gitblit v1.8.0