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 | 76 +++++++++++++++++++++++++++++++++++++ 1 files changed, 75 insertions(+), 1 deletions(-) diff --git a/src/main/java/com/taoke/autopay/task/KeyOrderDistributeTask.java b/src/main/java/com/taoke/autopay/task/KeyOrderDistributeTask.java index e6626bc..f239db9 100644 --- a/src/main/java/com/taoke/autopay/task/KeyOrderDistributeTask.java +++ b/src/main/java/com/taoke/autopay/task/KeyOrderDistributeTask.java @@ -2,11 +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; @@ -19,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) { @@ -31,7 +45,7 @@ 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()); @@ -54,6 +68,9 @@ **/ @Scheduled(cron = "0/5 * * * * ? ") private void repaireProcessedOrders() { + if(!taskEnable){ + return; + } // TODO 寰呭畬鎴� KeyOrderMapper.DaoQuery query = new KeyOrderMapper.DaoQuery(); // 淇1鍒嗛挓鍒�1灏忔椂鐨勬暟鎹箣鍓嶆墽琛岀殑鏁版嵁 @@ -103,4 +120,61 @@ } } + + @Resource + private OrderPayFailProcessor orderPayFailProcessor; + + @Scheduled(cron = "0/5 * * * * ? ") + private void processPayFail() { + if(!taskEnable){ + return; + } + for (int i = 0; i < 10; i++) { + // 涓�娆℃渶澶氬鐞�10鏉℃暟鎹� + orderPayFailProcessor.processFromQueue(); + } + } + + @Scheduled(cron = "0 0 3 * * ? ") + 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