diff --git a/.gitignore b/.gitignore
index 63177e3..8cb1d9f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,6 +11,7 @@
 .settings
 .springBeans
 .sts4-cache
+.DS_Store
 
 ### IntelliJ IDEA ###
 .idea
diff --git a/src/main/java/com/supwisdom/dlpay/consume/controller/TestAction.java b/src/main/java/com/supwisdom/dlpay/consume/controller/TestAction.java
index a53e942..4883502 100644
--- a/src/main/java/com/supwisdom/dlpay/consume/controller/TestAction.java
+++ b/src/main/java/com/supwisdom/dlpay/consume/controller/TestAction.java
@@ -1,7 +1,6 @@
 package com.supwisdom.dlpay.consume.controller;
 
 import com.supwisdom.dlpay.consume.bean.BaseResp;
-import com.supwisdom.dlpay.consume.service.TestService;
 import com.supwisdom.dlpay.framework.data.SystemDateTime;
 import com.supwisdom.dlpay.framework.service.SystemUtilService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -13,15 +12,11 @@
 public class TestAction {
   @Autowired
   private SystemUtilService systemUtilService;
-  @Autowired
-  private TestService testService;
 
   @RequestMapping("/demo")
   public BaseResp test() {
     SystemDateTime dt = systemUtilService.getSysdatetime();
 
-    testService.doTest();
-
     BaseResp resp = new BaseResp();
     resp.setRetcode("0");
     resp.setRetmsg("OK");
diff --git a/src/main/java/com/supwisdom/dlpay/consume/dao/UserdtlDao.java b/src/main/java/com/supwisdom/dlpay/consume/dao/UserdtlDao.java
index 20cd807..f49fea8 100644
--- a/src/main/java/com/supwisdom/dlpay/consume/dao/UserdtlDao.java
+++ b/src/main/java/com/supwisdom/dlpay/consume/dao/UserdtlDao.java
@@ -6,4 +6,5 @@
 
 @Repository
 public interface UserdtlDao extends JpaRepository<TUserdtl, String> {
+  TUserdtl findByRefno(String refno);
 }
diff --git a/src/main/java/com/supwisdom/dlpay/consume/domain/TPayCreditDtl.java b/src/main/java/com/supwisdom/dlpay/consume/domain/TPayCreditDtl.java
deleted file mode 100644
index 9a2e3fa..0000000
--- a/src/main/java/com/supwisdom/dlpay/consume/domain/TPayCreditDtl.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.supwisdom.dlpay.consume.domain;
-
-import javax.persistence.Entity;
-import javax.persistence.Table;
-
-@Entity
-@Table(name = "t_paycreditdtl")
-public class TPayCreditDtl {
-  private String refno;
-  private Integer rowno;
-  /**
-   * 贷方账号
-   */
-  private String accNo;
-  private String accSubjNo;
-
-  private String otherAccNo;
-
-  /**
-   * 发生金额
-   */
-  private Double amount;
-
-  /**
-   * 交易方向 credit, debit
-   */
-  private String direction;
-
-  /**
-   * 交易摘要
-   */
-  private String summary;
-}
diff --git a/src/main/java/com/supwisdom/dlpay/consume/domain/TPaydtl.java b/src/main/java/com/supwisdom/dlpay/consume/domain/TPaydtl.java
deleted file mode 100644
index e2e79e7..0000000
--- a/src/main/java/com/supwisdom/dlpay/consume/domain/TPaydtl.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package com.supwisdom.dlpay.consume.domain;
-
-import javax.persistence.Entity;
-import javax.persistence.Table;
-
-@Entity
-@Table(name = "t_paydtl")
-public class TPaydtl {
-  private String refno;
-  /**
-   * 交易关联个人信息
-   */
-  private String userid;
-  private String name;
-  /**
-   * 记账日期
-   */
-  private String accDate;
-  /**
-   * 交易发生日期
-   */
-  private String transDate;
-  private String transTime;
-
-  /**
-   * 交易代码
-   */
-  private Integer transCode;
-  private String transName;
-  /**
-   * 可选值 init, wip, success, failed
-   */
-  private String status;
-  /**
-   * 交易总金额
-   */
-  private Double amount;
-  /**
-   * 交易前个人账户余额
-   */
-  private Double befBalance;
-  /**
-   * 借方账号
-   */
-  private String accNo;
-  private String accName;
-  /**
-   * 借方科目号
-   */
-  private String accSubjNo;
-
-  /**
-   * 交易方向 credit, debit
-   */
-  private String direction;
-  /**
-   * 结算标志 none, ok
-   */
-  private String settleStatus;
-  /**
-   * 结算日期
-   */
-  private String settleDate;
-  /**
-   * 可选值 none, cancel, reversed
-   */
-  private String reverseFlag;
-  /**
-   * 当有撤销交易时，撤销金额填写
-   */
-  private Double reverseAmount;
-
-  /**
-   * 交易说明
-   */
-  private String describe;
-
-  /**
-   * 交易字表
-   */
-  private String detailType;
-
-}
diff --git a/src/main/java/com/supwisdom/dlpay/framework/dao/PaydtlDao.java b/src/main/java/com/supwisdom/dlpay/framework/dao/PaydtlDao.java
deleted file mode 100644
index 84affc8..0000000
--- a/src/main/java/com/supwisdom/dlpay/framework/dao/PaydtlDao.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.supwisdom.dlpay.framework.dao;
-
-import com.supwisdom.dlpay.consume.domain.TPaydtl;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-@Repository
-public interface PaydtlDao extends JpaRepository<TPaydtl, String> {
-
-}
diff --git a/src/main/java/com/supwisdom/dlpay/framework/service/PersonPayService.java b/src/main/java/com/supwisdom/dlpay/framework/service/PersonPayService.java
deleted file mode 100644
index 3174c2b..0000000
--- a/src/main/java/com/supwisdom/dlpay/framework/service/PersonPayService.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.supwisdom.dlpay.framework.service;
-
-import com.supwisdom.dlpay.consume.domain.TPaydtl;
-import org.springframework.stereotype.Service;
-
-@Service
-public interface PersonPayService {
-  TPaydtl process(PayDtlBuilder builder);
-}
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 27b72ff..6e17cef 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/consume/comsume_builder.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/consume/comsume_builder.kt
@@ -1,8 +1,8 @@
 package com.supwisdom.dlpay.consume
 
 import com.supwisdom.dlpay.consume.domain.TAccount
-import com.supwisdom.dlpay.consume.domain.TPaydtl
 import com.supwisdom.dlpay.consume.domain.TPerson
+import com.supwisdom.dlpay.consume.domain.TUserdtl
 import com.supwisdom.dlpay.consume.service.AccountUtilServcie
 import com.supwisdom.dlpay.consume.service.PersonBalancePayService
 import com.supwisdom.dlpay.exception.TransactionCheckException
@@ -152,7 +152,7 @@
      * @param service
      * @param isFinished - true : 完成交易过程,扣除账户余额; false - 完成检查
      */
-    fun done(service: PersonBalancePayService, isFinished: Boolean): TPaydtl {
+    fun done(service: PersonBalancePayService, isFinished: Boolean): TUserdtl {
         prepareData()
         preCheckAccount()
         return service.process(this)
@@ -163,11 +163,11 @@
      * @param paydtl
      * @param status - 完成交易状态，见 TradeDict.DTL_STATUS_FAIL
      */
-    fun done(paydtl: TPaydtl, status: String, service: PersonBalancePayService): TPaydtl {
+    fun done(paydtl: TUserdtl, status: String, service: PersonBalancePayService): TUserdtl {
         TODO("finish")
     }
 
-    fun done(refno: String, status: String, service: PersonBalancePayService): TPaydtl {
+    fun done(refno: String, status: String, service: PersonBalancePayService): TUserdtl {
         TODO("add process")
     }
 }
\ No newline at end of file
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 c77c2d5..e2c848f 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
@@ -2,12 +2,12 @@
 
 import com.supwisdom.dlpay.consume.PersonTransBuilder
 import com.supwisdom.dlpay.consume.dao.AccountDao
+import com.supwisdom.dlpay.consume.dao.UserdtlDao
 import com.supwisdom.dlpay.consume.domain.TAccount
-import com.supwisdom.dlpay.consume.domain.TPaydtl
+import com.supwisdom.dlpay.consume.domain.TUserdtl
 import com.supwisdom.dlpay.consume.service.AccountUtilServcie
 import com.supwisdom.dlpay.consume.service.PersonBalancePayService
 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
@@ -53,7 +53,7 @@
 @Service
 class PersonBalancePayServiceImpl : PersonBalancePayService {
     @Autowired
-    lateinit var paydtlDao: PaydtlDao
+    lateinit var userdtlDao: UserdtlDao
 
     @Autowired
     lateinit var accountDao: AccountDao
@@ -65,28 +65,28 @@
         TODO("")
     }
 
-    override fun process(builder: PersonTransBuilder): TPaydtl {
+    override fun process(builder: PersonTransBuilder): TUserdtl {
         TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
     }
 
-    override fun init(builder: PersonTransBuilder): TPaydtl {
+    override fun init(builder: PersonTransBuilder): TUserdtl {
         TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
     }
 
-    override fun wip(paydtl: TPaydtl, builder: PersonTransBuilder): TPaydtl {
+    override fun wip(paydtl: TUserdtl, builder: PersonTransBuilder): TUserdtl {
         TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
     }
 
-    override fun wip(refno: String, builder: PersonTransBuilder): TPaydtl {
+    override fun wip(refno: String, builder: PersonTransBuilder): TUserdtl {
         TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
     }
 
-    override fun finish(paydtl: TPaydtl, status: String, builder: PersonTransBuilder): TPaydtl {
+    override fun finish(paydtl: TUserdtl, status: String, builder: PersonTransBuilder): TUserdtl {
         TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
     }
 
-    override fun finish(refno: String, status: String, builder: PersonTransBuilder): TPaydtl {
-        paydtlDao.findById(refno).let {
+    override fun finish(refno: String, status: String, builder: PersonTransBuilder): TUserdtl {
+        userdtlDao.findById(refno).let {
             if (it.isPresent) {
                 return finish(it.get(), status, builder)
             }
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 8897569..0c4a6c6 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
@@ -2,7 +2,7 @@
 
 import com.supwisdom.dlpay.consume.PersonTransBuilder
 import com.supwisdom.dlpay.consume.domain.TAccount
-import com.supwisdom.dlpay.consume.domain.TPaydtl
+import com.supwisdom.dlpay.consume.domain.TUserdtl
 import com.supwisdom.dlpay.framework.domain.TShopacc
 import com.supwisdom.dlpay.framework.domain.TSubject
 import com.supwisdom.dlpay.framework.domain.TTranstype
@@ -26,24 +26,24 @@
     /**
      * 一步完成交易
      */
-    fun process(builder: PersonTransBuilder): TPaydtl
+    fun process(builder: PersonTransBuilder): TUserdtl
 
     /**
      * 两步交易，交易初始化方法，检查交易参数，记录交易流水
      */
-    fun init(builder: PersonTransBuilder): TPaydtl
+    fun init(builder: PersonTransBuilder): TUserdtl
 
     /**
      * 两步交易，交易过程中判断交易状态，并更新交易状态为 wip
      */
-    fun wip(paydtl: TPaydtl, builder: PersonTransBuilder): TPaydtl
+    fun wip(paydtl: TUserdtl, builder: PersonTransBuilder): TUserdtl
 
-    fun wip(refno: String, builder: PersonTransBuilder): TPaydtl
+    fun wip(refno: String, builder: PersonTransBuilder): TUserdtl
 
     /**
      * 两步交易，完成交易过程，包括更新交易状态（成功、失败），更新借贷双方余额
      */
-    fun finish(paydtl: TPaydtl, status: String, builder: PersonTransBuilder): TPaydtl
+    fun finish(paydtl: TUserdtl, status: String, builder: PersonTransBuilder): TUserdtl
 
-    fun finish(refno: String, status: String, builder: PersonTransBuilder): TPaydtl
+    fun finish(refno: String, status: String, builder: PersonTransBuilder): TUserdtl
 }
\ No newline at end of file
