diff --git a/payapi/build.gradle b/payapi/build.gradle
index 419a470..e2cdedd 100644
--- a/payapi/build.gradle
+++ b/payapi/build.gradle
@@ -58,6 +58,8 @@
     implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
     implementation 'commons-codec:commons-codec:1.12'
     implementation 'org.apache.commons:commons-lang3:3.9'
+    implementation 'net.javacrumbs.shedlock:shedlock-spring:2.5.0'
+    implementation 'net.javacrumbs.shedlock:shedlock-provider-redis-spring:2.5.0'
 
     implementation 'org.springframework.cloud:spring-cloud-starter-consul-discovery:2.1.2.RELEASE'
 
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt
index b6f81aa..d0e6f9c 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt
@@ -2,6 +2,8 @@
 
 import com.supwisdom.dlpay.framework.tenant.TenantCacheKeyGen
 import io.lettuce.core.ReadFrom
+import net.javacrumbs.shedlock.core.LockProvider
+import net.javacrumbs.shedlock.provider.redis.spring.RedisLockProvider
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.boot.SpringApplication
 import org.springframework.boot.autoconfigure.SpringBootApplication
@@ -50,6 +52,11 @@
     fun createTenantCacheableKey(): KeyGenerator {
         return TenantCacheKeyGen()
     }
+
+    @Bean
+    fun lockProvider(connectionFactory: RedisConnectionFactory): LockProvider {
+        return RedisLockProvider(connectionFactory, "prod")
+    }
 }
 
 @Configuration
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 096d924..7d93474 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
@@ -13,6 +13,7 @@
 import com.supwisdom.dlpay.framework.util.ApplicationUtil
 import com.supwisdom.dlpay.framework.util.TradeDict
 import com.supwisdom.dlpay.util.ConstantUtil
+import net.javacrumbs.shedlock.core.SchedulerLock
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.context.ApplicationContext
 import org.springframework.scheduling.annotation.Scheduled
@@ -23,41 +24,17 @@
 class MySchedulerTask {
     @Autowired
     private lateinit var shopaccService: ShopaccService
-    @Autowired
-    private lateinit var systemUtilService: SystemUtilService
 
     fun doShopBlanceUpdate(dtl: TShopdtl) {
         shopaccService.recalcShopBalance(dtl.refno, true)
     }
 
     @Scheduled(cron = "\${shopbalance.updater.cron:-}")
+    @SchedulerLock(name = "dealShopUnupdatedDtl")
     fun dealShopUnupdatedDtl() {
-        var tasklock = TTaskLock()
-        try {
-            //集群控制
-            try {
-                tasklock = systemUtilService.doLockTask("SHOPBLANCEUPDATETASK", 10, "更新账户余额任务")
-                if (tasklock == null) {
-                    return
-                }
-            } catch (e: Exception) {
-                return
-            }
-
-            shopaccService.findUnupdatedShopDtl(100).forEach {
-                doShopBlanceUpdate(it)
-            }
-        } catch (ex: Exception) {
-            ex.printStackTrace()
-        } finally {
-            if (tasklock?.taskcode.isNotEmpty()) {
-                tasklock.taskstatus = 0
-                tasklock.tasktime = systemUtilService.sysdatetime.hostdatetime
-                systemUtilService.updateTaskLock(tasklock)
-            }
+        shopaccService.findUnupdatedShopDtl(100).forEach {
+            doShopBlanceUpdate(it)
         }
-
-
     }
 }
 
@@ -78,35 +55,15 @@
     private lateinit var applicationContext: ApplicationContext
 
     @Scheduled(cron = "\${query.third.transdtl.result.cron:-}")
+    @SchedulerLock(name = "DtlQueryResultSchedulerTask")
     fun queryThirdTransdtlResult() {
-        var tasklock = TTaskLock()
-        try {
-            //集群控制
+        //仅查询当天数据,查询次数在规定次数之下
+        dtlQueryResultService.getNeedQueryRecords(systemUtilService.accdate, ConstantUtil.QUERY_MAX_COUNT).forEach {
             try {
-                tasklock = systemUtilService.doLockTask("QUERYTHIRDTRANSDTLRESULTTASK", 10, "查询第三方流水状态任务")
-                if (tasklock == null) {
-                    return
-                }
-            } catch (e: Exception) {
-                return
-            }
-
-            //仅查询当天数据,查询次数在规定次数之下
-            dtlQueryResultService.getNeedQueryRecords(systemUtilService.accdate, ConstantUtil.QUERY_MAX_COUNT).forEach {
-                try {
-                    doQuery(it)
-                } catch (exp: Exception) {
-                    it.qcnt = it.qcnt + 1
-                    dtlQueryResultService.saveOrUpdateDtlQuery(it) //次数加一
-                }
-            }
-        } catch (ex: Exception) {
-            ex.printStackTrace()
-        } finally {
-            if (tasklock?.taskcode.isNotEmpty()) {
-                tasklock.taskstatus = 0
-                tasklock.tasktime = systemUtilService.sysdatetime.hostdatetime
-                systemUtilService.updateTaskLock(tasklock)
+                doQuery(it)
+            } catch (exp: Exception) {
+                it.qcnt = it.qcnt + 1
+                dtlQueryResultService.saveOrUpdateDtlQuery(it) //次数加一
             }
         }
     }
