From: Tang Cheng Date: Thu, 18 Jul 2019 00:55:45 +0000 (+0800) Subject: 改进了task任务 X-Git-Tag: 1.0.0^2~29 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=0658a347c25d74b56cde8efcdb95f5d02881c4ea;p=epayment%2Ffood_payapi.git 改进了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 73f8ba64..9448f3d7 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 @@ import java.util.concurrent.Executor @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 @@ class ShopAccBalanceAsyncTask { } @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 b0be4894..1e7cca95 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 @@ class ConsumeAPIController { lateinit var cardService: CardService @Autowired private lateinit var applicationContext: ApplicationContext - @Autowired - lateinit var citizencardQueryResultTask: CitizencardQueryResultTask + lateinit var agentQueryResultTask: AgentQueryResultTask /** * ============================================================================ @@ -226,7 +225,7 @@ class ConsumeAPIController { } 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 @@ class ConsumeAPIController { } 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 @@ class ConsumeAPIController { } 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, "请查询撤销结果"))