From 9b290016161fc6cb46a641725ae2272de6569f8a Mon Sep 17 00:00:00 2001 From: Tang Cheng Date: Fri, 19 Jul 2019 09:11:29 +0800 Subject: [PATCH] =?utf8?q?=E4=BF=AE=E6=94=B9=E4=BA=86scheduler=20lock=20?= =?utf8?q?=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../framework/core/DayendSettleTask.java | 29 +++-------------- .../dlpay/framework/dao/TaskLockDao.java | 4 --- .../framework/service/SystemUtilService.java | 12 ------- .../service/impl/SystemUtilServiceImpl.java | 31 ------------------- .../com/supwisdom/dlpay/api/scheduler_task.kt | 1 - 5 files changed, 4 insertions(+), 73 deletions(-) diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/core/DayendSettleTask.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/core/DayendSettleTask.java index de2afe39..14663ecd 100644 --- a/payapi/src/main/java/com/supwisdom/dlpay/framework/core/DayendSettleTask.java +++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/core/DayendSettleTask.java @@ -1,10 +1,9 @@ package com.supwisdom.dlpay.framework.core; import com.supwisdom.dlpay.framework.domain.TSettleLog; -import com.supwisdom.dlpay.framework.domain.TTaskLock; import com.supwisdom.dlpay.framework.service.DayendSettleService; -import com.supwisdom.dlpay.framework.service.SystemUtilService; import com.supwisdom.dlpay.framework.util.StringUtil; +import net.javacrumbs.shedlock.core.SchedulerLock; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -13,8 +12,6 @@ import org.springframework.stereotype.Component; @Component public class DayendSettleTask { - @Autowired - private SystemUtilService systemUtilService; @Autowired private DayendSettleService dayendSettleService; @@ -22,24 +19,12 @@ public class DayendSettleTask { private static final Logger logger = LoggerFactory.getLogger(DayendSettleTask.class); - @Scheduled(cron="${dayend.settletask.cron}") + @Scheduled(cron = "${dayend.settletask.cron}") + @SchedulerLock(name = "DayendSettleTask") public void doSettleTask() { if (logger.isDebugEnabled()) logger.debug("进入日结算任务!"); - - TTaskLock lock = null; + settleLog = dayendSettleService.doCreateSettleLog(); //记录日志 try { - try { - lock = systemUtilService.doLockTask("DAYENDSETTLETASK", 30, "日终结算"); - if (lock == null) { - if (logger.isDebugEnabled()) logger.debug("日终结算正在其他服务器上执行"); - return; - } - } catch (Exception e) { - return; - } - - settleLog = dayendSettleService.doCreateSettleLog(); //记录日志 - //step1: 账户校验(fixme: 清算任务?) long t1 = System.currentTimeMillis(); if (!checkAccounts()) { @@ -71,12 +56,6 @@ public class DayendSettleTask { } catch (Exception e) { logger.error("日终结算报错:" + (!StringUtil.isEmpty(e.getMessage()) ? e.getMessage() : e.getClass().getName())); e.printStackTrace(); - } finally { - if (null != lock) { - lock.setTaskstatus(0); - lock.setTasktime(systemUtilService.getSysdatetime().getHostdatetime()); - systemUtilService.updateTaskLock(lock); - } } } diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/TaskLockDao.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/TaskLockDao.java index e1343d41..2c763297 100644 --- a/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/TaskLockDao.java +++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/TaskLockDao.java @@ -14,10 +14,6 @@ import javax.persistence.SequenceGenerator; @Repository public interface TaskLockDao extends JpaRepository { - @Lock(LockModeType.PESSIMISTIC_WRITE) - @Query("select a from TTaskLock a where a.taskcode=:taskcode") - TTaskLock getTaskLockWithLock(@Param("taskcode") String taskcode); - //================= database=Oracle =================// @Query(value = "select to_char(sysdate,'yyyymmdd') as hostdate,to_char(sysdate,'hh24miss') as hosttime,to_char(sysdate,'yyyymmddhh24miss') as hostdatetime, sysdate from dual", nativeQuery = true) SystemDateTime getOracleDatetime(); diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/service/SystemUtilService.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/service/SystemUtilService.java index e5752653..ca187646 100644 --- a/payapi/src/main/java/com/supwisdom/dlpay/framework/service/SystemUtilService.java +++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/service/SystemUtilService.java @@ -15,18 +15,6 @@ public interface SystemUtilService { @Transactional SystemDateTime getSysdatetime(); - /** - * 更新任务表 - */ - @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) - TTaskLock updateTaskLock(TTaskLock lock); - - /** - * 取任务表 - */ - @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) - TTaskLock doLockTask(String taskcode, Integer minRecover, String remark); - /** * 获取记账日期 */ diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/service/impl/SystemUtilServiceImpl.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/service/impl/SystemUtilServiceImpl.java index 51b2b0bb..baf8449d 100644 --- a/payapi/src/main/java/com/supwisdom/dlpay/framework/service/impl/SystemUtilServiceImpl.java +++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/service/impl/SystemUtilServiceImpl.java @@ -56,37 +56,6 @@ public class SystemUtilServiceImpl implements SystemUtilService { } } - @Override - public TTaskLock updateTaskLock(TTaskLock lock) { - return taskLockDao.save(lock); - } - - @Override - public TTaskLock doLockTask(String taskcode, Integer minRecover, String remark) { - if (null == minRecover) minRecover = 10; //默认10分钟 - String hostdatetime = getSysdatetime().getHostdatetime(); //yyyyMMddHHmmss - TTaskLock lock = taskLockDao.getTaskLockWithLock(taskcode); - if (lock != null) { - if (lock.getTaskstatus() == 1 && DateUtil.compareDatetime(DateUtil.getNewTime(hostdatetime, -60 * minRecover), lock.getTasktime()) < 0) { - // 被锁,正在执行操作 - return null; - } else { - lock.setTaskstatus(1); - lock.setTasktime(hostdatetime); - taskLockDao.save(lock); - return lock; - } - } else { - lock = new TTaskLock(); - lock.setTaskcode(taskcode); - lock.setTaskstatus(1); - lock.setTasktime(hostdatetime); - lock.setRemark(remark); - taskLockDao.save(lock); - } - return lock; - } - @Override public String getAccdate() { String hostdate = getSysdatetime().getHostdate(); diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/scheduler_task.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/scheduler_task.kt index 7d93474e..7f7ea81b 100644 --- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/scheduler_task.kt +++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/scheduler_task.kt @@ -8,7 +8,6 @@ import com.supwisdom.dlpay.api.repositories.ShopaccService import com.supwisdom.dlpay.api.service.ConsumePayService import com.supwisdom.dlpay.api.service.DtlQueryResultService import com.supwisdom.dlpay.api.service.TransactionServiceProxy -import com.supwisdom.dlpay.framework.domain.TTaskLock import com.supwisdom.dlpay.framework.service.SystemUtilService import com.supwisdom.dlpay.framework.util.ApplicationUtil import com.supwisdom.dlpay.framework.util.TradeDict -- 2.17.1