优化 agent 对账文件处理机制
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) //次数加一
}
}
}