改进了task任务
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/async_tasks.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/async_tasks.kt
index 73f8ba6..9448f3d 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/async_tasks.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/async_tasks.kt
@@ -1,12 +1,15 @@
package com.supwisdom.dlpay.api
+import com.supwisdom.dlpay.agent.AgentCode
+import com.supwisdom.dlpay.agent.citizencard.YnrccUtil
+import com.supwisdom.dlpay.api.domain.TTransactionMain
import com.supwisdom.dlpay.api.repositories.ShopaccService
import com.supwisdom.dlpay.api.service.TransactionServiceProxy
-import com.supwisdom.dlpay.agent.service.CitizencardPayService
-import com.supwisdom.dlpay.agent.citizencard.YnrccUtil
+import com.supwisdom.dlpay.framework.util.ApplicationUtil
import mu.KotlinLogging
import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler
import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.context.ApplicationContext
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.scheduling.annotation.Async
@@ -20,7 +23,7 @@
@Configuration
@EnableAsync
class SpringAsyncConfig : AsyncConfigurer {
- @Bean(value = ["shopAccBalanceUpdater", "queryCitizencardPayResult"])
+ @Bean(value = ["shopAccBalanceUpdater", "queryAgentPayResult"])
fun threadPoolExecutor(): Executor {
return ThreadPoolTaskExecutor().apply {
corePoolSize = 5
@@ -56,52 +59,53 @@
}
@Component
-class CitizencardQueryResultTask {
+class AgentQueryResultTask {
private val logger = KotlinLogging.logger { }
@Autowired
- private lateinit var citizencardPayService: CitizencardPayService
- @Autowired
lateinit var transactionService: TransactionServiceProxy
- @Async("queryCitizencardPayResult")
- fun queryResult(refno: String, qcnt: Int) {
+ @Autowired
+ private lateinit var applicationContext: ApplicationContext
+
+ @Async("queryAgentPayResult")
+ fun queryResult(transaction: TTransactionMain, qcnt: Int) {
try {
- if(qcnt >= YnrccUtil.QUERY_MAX_COUNT){
+ if (qcnt >= YnrccUtil.QUERY_MAX_COUNT) {
//查询超最大次数
- logger.error("查询refno=[$refno]流水结果超最大查询次数[${YnrccUtil.QUERY_MAX_COUNT}]")
+ logger.error("查询refno=[${transaction.refno}]流水结果超最大查询次数[${YnrccUtil.QUERY_MAX_COUNT}]")
return
}
- logger.info("refno=[$refno]开始第" + (qcnt + 1) + "次查询支付结果:")
- val resp = citizencardPayService.queryResult(refno)
- when {
- YnrccUtil.CODE_SUCCESS == resp.code -> {
+ val service = ApplicationUtil.findAgentPayService(applicationContext,
+ transaction.sourceType)
+ logger.info("refno=[${transaction.refno}]开始第" + (qcnt + 1) + "次查询支付结果:")
+ val resp = service.query(transaction)
+ when (resp.code) {
+ AgentCode.SUCCESS -> {
//查询成功
- when {
- YnrccUtil.DTL_STATUS_SUCCESS == resp.status ->
- transactionService.success(refno, resp.bankjourno, false) //流水成功
- YnrccUtil.DTL_STATUS_REFUND == resp.status -> {
- //流水已退款 TODO:流水成功后才退款,无查询原成功流水逻辑
- return
- }
- YnrccUtil.DTL_STATUS_PART_REFUND == resp.status -> {
- //流水已部分退款 TODO:暂无逻辑
- return
- }
- else -> {
- //流水失败
- transactionService.fail(refno, "查询流水状态为交易失败")
- }
- }
+// when {
+// YnrccUtil.DTL_STATUS_SUCCESS == resp.status ->
+// transactionService.success(refno, resp.bankjourno, false) //流水成功
+// YnrccUtil.DTL_STATUS_REFUND == resp.status -> {
+// //流水已退款 TODO:流水成功后才退款,无查询原成功流水逻辑
+// return
+// }
+// YnrccUtil.DTL_STATUS_PART_REFUND == resp.status -> {
+// //流水已部分退款 TODO:暂无逻辑
+// return
+// }
+// else -> {
+// //流水失败
+// transactionService.fail(refno, "查询流水状态为交易失败")
+// }
+// }
+ transactionService.success(transaction.refno, resp.agentRefno, false)
}
- YnrccUtil.CODE_NOT_EXISTS == resp.code ->
- transactionService.fail(refno, "银行流水不存在") //银行返回流水不存在
- YnrccUtil.CODE_EXCEPTION == resp.code ->
- queryResult(refno, qcnt + 1) //查询次数加1
+ AgentCode.REFNO_NOT_EXISTS -> transactionService.fail(transaction.refno, "银行流水不存在")
+ AgentCode.COMMON_ERROR -> queryResult(transaction, qcnt + 1)
else -> {
- //其他明确错误,查询失败
- logger.error("查询refno=[$refno]流水结果返回失败:code=[${resp.code}],message=[${resp.message}]")
+ transactionService.fail(transaction.refno, resp.agentMsg)
}
}
} catch (ex: Exception) {
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt
index b0be489..1e7cca9 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt
@@ -35,9 +35,8 @@
lateinit var cardService: CardService
@Autowired
private lateinit var applicationContext: ApplicationContext
-
@Autowired
- lateinit var citizencardQueryResultTask: CitizencardQueryResultTask
+ lateinit var agentQueryResultTask: AgentQueryResultTask
/**
* ============================================================================
@@ -226,7 +225,7 @@
}
AgentCode.REQUIRE_QUERY -> {
//去查询
- citizencardQueryResultTask.queryResult(dtl.refno, 0)
+ agentQueryResultTask.queryResult(dtl, 0)
return ResponseEntity.ok(ResponseBodyBuilder.create()
.fail(CitizenPayResponse(dtl.refno,
dtl.outTradeNo,
@@ -276,7 +275,7 @@
}
AgentCode.REQUIRE_QUERY -> {
//待查询
- citizencardQueryResultTask.queryResult(cancelTrans.refno, 0)
+ agentQueryResultTask.queryResult(cancelTrans, 0)
return ResponseEntity.ok(ResponseBodyBuilder.create()
.fail(PayReverseResponse(cancelTrans.refno),
TradeErrorCode.WAIT_QUERY_RESULT, "请查询撤销结果"))
@@ -331,7 +330,7 @@
}
AgentCode.REQUIRE_QUERY -> {
//待查询
- citizencardQueryResultTask.queryResult(refundTrans.refno, 0)
+ agentQueryResultTask.queryResult(refundTrans, 0)
return ResponseEntity.ok(ResponseBodyBuilder.create()
.fail(PayReverseResponse(refundTrans.refno),
TradeErrorCode.WAIT_QUERY_RESULT, "请查询撤销结果"))