优化代码
diff --git a/src/main/java/com/supwisdom/dlpay/consume/service/impl/PaytypeServiceImpl.java b/src/main/java/com/supwisdom/dlpay/consume/service/impl/PaytypeServiceImpl.java
index 5aad223..1c99381 100644
--- a/src/main/java/com/supwisdom/dlpay/consume/service/impl/PaytypeServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/consume/service/impl/PaytypeServiceImpl.java
@@ -17,23 +17,23 @@
  */
 @Service
 public class PaytypeServiceImpl implements PaytypeService {
-    @Autowired
-    private PaytypeDao paytypeDao;
-    @Autowired
-    private PaytypeConfigDao paytypeConfigDao;
+  @Autowired
+  private PaytypeDao paytypeDao;
+  @Autowired
+  private PaytypeConfigDao paytypeConfigDao;
 
-    @Override
-    public TPaytype getByPaytype(String paytype) {
-        return paytypeDao.getOne(paytype);
-    }
+  @Override
+  public TPaytype getByPaytype(String paytype) {
+    return paytypeDao.getOne(paytype);
+  }
 
-    @Override
-    public Map<String, String> getPaytypeConfigByPaytype(String pattype) {
-        List<TPaytypeConfig> list = paytypeConfigDao.getByPaytype(pattype);
-        Map<String, String> map = new HashMap<>(list.size());
-        for (TPaytypeConfig paytypeConfig : list) {
-            map.put(paytypeConfig.getConfigid(), paytypeConfig.getConfigValue());
-        }
-        return map;
+  @Override
+  public Map<String, String> getPaytypeConfigByPaytype(String pattype) {
+    List<TPaytypeConfig> list = paytypeConfigDao.getByPaytype(pattype);
+    Map<String, String> map = new HashMap<>(list.size());
+    for (TPaytypeConfig paytypeConfig : list) {
+      map.put(paytypeConfig.getConfigid(), paytypeConfig.getConfigValue());
     }
+    return map;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/dao/SubjectbalDao.java b/src/main/java/com/supwisdom/dlpay/framework/dao/SubjectbalDao.java
index 71940c4..b2638c1 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/dao/SubjectbalDao.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/dao/SubjectbalDao.java
@@ -1,6 +1,5 @@
 package com.supwisdom.dlpay.framework.dao;
 
-import com.supwisdom.dlpay.framework.data.AmountBean;
 import com.supwisdom.dlpay.framework.data.MerchBean;
 import com.supwisdom.dlpay.framework.data.SubjectInfoBean;
 import com.supwisdom.dlpay.framework.domain.TSubjectbal;
diff --git a/src/main/java/com/supwisdom/dlpay/framework/util/Subject.java b/src/main/java/com/supwisdom/dlpay/framework/util/Subject.java
index ede84de..32718c2 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/util/Subject.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/util/Subject.java
@@ -17,6 +17,15 @@
    */
   public static final String SUBJ_CHEQUE = "1003";
 
+  /**
+   * 一卡通支付款
+   */
+  public static final String SUBJ_PAY_YKT = "112240";
+
+  /**
+   * 折扣预存款
+   */
+  public static final String SUBJ_DISCOUNT_PRE_DEPOSIT = "2003";
   // 负债类科目
 
   /**
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 0a93fd2..de02e7b 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
@@ -7,6 +7,8 @@
 import com.supwisdom.dlpay.consume.service.PaytypeService
 import com.supwisdom.dlpay.consume.service.PersonBalancePayService
 import com.supwisdom.dlpay.consume.service.PersonService
+import com.supwisdom.dlpay.exception.TransactionException
+import com.supwisdom.dlpay.framework.ResponseBodyBuilder
 import com.supwisdom.dlpay.framework.util.*
 import com.supwisdom.dlpay.util.PaytypeUtil
 import org.springframework.beans.factory.annotation.Autowired
@@ -69,35 +71,44 @@
                    stuempno: String, shopid: String, transdate: String, transtime: String,
                    outtradeno: String, payinfo: String, feetype: String): ResponseEntity<Any> {
         //一卡通支付款 112240
-        val person = personService.getPersonByThirdUniqueIdenty(stuempno)
-        val dtl = PersonTransBuilder.newBuilder(accountUtilServcie)
-                .setTransDatetime(transdate, transtime)
-                .selectPaytype(PaytypeUtil.YKTPAY, payinfo)
-                .setOuttradeno(outtradeno)
-                .setOwner(person)
-                .setTransinfo(TradeCode.TRANSCODE_YKTPAY, "一卡通支付")
-                .chooseTradetype(Tradetype.CONSUME)
-                .also {
-                    when (feetype) {
-                        TradeDict.FEETYPE_CONSUME_MEALER -> {
-                            it.addDetail(AccountHolder.subject("112240"),
-                                    AccountHolder.shop(shopid),
-                                    amount / 100.0, "一卡通支付")
-                                    .addDetail(AccountHolder.subject("112240"),
-                                            AccountHolder.subject(Subject.SUBJ_MACHANT_INCOME),
-                                            manageFee / 100.0, "收搭伙费")
+        return try {
+            val person = personService.getPersonByThirdUniqueIdenty(stuempno)
+            val dtl = PersonTransBuilder.newBuilder(accountUtilServcie)
+                    .setTransDatetime(transdate, transtime)
+                    .selectPaytype(PaytypeUtil.YKTPAY, payinfo)
+                    .setOuttradeno(outtradeno)
+                    .setOwner(person)
+                    .setTransinfo(TradeCode.TRANSCODE_YKTPAY, "一卡通支付")
+                    .chooseTradetype(Tradetype.CONSUME)
+                    .also {
+                        when (feetype) {
+                            TradeDict.FEETYPE_CONSUME_MEALER -> {
+                                it.addDetail(AccountHolder.subject(Subject.SUBJ_PAY_YKT),
+                                        AccountHolder.shop(shopid),
+                                        amount / 100.0, "一卡通支付")
+                                        .addDetail(AccountHolder.subject(Subject.SUBJ_PAY_YKT),
+                                                AccountHolder.subject(Subject.SUBJ_MACHANT_INCOME),
+                                                manageFee / 100.0, "收搭伙费")
+                            }
+                            TradeDict.FEETYPE_CONSUME_DISCOUNT -> {
+                                it.addDetail(AccountHolder.subject(Subject.SUBJ_PAY_YKT),
+                                        AccountHolder.shop(shopid),
+                                        (amount - manageFee) / 100.0, "一卡通支付")
+                                        .addDetail(AccountHolder.subject(Subject.SUBJ_DISCOUNT_PRE_DEPOSIT),
+                                                AccountHolder.shop(shopid),
+                                                manageFee / 100.0, "优惠折扣")
+                            }
                         }
-                        TradeDict.FEETYPE_CONSUME_DISCOUNT -> {
-                            it.addDetail(AccountHolder.subject("112240"),
-                                    AccountHolder.shop(shopid),
-                                    (amount - manageFee) / 100.0, "一卡通支付")
-                                    .addDetail(AccountHolder.subject("2003"),
-                                            AccountHolder.shop(shopid),
-                                            manageFee / 100.0, "优惠折扣")
-                        }
-                    }
-                }.done(personBalancePayService, false)
-        return ResponseEntity.ok(dtl)
+                    }.done(personBalancePayService, false)
+            ResponseEntity.ok(ResponseBodyBuilder.create()
+                    .success()
+                    .data("refno", dtl.refno)
+                    .build())
+        } catch (e: TransactionException) {
+            ResponseEntity.ok(ResponseBodyBuilder.create()
+                    .exception(99, e, "查询异常")
+                    .build())
+        }
     }
 
     @PostMapping("/ykt/payfinish")
diff --git a/src/main/kotlin/com/supwisdom/dlpay/framework/framework_util.kt b/src/main/kotlin/com/supwisdom/dlpay/framework/framework_util.kt
new file mode 100644
index 0000000..67e22d6
--- /dev/null
+++ b/src/main/kotlin/com/supwisdom/dlpay/framework/framework_util.kt
@@ -0,0 +1,48 @@
+package com.supwisdom.dlpay.framework
+
+import com.supwisdom.dlpay.exception.TransactionCheckException
+import com.supwisdom.dlpay.framework.util.TradeErrorCode
+
+class ResponseBodyBuilder private constructor() {
+    companion object {
+        private const val INVALIDE_RETCODE = -0x7FFFFFFF
+        fun create() = ResponseBodyBuilder()
+    }
+
+    private var retCode = INVALIDE_RETCODE
+    private var retMsg = ""
+
+    private val respData = mutableMapOf<String, Any>()
+
+    fun result(code: Int, msg: String? = null): ResponseBodyBuilder {
+        this.retCode = code
+        retMsg = if (retCode == 0) {
+            msg ?: "成功"
+        } else {
+            msg ?: "失败"
+        }
+        return this
+    }
+
+    fun success(msg: String? = null): ResponseBodyBuilder {
+        result(0, msg)
+        return this
+    }
+
+    fun exception(code: Int, exception: Exception, msg: String? = null): ResponseBodyBuilder {
+        data("exception", exception.message ?: "$exception")
+        return result(code, msg)
+    }
+
+    fun data(name: String, value: Any): ResponseBodyBuilder {
+        this.respData[name] = value
+        return this
+    }
+
+    fun build(): Map<String, Any> {
+        if (retCode == INVALIDE_RETCODE) {
+            throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR, "未设置返回码!")
+        }
+        return this.respData.plus(mapOf("retcode" to retCode, "retmsg" to retMsg))
+    }
+}
\ No newline at end of file