diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt b/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt
index c1ed619..737ddc3 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt
@@ -148,7 +148,7 @@
                 val account = accountUtilServcie.readAccount(person.userid)
                 val shopacc = accountUtilServcie.readShopbyShopaccno(param.shopaccno)
 
-                val builder = TransactionBuilder().apply {
+                val dtl = TransactionBuilder().apply {
                     setTransInfo(param.transdate, param.transtime,
                             TradeCode.TRANSCODE_BALANCE_PAY,
                             TradeDict.PAYTYPE_BALANCE)
@@ -162,22 +162,21 @@
                 }.and().shop(shopacc).apply {
                     setAmount(param.amount / 100.0, TradeDict.TRADE_FLAG_IN)
                     opposite = AccountProxy(account)
-                }.and()
-
-                param.feelist?.forEach {
-                    when (it.feetype) {
-                        TradeDict.FEETYPE_CONSUME_MEALER -> {
-                            consumeMealer(param, builder, it, account, shopacc)
+                }.and().also {builder ->
+                    param.feelist?.forEach {
+                        when (it.feetype) {
+                            TradeDict.FEETYPE_CONSUME_MEALER -> {
+                                consumeMealer(param, builder, it, account, shopacc)
+                            }
+                            TradeDict.FEETYPE_CONSUME_DISCOUNT -> {
+                                consumeDiscount(param, builder, it, account, shopacc)
+                            }
+                            else -> throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR,
+                                    "支付费率清单不支持feetype<${it.feetype}>")
                         }
-                        TradeDict.FEETYPE_CONSUME_DISCOUNT -> {
-                            consumeDiscount(param, builder, it, account, shopacc)
-                        }
-                        else -> throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR,
-                                "支付费率清单不支持feetype<${it.feetype}>")
                     }
-                }
+                }.init(transactionService)
 
-                val dtl = builder.init(transactionService)
                 transactionService.success(dtl.refno)
 
                 return ResponseEntity.ok(ResponseBodyBuilder.create()
