diff --git a/src/main/kotlin/com/supwisdom/dlpay/consume/comsume_builder.kt b/src/main/kotlin/com/supwisdom/dlpay/consume/comsume_builder.kt
index cb10e5f..27b72ff 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/consume/comsume_builder.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/consume/comsume_builder.kt
@@ -5,19 +5,21 @@
 import com.supwisdom.dlpay.consume.domain.TPerson
 import com.supwisdom.dlpay.consume.service.AccountUtilServcie
 import com.supwisdom.dlpay.consume.service.PersonBalancePayService
+import com.supwisdom.dlpay.exception.TransactionCheckException
 import com.supwisdom.dlpay.framework.domain.TShopacc
 import com.supwisdom.dlpay.framework.domain.TSubject
 import com.supwisdom.dlpay.framework.domain.TTranstype
+import com.supwisdom.dlpay.framework.util.TradeErrorCode
 
-class AccountHolder<out T> private constructor(val accountId: String, val idType: Int) {
+class AccountHolder<T> private constructor(val accountId: String, val idType: Int) {
     companion object {
-        const val IDTYPE_ACCOUNT = 1
+        const val IDTYPE_PERSON = 1
         const val IDTYPE_SHOP = 2
         const val IDTYPE_SUBJECT = 3
         const val IDTYPE_TRANSTYPE = 4
 
         fun person(userid: String): AccountHolder<TAccount> {
-            return AccountHolder<TAccount>(userid, IDTYPE_ACCOUNT)
+            return AccountHolder<TAccount>(userid, IDTYPE_PERSON)
         }
 
         fun shop(shopid: String): AccountHolder<TShopacc> {
@@ -33,10 +35,17 @@
         }
     }
 
-    internal lateinit var build: PersonTransBuilder
+    private lateinit var builder: PersonTransBuilder
 
-    fun get(): T {
-        TODO("add rule")
+    @Suppress("UNCHECKED_CAST", "IMPLICIT_CAST_TO_ANY")
+    fun <T> get(): T {
+        return when (idType) {
+            IDTYPE_PERSON -> builder.accountUtil.readAccount(accountId)
+            IDTYPE_SHOP -> builder.accountUtil.readShopAcc(accountId)
+            IDTYPE_SUBJECT -> builder.accountUtil.readSubject(accountId)
+            IDTYPE_TRANSTYPE -> builder.accountUtil.readTranstype(accountId.toInt())
+            else -> throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR, "账户类型未知type<$idType>")
+        } as T
     }
 
     fun withLock(nowait: Boolean): T {
@@ -49,7 +58,8 @@
         fun newBuilder(accUitl: AccountUtilServcie) = PersonTransBuilder(accUitl)
     }
 
-    inner class TransDetail(val debitAccNo: String, val creditAccNo: String,
+    inner class TransDetail(val debitAccNo: String, val debitSubjNo: String,
+                            val creditAccNo: String, val creditSubjNo: String,
                             val amount: Double, val summary: String,
                             val rowno: Int)
 
@@ -93,15 +103,47 @@
     private fun preCheckAccount() {
     }
 
-    fun addDetail(debitAccNo: String, creditAccNo: String,
-                  amount: Double, summary: String): PersonTransBuilder {
-        this.details.add(TransDetail(debitAccNo, creditAccNo, amount,
-                summary, this.details.size + 1))
-        return this
-    }
-
     fun <T, U> addDetail(debit: AccountHolder<T>, credit: AccountHolder<U>,
                          amount: Double, summary: String): PersonTransBuilder {
+        var debitAccNo = ""
+        var debitSubjNo = ""
+        when (debit.idType) {
+            AccountHolder.IDTYPE_PERSON -> debit.get<TAccount>().also {
+                debitAccNo = it.accno
+                debitSubjNo = it.subjno
+            }
+            AccountHolder.IDTYPE_SHOP -> debit.get<TShopacc>().also {
+                debitAccNo = it.shopaccno
+                debitSubjNo = it.subjno
+            }
+            AccountHolder.IDTYPE_SUBJECT -> debit.get<TSubject>().also {
+                debitAccNo = it.subjno
+                debitSubjNo = it.subjno
+            }
+            AccountHolder.IDTYPE_TRANSTYPE -> TODO("not implements")
+        }
+
+
+        var creditAccNo = ""
+        var creditSubjNo = ""
+        when (credit.idType) {
+            AccountHolder.IDTYPE_PERSON -> credit.get<TAccount>().also {
+                creditAccNo = it.accno
+                creditSubjNo = it.subjno
+            }
+            AccountHolder.IDTYPE_SHOP -> credit.get<TShopacc>().also {
+                creditAccNo = it.shopaccno
+                creditSubjNo = it.subjno
+            }
+            AccountHolder.IDTYPE_SUBJECT -> credit.get<TSubject>().also {
+                creditAccNo = it.subjno
+                creditSubjNo = it.subjno
+            }
+            AccountHolder.IDTYPE_TRANSTYPE -> TODO("not implements")
+        }
+
+        this.details.add(TransDetail(debitAccNo, debitSubjNo, creditAccNo, creditSubjNo,
+                amount, summary, this.details.size + 1))
         return this
     }
 
diff --git a/src/main/kotlin/com/supwisdom/dlpay/consume/controller/consume_service.kt b/src/main/kotlin/com/supwisdom/dlpay/consume/controller/consume_service.kt
index 01a143a..7276c02 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/consume/controller/consume_service.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/consume/controller/consume_service.kt
@@ -8,6 +8,7 @@
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.http.ResponseEntity
 import org.springframework.web.bind.annotation.GetMapping
+import org.springframework.web.bind.annotation.PostMapping
 import org.springframework.web.bind.annotation.RestController
 
 @RestController
@@ -18,7 +19,7 @@
     @Autowired
     lateinit var personBalancePayService: PersonBalancePayService
 
-    @GetMapping("/account/pay")
+    @PostMapping("/account/pay")
     fun accountPay(userid: String, amount: Int, manageFee: Int): ResponseEntity<Any> {
         val dtl = PersonTransBuilder.newBuilder(accountUtilServcie)
                 .setTransDatetime("20190411", "112311")
diff --git a/src/main/kotlin/com/supwisdom/dlpay/consume/service/impl/pay_service_impl.kt b/src/main/kotlin/com/supwisdom/dlpay/consume/service/impl/pay_service_impl.kt
index 155f9fd..c77c2d5 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/consume/service/impl/pay_service_impl.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/consume/service/impl/pay_service_impl.kt
@@ -9,6 +9,8 @@
 import com.supwisdom.dlpay.exception.TransactionProcessException
 import com.supwisdom.dlpay.framework.dao.PaydtlDao
 import com.supwisdom.dlpay.framework.domain.TShopacc
+import com.supwisdom.dlpay.framework.domain.TSubject
+import com.supwisdom.dlpay.framework.domain.TTranstype
 import com.supwisdom.dlpay.framework.util.TradeErrorCode
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.stereotype.Service
@@ -34,6 +36,18 @@
     override fun readShopAcc(shopId: String): TShopacc {
         TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
     }
+
+    override fun readSubjectForUpdate(subjno: String, nowait: Boolean): TSubject {
+        TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
+    }
+
+    override fun readSubject(subjno: String): TSubject {
+        TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
+    }
+
+    override fun readTranstype(transtype: Int): TTranstype {
+        TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
+    }
 }
 
 @Service
diff --git a/src/main/kotlin/com/supwisdom/dlpay/consume/service/pay_service.kt b/src/main/kotlin/com/supwisdom/dlpay/consume/service/pay_service.kt
index 66d3b37..8897569 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/consume/service/pay_service.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/consume/service/pay_service.kt
@@ -4,6 +4,8 @@
 import com.supwisdom.dlpay.consume.domain.TAccount
 import com.supwisdom.dlpay.consume.domain.TPaydtl
 import com.supwisdom.dlpay.framework.domain.TShopacc
+import com.supwisdom.dlpay.framework.domain.TSubject
+import com.supwisdom.dlpay.framework.domain.TTranstype
 
 interface AccountUtilServcie {
 
@@ -12,6 +14,11 @@
 
     fun readShopAccForUpdate(shopId: String, nowait: Boolean): TShopacc
     fun readShopAcc(shopId: String): TShopacc
+
+    fun readSubjectForUpdate(subjno: String, nowait: Boolean): TSubject
+    fun readSubject(subjno: String): TSubject
+
+    fun readTranstype(transtype: Int) : TTranstype
 }
 
 interface PersonBalancePayService {
