refacor: 优化了商户账户余额更新逻辑
authorTang Cheng <cheng.tang@supwisdom.com>
Tue, 18 Jun 2019 03:08:48 +0000 (11:08 +0800)
committerTang Cheng <cheng.tang@supwisdom.com>
Tue, 18 Jun 2019 07:53:21 +0000 (15:53 +0800)
src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt
src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt
src/main/kotlin/com/supwisdom/dlpay/api/service/transaction_service.kt

index 737ddc3..1214889 100644 (file)
@@ -1,5 +1,6 @@
 package com.supwisdom.dlpay.api.controller
 
+import com.supwisdom.dlpay.ShopAccBalanceAsyncTask
 import com.supwisdom.dlpay.api.AccountProxy
 import com.supwisdom.dlpay.api.CallService
 import com.supwisdom.dlpay.api.TransactionBuilder
@@ -48,6 +49,9 @@ class ConsumeAPIController {
     @Autowired
     lateinit var transactionService: TransactionService
 
+    @Autowired
+    private lateinit var shopAccBalanceAsyncTask: ShopAccBalanceAsyncTask
+
     /**
      * 流水结果查询统一接口
      * */
@@ -162,7 +166,7 @@ class ConsumeAPIController {
                 }.and().shop(shopacc).apply {
                     setAmount(param.amount / 100.0, TradeDict.TRADE_FLAG_IN)
                     opposite = AccountProxy(account)
-                }.and().also {builder ->
+                }.and().also { builder ->
                     param.feelist?.forEach {
                         when (it.feetype) {
                             TradeDict.FEETYPE_CONSUME_MEALER -> {
@@ -177,7 +181,7 @@ class ConsumeAPIController {
                     }
                 }.init(transactionService)
 
-                transactionService.success(dtl.refno)
+                transactionService.success(dtl.refno, "")
 
                 return ResponseEntity.ok(ResponseBodyBuilder.create()
                         .data("refno", dtl.refno)
@@ -284,12 +288,14 @@ class ConsumeAPIController {
                         it.shopDtl)
             }
             if (code.retcode == "0") {
-                transactionService.success(param.refno).let {
+                transactionService.success(param.refno, "支付").let {
                     return ResponseEntity.ok(ResponseBodyBuilder.create()
                             .data("refno", it.refno)
                             .data("billno", it.outTradeNo)
                             .success("交易确认成功"))
                 }
+
+
             } else {
                 transactionService.fail(param.refno).let {
                     return ResponseEntity.ok(ResponseBodyBuilder.create()
index 17b45f0..05b57b2 100644 (file)
@@ -38,9 +38,6 @@ class TransactionServiceImpl : TransactionService {
     @Autowired
     private lateinit var accountService: AccountService
 
-    @Autowired
-    private lateinit var shopaccService: ShopaccService
-
     @Autowired
     private lateinit var systemUtilService: SystemUtilService
 
@@ -312,12 +309,20 @@ class TransactionServiceImpl : TransactionService {
         if (transaction.shop) {
             transaction.shopDtl.remark = remark
         }
-        transaction.endTime = Timestamp(systemUtilService.sysdatetime.sysdate.time)
+        transaction.endTime = systemUtilService.sysdatetime.currentTimestamp
         transactionMainDao.save(transaction)
         return transaction
     }
 
     override fun success(refno: String, remark: String): TTransactionMain {
+        val transaction = successOnAccount(refno, remark)
+        if (transaction.status == TradeDict.DTL_STATUS_SUCCESS) {
+            shopAccBalanceAsyncTask.updateShopBalance(transaction.refno)
+        }
+        return transaction
+    }
+
+    override fun successOnAccount(refno: String, remark: String): TTransactionMain {
         val transaction = transactionMainDao.findByRefnoForUpdate(refno)
                 ?: throw TransactionProcessException(TradeErrorCode.TRANSACTION_IS_FINISHED, "流水<$refno>参考号错误")
 
@@ -329,7 +334,7 @@ class TransactionServiceImpl : TransactionService {
         transaction.accdate = systemUtilService.accdate
         transactionOnSuccess(transaction, remark, false)
 
-        transaction.endTime = Timestamp(systemUtilService.sysdatetime.sysdate.time)
+        transaction.endTime = systemUtilService.sysdatetime.currentTimestamp
         transactionMainDao.save(transaction)
         return transaction
     }
index f0acef4..c2b942a 100644 (file)
@@ -22,10 +22,10 @@ interface TransactionService {
     fun fail(refno: String, remark: String): TTransactionMain
 
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = [Exception::class])
-    fun success(refno: String): TTransactionMain
+    fun successOnAccount(refno: String, remark: String): TTransactionMain
 
-    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = [Exception::class])
     fun success(refno: String, remark: String): TTransactionMain
+    fun success(refno: String): TTransactionMain
 
     // 撤销接口冲正类接口
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = [Exception::class])