From cc5cf127da76d03ce7086da4d70f34b20e9803e0 Mon Sep 17 00:00:00 2001
From: admin <1101184511@qq.com>
Date: 星期三, 30 七月 2025 01:57:55 +0800
Subject: [PATCH] 功能完善

---
 src/main/java/com/taoke/autopay/task/KeyOrderDistributeTask.java |   61 +++++++++++++++++++++++++++++-
 1 files changed, 58 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/taoke/autopay/task/KeyOrderDistributeTask.java b/src/main/java/com/taoke/autopay/task/KeyOrderDistributeTask.java
index 1ade385..f239db9 100644
--- a/src/main/java/com/taoke/autopay/task/KeyOrderDistributeTask.java
+++ b/src/main/java/com/taoke/autopay/task/KeyOrderDistributeTask.java
@@ -2,13 +2,16 @@
 
 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.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.Scheduled;
@@ -21,11 +24,20 @@
 @Configuration
 @EnableScheduling
 public class KeyOrderDistributeTask {
+
+    @Value("${task-enable}")
+    private boolean taskEnable;
+
     @Resource
     private KeyOrderService keyOrderService;
 
+
+
     @Scheduled(cron = "0/5 * * * * ? ")
     private void distribute() {
+        if(!taskEnable){
+            return;
+        }
         try {
             List<KeyOrder> results = keyOrderService.listNotDistributed(1, 20);
             if (results != null) {
@@ -56,6 +68,9 @@
      **/
     @Scheduled(cron = "0/5 * * * * ? ")
     private void repaireProcessedOrders() {
+        if(!taskEnable){
+            return;
+        }
         // TODO 寰呭畬鎴�
         KeyOrderMapper.DaoQuery query = new KeyOrderMapper.DaoQuery();
         // 淇1鍒嗛挓鍒�1灏忔椂鐨勬暟鎹箣鍓嶆墽琛岀殑鏁版嵁
@@ -110,16 +125,56 @@
     private OrderPayFailProcessor orderPayFailProcessor;
 
     @Scheduled(cron = "0/5 * * * * ? ")
-    private void processPayFail(){
-        for(int i=0;i<10;i++) {
+    private void processPayFail() {
+        if(!taskEnable){
+            return;
+        }
+        for (int i = 0; i < 10; i++) {
             // 涓�娆℃渶澶氬鐞�10鏉℃暟鎹�
             orderPayFailProcessor.processFromQueue();
         }
     }
 
     @Scheduled(cron = "0 0 3 * * ? ")
-    private void clearProcessPayFailCache(){
+    private void clearProcessPayFailCache() {
+        if(!taskEnable){
+            return;
+        }
         orderPayFailProcessor.clearCacheData();
     }
 
+    @Resource
+    private ClientInfoService clientInfoService;
+
+    // 澶勭悊璁惧涓嬬嚎
+    @Scheduled(cron = "0 0/1 * * * ? ")
+    private void processPayClientOffLine() {
+        if(!taskEnable){
+            return;
+        }
+        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