diff --git a/src/main/java/com/supwisdom/dlpay/api/domain/TPersondtl.java b/src/main/java/com/supwisdom/dlpay/api/domain/TPersondtl.java
index 0e37a32..3713fe4 100644
--- a/src/main/java/com/supwisdom/dlpay/api/domain/TPersondtl.java
+++ b/src/main/java/com/supwisdom/dlpay/api/domain/TPersondtl.java
@@ -14,10 +14,10 @@
   @Column(name = "REFNO", nullable = false, length = 32)
   private String refno; //流水号
 
-  @Column(name = "ACCDATE", length = 8)
+  @Column(name = "ACCDATE", length = 8, nullable = false)
   private String accdate; //记账日期
 
-  @Column(name = "USERID", length = 32)
+  @Column(name = "USERID", length = 32, nullable = false)
   private String userid;  //用户ID，或账号
 
   @Column(name = "acccno", length = 32)
@@ -26,19 +26,19 @@
   @Column(name = "USERNAME", length = 200)
   private String userName;
 
-  @Column(name = "TRANSDATE", length = 8)
+  @Column(name = "TRANSDATE", length = 8, nullable = false)
   private String transdate;
 
-  @Column(name = "TRANSTIME", length = 6)
+  @Column(name = "TRANSTIME", length = 6, nullable = false)
   private String transtime;
 
-  @Column(name = "STATUS", length = 20)
+  @Column(name = "STATUS", length = 20, nullable = false)
   private String status;
 
   @Column(name = "BEFBAL", precision = 9, scale = 2)
   private Double befbal;
 
-  @Column(name = "amount", precision = 9, scale = 2)
+  @Column(name = "amount", precision = 9, scale = 2, nullable = false)
   private Double amount; //实际付款金额
 
   @Column(name = "PAYTYPE", length = 20)
@@ -47,7 +47,7 @@
   @Column(name = "PAYINFO", length = 200)
   private String payinfo; //记录支付信息备用字段
 
-  @Column(name = "TRANSCODE", precision = 4)
+  @Column(name = "TRANSCODE", precision = 4, nullable = false)
   private Integer transcode;
 
   @Column(name = "TRANSDESC", length = 240)
@@ -71,8 +71,8 @@
   @Column(name = "REVERSE_AMOUNT", precision = 9, scale = 2)
   private Double reverseAmount = 0D; //撤销金额填写
 
-  @Column(name = "TRADEFLAG", nullable = false, precision = 1)
-  private Integer tradeflag; //1-充值；2-消费
+  @Column(name = "TRADEFLAG", nullable = false, length = 10)
+  private String tradeflag; //deposit-充值；pay-消费
 
   @Column(name = "REMARK", length = 240)
   private String remark;
@@ -219,11 +219,11 @@
     this.reverseAmount = reverseAmount;
   }
 
-  public Integer getTradeflag() {
+  public String getTradeflag() {
     return tradeflag;
   }
 
-  public void setTradeflag(Integer tradeflag) {
+  public void setTradeflag(String tradeflag) {
     this.tradeflag = tradeflag;
   }
 
diff --git a/src/main/java/com/supwisdom/dlpay/api/domain/TShopdtl.java b/src/main/java/com/supwisdom/dlpay/api/domain/TShopdtl.java
index ad43a2f..2078c99 100644
--- a/src/main/java/com/supwisdom/dlpay/api/domain/TShopdtl.java
+++ b/src/main/java/com/supwisdom/dlpay/api/domain/TShopdtl.java
@@ -21,13 +21,13 @@
   @Column(name = "shopname", length = 200)
   private String shopname;
 
-  @Column(name = "amount", scale = 2, precision = 15)
+  @Column(name = "amount", scale = 2, precision = 15, nullable = false)
   private Double amount;
 
-  @Column(name = "transdate", length = 8)
+  @Column(name = "transdate", length = 8, nullable = false)
   private String transDate;
 
-  @Column(name = "transtime", length = 6)
+  @Column(name = "transtime", length = 6, nullable = false)
   private String transTime;
 
   @Column(name = "tradecode", precision = 8)
@@ -42,7 +42,7 @@
   @Column(name = "status", length = 20)
   private String status;
 
-  @Column(name = "OPPOSITEACCNO", length = 20)
+  @Column(name = "OPPOSITEACCNO", length = 64)
   private String oppositeAccNo;
 
   @Column(name = "OPPOSITEACCNAME", length = 200)
diff --git a/src/main/java/com/supwisdom/dlpay/api/domain/TTransactionMain.java b/src/main/java/com/supwisdom/dlpay/api/domain/TTransactionMain.java
index 76d767d..c60c621 100644
--- a/src/main/java/com/supwisdom/dlpay/api/domain/TTransactionMain.java
+++ b/src/main/java/com/supwisdom/dlpay/api/domain/TTransactionMain.java
@@ -54,7 +54,8 @@
   @JoinColumn(name = "refno", referencedColumnName = "refno")
   private TSubjectdtl subjectDtl;
 
-  @OneToMany(targetEntity = TDebitCreditDtl.class, mappedBy = "refno", fetch = LAZY)
+  @OneToMany(targetEntity = TDebitCreditDtl.class, fetch = LAZY)
+  @JoinColumn(name = "refno", referencedColumnName = "refno")
   private List<TDebitCreditDtl> details;
 
   public String getRefno() {
diff --git a/src/main/java/com/supwisdom/dlpay/framework/util/TradeDict.java b/src/main/java/com/supwisdom/dlpay/framework/util/TradeDict.java
index 8769f1f..ed6db07 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/util/TradeDict.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/util/TradeDict.java
@@ -33,6 +33,9 @@
   public static final String DTL_STATUS_WIP = "wip";
   public static final String DTL_STATUS_NONE = "none";
 
+
+  public static final String TRADE_FLAG_DEPOSIT = "deposit";
+  public static final String TRADE_FLAG_PAY = "pay";
   /**
    * 交易借方
    */
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 af1eefe..0d8007a 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
@@ -220,20 +220,23 @@
                 }.person(account).apply {
                     amount = param.amount / 100.0
                     opposite = AccountProxy(shopacc)
+                    tradeflag = TradeDict.TRADE_FLAG_PAY
                     summary = "市民卡代扣消费"
                 }.and().shop(shopacc).apply {
                     amount = param.amount / 100.0
                     opposite = AccountProxy(account)
                     summary = "市民卡代扣消费"
-                }.and().addDebitCreditRecord(AccountProxy(subject), AccountProxy(shopacc),
+                }.and().addDebitCreditRecord(AccountProxy(subject), AccountProxy(account),
                         param.amount / 100.0, "市民卡代扣消费")
+                        .addDebitCreditRecord(AccountProxy(account), AccountProxy(shopacc),
+                                param.amount / 100.0, "市民卡代扣消费")
                         .also { builder ->
                             param.feelist?.forEach {
                                 //fixme: 科目 -> 商户 与个人无关
                                 val feeconfig = accountUtilServcie.readFeetype(it.feetype,
                                         TradeDict.PAYTYPE_CITIZEN_CARD)
-                                val subject = accountUtilServcie.readSubject(feeconfig.drsubjno)
-                                builder.addDebitCreditRecord(AccountProxy(subject), AccountProxy(shopacc),
+                                val subj = accountUtilServcie.readSubject(feeconfig.drsubjno)
+                                builder.addDebitCreditRecord(AccountProxy(subj), AccountProxy(shopacc),
                                         it.amount / 100.0, feeconfig.summary)
 
                             }
diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt b/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt
index 3d799c2..f8ece69 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt
@@ -8,6 +8,7 @@
 import com.supwisdom.dlpay.api.service.PersonAccountService
 import com.supwisdom.dlpay.api.service.TransactionService
 import com.supwisdom.dlpay.exception.TransactionProcessException
+import com.supwisdom.dlpay.framework.service.SystemUtilService
 import com.supwisdom.dlpay.framework.util.Subject
 import com.supwisdom.dlpay.framework.util.TradeDict
 import com.supwisdom.dlpay.framework.util.TradeErrorCode
@@ -55,12 +56,15 @@
     @Autowired
     lateinit var shopaccRepository: ShopaccRepositoryImpl
 
+    @Autowired
+    lateinit var systemUtilService: SystemUtilService
+
     private fun builderRecords(builder: TransactionBuilder, status: String): TTransactionMain {
         // 记录三方的交易流水（个人，商户，科目)
         try {
             val transaction = TTransactionMain().apply {
-                refno = "20000000000001"
-                accdate = "20190520"
+                refno = systemUtilService.refno
+                accdate = systemUtilService.accdate
             }
 
 
@@ -77,6 +81,7 @@
                     paytype = builder.person().paytype
                     payinfo = builder.person().payinfo
                     transcode = builder.transCode
+                    tradeflag = builder.person().tradeflag
                     oppositeAccNo = builder.person().opposite.getAccountNo()
                     oppositeAccName = builder.person().opposite.getAccountName()
                     this.status = status
@@ -104,7 +109,6 @@
                     this.status = status
                 }.also {
                     // save shopdtl
-                    shopdtlDao.save(it)
                     transaction.shopDtl = it
                     transaction.shop = true
                 }
@@ -124,7 +128,6 @@
                     this.oppositeAccName = builder.subject().opposite.getAccountName()
                     this.status = status
                 }.also {
-                    subjectdtlDao.save(it)
                     transaction.subjectDtl = it
                     transaction.subject = true
                 }
@@ -141,18 +144,15 @@
                     this.crsubjno = line.credit.getSubjectNo()
                     this.amount = line.amount
                     this.summary = line.summary
-                }.also {
-                    debitCreditDtlDao.save(it)
                 }
             }.apply {
                 transaction.details = this
             }
 
-            val details = debitCreditDtlDao.findByRefno(transaction.refno)
 
             if (builder.hasPerson()) {
-                sumBalanceFromDetails(details, builder.person().person.accno,
-                        Subject.SUBJNO_PERSONAL_DEPOSIT).also {
+                sumBalanceFromDetails(transaction.details, builder.person().person.accno,
+                        builder.person().person.subjno, "debit").also {
                     if (transaction.personDtl.amount != it) {
                         throw TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR,
                                 "输入金额错误，个人余额不符<${transaction.personDtl.amount}>")
@@ -161,8 +161,8 @@
             }
 
             if (builder.hasShop()) {
-                sumBalanceFromDetails(details, builder.shop().shopacc.shopaccno,
-                        Subject.SUBJNO_MACHANT_INCOME).also {
+                sumBalanceFromDetails(transaction.details, builder.shop().shopacc.shopaccno,
+                        builder.shop().shopacc.subjno, "both").also {
                     if (transaction.shopDtl.amount != it) {
                         throw TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR,
                                 "输入金额错误，商户余额不符<${transaction.shopDtl.amount}>")
@@ -171,8 +171,8 @@
             }
 
             if (builder.hasSubject()) {
-                sumBalanceFromDetails(details, builder.subject().subject.subjno,
-                        transaction.subjectDtl.subjectno).also {
+                sumBalanceFromDetails(transaction.details, builder.subject().subject.subjno,
+                        transaction.subjectDtl.subjectno, "both").also {
                     if (transaction.subjectDtl.amount != it) {
                         throw TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR,
                                 "输入金额错误，科目余额不符<${transaction.subjectDtl.amount}>")
@@ -196,16 +196,30 @@
     }
 
     private fun sumBalanceFromDetails(details: List<TDebitCreditDtl>,
-                                      accno: String, subjno: String): Double {
-        return details.sumByDouble { line ->
-            if (line.crsubjno == subjno && line.craccno == accno) {
+                                      accno: String, subjno: String,
+                                      debitOrCredit: String = "debit"): Double {
+
+        val debitAmount = details.sumByDouble { line ->
+            if (line.drsubjno == subjno && line.draccno == accno) {
                 line.amount
-            } else if (line.crsubjno == subjno && line.craccno == accno) {
-                -line.amount
             } else {
                 0.0
             }
         }
+        val creditAmount = details.sumByDouble { line ->
+            if (line.crsubjno == subjno && line.craccno == accno) {
+                line.amount
+            } else {
+                0.0
+            }
+        }
+        return when (debitOrCredit) {
+            "debit" -> debitAmount
+            "credit" -> creditAmount
+            "both" -> creditAmount - debitAmount
+            else -> throw TransactionProcessException(TradeErrorCode.BUSINESS_DEAL_ERROR,
+                    "结算借贷方向余额错误")
+        }
     }
 
     override fun wip(refno: String): TTransactionMain {
diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/transaction_builder.kt b/src/main/kotlin/com/supwisdom/dlpay/api/transaction_builder.kt
index 20d93f8..847aab8 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/api/transaction_builder.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/api/transaction_builder.kt
@@ -8,6 +8,7 @@
 import com.supwisdom.dlpay.framework.domain.TShopacc
 import com.supwisdom.dlpay.framework.domain.TSubject
 import com.supwisdom.dlpay.framework.util.Subject
+import com.supwisdom.dlpay.framework.util.TradeDict
 import com.supwisdom.dlpay.framework.util.TradeErrorCode
 
 open class SubTransactionBuilder(val parent: TransactionBuilder) {
@@ -31,6 +32,7 @@
     var amount: Double = 0.0
     var summary: String = ""
     var description: String = ""
+    var tradeflag : String = ""
     lateinit var opposite: AccountProxy<*>
 
 }
@@ -105,8 +107,6 @@
     var paytype: String = ""
     var payinfo: String = ""
     var outtradeno: String = "" //第三方流水号
-    val extendMap = mutableMapOf<String, String>() //存调第三方需要的参数信息，存数据库 TB_USERDTL_BUSINESS
-    val resultMap = mutableMapOf<String, String>() //存调第三方结果数据
 
     fun person(): PersonTranactionBuilder {
         return this.personBuilder
@@ -202,6 +202,7 @@
                 this.amount = (amount + manageFee) / 100.0 // 金额考虑减和加
                 this.summary = "POS消费"
                 this.opposite = AccountProxy(shop)
+                this.tradeflag = TradeDict.TRANS_DIRECTION_CREDIT
             }.and().shop(shop).apply {
                 this.amount = amount / 100.0 // 金额考虑减和加
                 this.summary = "POS消费"
diff --git a/src/main/kotlin/com/supwisdom/dlpay/framework/framework_util.kt b/src/main/kotlin/com/supwisdom/dlpay/framework/framework_util.kt
index 58f6bf3..2137335 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/framework/framework_util.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/framework/framework_util.kt
@@ -11,7 +11,7 @@
 class ResponseBodyBuilder private constructor() {
     companion object {
         private const val INVALIDE_RETCODE = -0x7FFFFFFF
-        private val RESERVED_KEY = setOf("retcode", "retmsg", "exception")
+        private val RESERVED_KEY = setOf("retcode", "retmsg")
         private val LOGGER = KotlinLogging.logger {}
         fun create() = ResponseBodyBuilder()
     }
@@ -75,7 +75,7 @@
             throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR, "未设置返回码!")
         } else if (retCode != 0) {
             LOGGER.error("【 ==== ERROR ==== 】: " + Gson().toJson(this.respData))
-        }else{
+        } else {
             LOGGER.info("retcode=[0],retmsg=[$retMsg] return success!!! \n" + Gson().toJson(this.respData))
         }
         return this.respData.plus(mapOf("retcode" to retCode, "retmsg" to retMsg))
diff --git a/src/main/resources/db/migration/V1.3__init_data.sql b/src/main/resources/db/migration/V1.3__init_data.sql
new file mode 100644
index 0000000..f2b0d7d
--- /dev/null
+++ b/src/main/resources/db/migration/V1.3__init_data.sql
@@ -0,0 +1 @@
+Insert into TB_SUBJECT (SUBJNO,SUBJNAME,SUBJTYPE,BALFLAG,FSUBJNO,SUBJLEVEL,ENDFLAG,OPENDATE,DISPLAYFLAG) values ('112234','市民卡支付款',1,1,'1122',2,1,null,'y');
\ No newline at end of file
