改进代码,增加lock time
diff --git a/build.gradle b/build.gradle
index 381e261..e86876d 100644
--- a/build.gradle
+++ b/build.gradle
@@ -25,14 +25,14 @@
     providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
     testImplementation 'org.springframework.boot:spring-boot-starter-test'
 
-    compile group: 'com.sun.jersey', name: 'jersey-client', version:'1.19'
-    compile group: 'javax.servlet', name: 'jstl', version: '1.2'
-    compile group: 'taglibs', name: 'standard', version: '1.1.2'
-    compile group: 'javax.servlet.jsp', name: 'jsp-api', version: '2.1'
-    compile group: 'log4j', name: 'log4j', version: '1.2.16'
-    compile files ('libs/ojdbc6.jar')
+    implementation group: 'com.sun.jersey', name: 'jersey-client', version:'1.19'
+    implementation group: 'javax.servlet', name: 'jstl', version: '1.2'
+    implementation group: 'taglibs', name: 'standard', version: '1.1.2'
+    implementation group: 'javax.servlet.jsp', name: 'jsp-api', version: '2.1'
+    implementation group: 'log4j', name: 'log4j', version: '1.2.16'
+    implementation files ('libs/ojdbc6.jar')
 
-    compile group: 'com.google.code.gson', name: 'gson', version: '2.8.5'
+    implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.5'
 }
 
 compileKotlin {
diff --git a/src/main/java/com/supwisdom/dlpay/consume/dao/AccountDao.java b/src/main/java/com/supwisdom/dlpay/consume/dao/AccountDao.java
index b2a7892..5cae32d 100644
--- a/src/main/java/com/supwisdom/dlpay/consume/dao/AccountDao.java
+++ b/src/main/java/com/supwisdom/dlpay/consume/dao/AccountDao.java
@@ -4,16 +4,23 @@
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Lock;
 import org.springframework.data.jpa.repository.Query;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.data.jpa.repository.QueryHints;
 
 import javax.persistence.LockModeType;
+import javax.persistence.QueryHint;
 
 public interface AccountDao extends JpaRepository<TAccount, String> {
 
   @Lock(LockModeType.PESSIMISTIC_WRITE)
+  @QueryHints({@QueryHint(name = "javax.persistence.lock.timeout", value ="5000")})
   @Query("select a from TAccount a where a.accno = ?1")
   TAccount getByAccnoForUpdate(String accno);
 
+  @Lock(LockModeType.PESSIMISTIC_WRITE)
+  @QueryHints({@QueryHint(name = "javax.persistence.lock.timeout", value ="0")})
+  @Query("select a from TAccount a where a.accno = ?1")
+  TAccount getByAccnoForUpdateNowait(String accno);
+
 
   TAccount findByUserid(String userid);
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/util/Subject.java b/src/main/java/com/supwisdom/dlpay/framework/util/Subject.java
new file mode 100644
index 0000000..ede84de
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/framework/util/Subject.java
@@ -0,0 +1,34 @@
+package com.supwisdom.dlpay.framework.util;
+
+public class Subject {
+  // 资产类科目
+  /**
+   * 现金
+   */
+  public static final String SUBJ_CASH = "1001";
+
+  /**
+   * 银行存款
+   */
+  public static final String SUBJ_DEPOSIT = "1002";
+
+  /**
+   * 支票
+   */
+  public static final String SUBJ_CHEQUE = "1003";
+
+  // 负债类科目
+
+  /**
+   * 个人预存款
+   */
+  public static final String SUBJ_PRE_DEPOSIT = "2001";
+
+  /**
+   * 商户营业款
+   */
+  public static final String SUBJ_MACHANT_INCOME = "2002";
+
+  // 损益类科目
+
+}
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 b0e1331..0a93fd2 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,10 +7,7 @@
 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.framework.util.DateUtil
-import com.supwisdom.dlpay.framework.util.TradeCode
-import com.supwisdom.dlpay.framework.util.TradeDict
-import com.supwisdom.dlpay.framework.util.Tradetype
+import com.supwisdom.dlpay.framework.util.*
 import com.supwisdom.dlpay.util.PaytypeUtil
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.http.ResponseEntity
@@ -70,42 +67,36 @@
     @PostMapping("/ykt/payinit")
     fun yktPayInit(userid: String, amount: Int, manageFee: Int,
                    stuempno: String, shopid: String, transdate: String, transtime: String,
-                   outtradeno: String, payinfo: String,feetype:String): ResponseEntity<Any> {
+                   outtradeno: String, payinfo: String, feetype: String): ResponseEntity<Any> {
         //一卡通支付款 112240
-        var feeDrsubjectno = ""
-        var feeCrsubjectno = ""
-        var summary = ""
-        var realamount = 0
-        when(feetype){
-            TradeDict.FEETYPE_CONSUME_MEALER->{
-                feeDrsubjectno="112240"
-                feeCrsubjectno = "2002"
-                realamount = amount
-                summary = "收搭伙费"
-            }
-            TradeDict.FEETYPE_CONSUME_DISCOUNT->{
-                feeDrsubjectno = "2003"
-                feeCrsubjectno = shopid
-                realamount = amount - manageFee
-                summary = "优惠折扣"
-            }
-        }
-
         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,"一卡通支付")
+                .setTransinfo(TradeCode.TRANSCODE_YKTPAY, "一卡通支付")
                 .chooseTradetype(Tradetype.CONSUME)
-                .addDetail(AccountHolder.subject("112240"),
-                        AccountHolder.shop(shopid),
-                        realamount / 100.0, "一卡通支付")
-                .addDetail(AccountHolder.subject(feeDrsubjectno),
-                        AccountHolder.subject(feeCrsubjectno),
-                        manageFee / 100.0, summary)
-                .done(personBalancePayService, false)
+                .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, "收搭伙费")
+                        }
+                        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)
     }
 
@@ -114,7 +105,7 @@
         val dtl = personBalancePayService.wip(refno)
         val person = personService.getPersonByUserid(dtl.userid)
         val code = CallService.callYktPay(paytypeService.getPaytypeConfigByPaytype(PaytypeUtil.YKTPAY),
-                dtl, DateUtil.getNow(), person.thirdUniqueIdenty,yktshopid,devphyid)
+                dtl, DateUtil.getNow(), person.thirdUniqueIdenty, yktshopid, devphyid)
         return if (code.retcode == "0") {
             val suc = PersonTransBuilder.newBuilder(accountUtilServcie)
                     .done(dtl.refno, TradeDict.DTL_STATUS_SUCCESS, personBalancePayService)