diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/dao/SubAccountDao.java b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/SubAccountDao.java
new file mode 100644
index 0000000..ac193ab
--- /dev/null
+++ b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/SubAccountDao.java
@@ -0,0 +1,24 @@
+package com.supwisdom.dlpay.api.dao;
+
+import com.supwisdom.dlpay.api.domain.TSubAccount;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Lock;
+import org.springframework.data.jpa.repository.QueryHints;
+
+import javax.persistence.LockModeType;
+import javax.persistence.QueryHint;
+import java.util.List;
+
+public interface SubAccountDao extends JpaRepository<TSubAccount, String> {
+  List<TSubAccount> findAllByUserid(String userid);
+
+  TSubAccount readTSubAccountByUseridAndAccountName(String userid, String name);
+
+  @Lock(LockModeType.PESSIMISTIC_WRITE)
+  @QueryHints({@QueryHint(name = "javax.persistence.lock.timeout", value = "0")})
+  TSubAccount readLockTSubAccountByUseridAndAccountName(String userid, String name);
+
+  @Lock(LockModeType.OPTIMISTIC)
+  @QueryHints({@QueryHint(name = "javax.persistence.lock.timeout", value = "0")})
+  TSubAccount readLockTSubAccountById(String id);
+}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/dao/SubAccountMetadataDao.java b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/SubAccountMetadataDao.java
new file mode 100644
index 0000000..0e84845
--- /dev/null
+++ b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/SubAccountMetadataDao.java
@@ -0,0 +1,9 @@
+package com.supwisdom.dlpay.api.dao;
+
+import com.supwisdom.dlpay.api.domain.TSubAccountMetadata;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface SubAccountMetadataDao extends JpaRepository<TSubAccountMetadata, Integer> {
+  TSubAccountMetadata readByNameAndTenantid(String name, String tenantid);
+
+}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TPersondtl.java b/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TPersondtl.java
index 1c7f5d1..b77332f 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TPersondtl.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TPersondtl.java
@@ -28,9 +28,6 @@
   @Column(name = "ACCNO", length = 32)
   private String accountNo;
 
-  @Column(name = "accname", length = 32)
-  private String accountName; // 账户名
-
   @Column(name = "USERNAME", length = 200)
   private String userName;
 
@@ -325,11 +322,4 @@
     this.aftbal = aftbal;
   }
 
-  public String getAccountName() {
-    return accountName;
-  }
-
-  public void setAccountName(String accountName) {
-    this.accountName = accountName;
-  }
 }
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TSubAccount.java b/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TSubAccount.java
index b1878e3..6c048b9 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TSubAccount.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TSubAccount.java
@@ -141,4 +141,12 @@
   public void setTenantid(String tenantid) {
     this.tenantid = tenantid;
   }
+
+  public String getSubjno() {
+    return subjno;
+  }
+
+  public void setSubjno(String subjno) {
+    this.subjno = subjno;
+  }
 }
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TSubAccountMetadata.java b/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TSubAccountMetadata.java
index bb3e9d4..75229ea 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TSubAccountMetadata.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TSubAccountMetadata.java
@@ -23,6 +23,9 @@
   @Column(name = "title", length = 100)
   private String title;
 
+  @Column(name = "subjno", length = 16)
+  private String subjno;
+
   @Column(name = "description", length = 200)
   private String description;
 
@@ -69,4 +72,12 @@
   public void setTenantid(String tenantid) {
     this.tenantid = tenantid;
   }
+
+  public String getSubjno() {
+    return subjno;
+  }
+
+  public void setSubjno(String subjno) {
+    this.subjno = subjno;
+  }
 }
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TTransactionMain.java b/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TTransactionMain.java
index f81af48..7a80390 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TTransactionMain.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TTransactionMain.java
@@ -2,7 +2,6 @@
 
 import com.supwisdom.dlpay.framework.util.Subject;
 import com.supwisdom.dlpay.framework.util.TradeDict;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 
 import javax.persistence.*;
 import javax.validation.constraints.Digits;
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt
index 2061144..82ae2cc 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt
@@ -111,6 +111,7 @@
                     this.reverseFlag = TradeDict.REVERSE_FLAG_NONE
                     remark = builder.person().remark
                     tenantid = transaction.tenantid
+                    this.accountName = "main"
                     this.dtltype = builder.dtltype
                     this.status = status
                     this.anonymous = builder.person().isAnonymous()
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/transaction_builder.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/transaction_builder.kt
index 85ed71a..80682b9 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/transaction_builder.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/transaction_builder.kt
@@ -1,6 +1,7 @@
 package com.supwisdom.dlpay.api
 
 import com.supwisdom.dlpay.api.domain.TAccount
+import com.supwisdom.dlpay.api.domain.TSubAccount
 import com.supwisdom.dlpay.api.domain.TTransactionMain
 import com.supwisdom.dlpay.api.service.TransactionServiceProxy
 import com.supwisdom.dlpay.exception.TransactionCheckException
@@ -9,6 +10,7 @@
 import com.supwisdom.dlpay.framework.util.TradeDict
 import com.supwisdom.dlpay.framework.util.TradeErrorCode
 import org.apache.commons.lang3.StringUtils
+import java.time.temporal.TemporalAmount
 import kotlin.math.abs
 
 open class SubTransactionBuilder<T : SubTransactionBuilder<T>>(val parent: TransactionBuilder) {
@@ -84,11 +86,28 @@
 
 }
 
+data class PersonSubAccountTrans(val userid: String, val subAccName: String,
+                                 val amount: Double)
+
 class PersonTranactionBuilder(parent: TransactionBuilder, val person: TAccount?)
     : SubTransactionBuilder<PersonTranactionBuilder>(parent) {
+    private val subAccountList = mutableListOf<PersonSubAccountTrans>()
     fun isAnonymous(): Boolean {
         return person == null
     }
+
+    fun addSubAccount(subAccName: String, amount: Double): PersonTranactionBuilder {
+        if (isAnonymous()) {
+            throw TransactionCheckException(10001, "匿名用户不支持专款")
+        }
+        subAccountList.forEach {
+            if (it.subAccName == subAccName) {
+                throw TransactionCheckException(10001, "专款账户<$subAccName>已经消费")
+            }
+        }
+        subAccountList.add(PersonSubAccountTrans(person!!.userid, subAccName, amount))
+        return this
+    }
 }
 
 class ShopTransactionBuilder(parent: TransactionBuilder, val shopacc: TShopacc)
@@ -105,6 +124,7 @@
             is TAccount -> (accountObj as TAccount).accno
             is TShopacc -> (accountObj as TShopacc).shopaccno
             is TSubject -> (accountObj as TSubject).subjno
+            is TSubAccount -> (accountObj as TSubAccount).subjno
             else -> throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR,
                     "不支持的账户类型, $accountObj")
         }
@@ -115,6 +135,7 @@
             is TAccount -> (accountObj as TAccount).subjno
             is TShopacc -> (accountObj as TShopacc).subjno
             is TSubject -> (accountObj as TSubject).subjno
+            is TSubAccount -> (accountObj as TSubAccount).subjno
             else -> throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR,
                     "不支持的账户类型, $accountObj")
         }
@@ -125,6 +146,7 @@
             is TAccount -> (accountObj as TAccount).accname
             is TShopacc -> (accountObj as TShopacc).shopname
             is TSubject -> (accountObj as TSubject).subjname
+            is TSubAccount -> (accountObj as TSubAccount).accountName
             else -> throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR,
                     "不支持的账户类型, $accountObj")
         }
@@ -374,10 +396,6 @@
                     throw  TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR,
                             "个人交易对方账户未设置")
                 }
-//                if (it.payinfo.isEmpty()) {
-//                    throw  TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR,
-//                            "个人交易信息未设置")
-//                }
             }
         }
 
