一卡通支付调试
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 948b525..e82cb11 100644
--- a/src/main/java/com/supwisdom/dlpay/consume/dao/AccountDao.java
+++ b/src/main/java/com/supwisdom/dlpay/consume/dao/AccountDao.java
@@ -11,8 +11,8 @@
 public interface AccountDao extends JpaRepository<TAccount, String> {
 
   @Lock(LockModeType.PESSIMISTIC_WRITE)
-  @Query("select a from taccount a where a.accno = ?1")
-  TAccount getByAccnoForUpdate(String accno);
+  //@Query("select a from taccount a where a.accno = ?1")
+  TAccount getByAccno(String accno);
 
   TAccount findByUserid(String userid);
 }
diff --git a/src/main/kotlin/com/supwisdom/dlpay/consume/ThirdPayCall.kt b/src/main/kotlin/com/supwisdom/dlpay/consume/ThirdPayCall.kt
index d003d71..8419452 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/consume/ThirdPayCall.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/consume/ThirdPayCall.kt
@@ -16,7 +16,7 @@
 class CallService {
 
     companion object {
-        fun callYktPay(config: Map<String, String>, paydtl: TUserdtl, time: String): BaseResp {
+        fun callYktPay(config: Map<String, String>, paydtl: TUserdtl, time: String,stuempno: String, yktshopid: String, devphyid: String?): BaseResp {
             val code = BaseResp()
 
             val appid = config["appid"]
@@ -25,12 +25,12 @@
 
             val params = hashMapOf<String, String?>()
             params.put("partner_id", appid)
-            params.put("stuempno", "")
+            params.put("stuempno", stuempno)
             params.put("tradeno", paydtl.refno)
             params.put("tradename", paydtl.payinfo)
             params.put("amount", MoneyUtil.YuanToFen(paydtl.amount).toString())
-            params.put("shopid", "")
-            params.put("devphyid", "")
+            params.put("shopid", yktshopid)
+            params.put("devphyid", devphyid)
             params.put("calcmanagefee", "T") //是否计算费率
             params.put("timestamp", time)
             params.put("sign_method", "HMAC");
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 75b8e1b..8243a78 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/consume/comsume_builder.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/consume/comsume_builder.kt
@@ -12,6 +12,7 @@
 import com.supwisdom.dlpay.framework.util.TradeDict
 import com.supwisdom.dlpay.framework.util.TradeErrorCode
 import com.supwisdom.dlpay.framework.util.Tradetype
+import org.springframework.beans.factory.annotation.Autowired
 
 class AccountHolder<T> private constructor(val accountId: String, val idType: Int) {
     companion object {
@@ -81,7 +82,7 @@
     // 内部参数,不需要调用者处理
     val details = mutableListOf<TransDetail>()
     var amount: Double = 0.0
-    lateinit var accountUtil: AccountUtilServcie
+    var accountUtil = accUitl
 
     /**
      * 支付方式
@@ -89,8 +90,14 @@
     var paytype = ""
     var payinfo = ""
 
-    fun setOwner(per: TPerson) {
+    /**
+     * 外部流水号
+     * */
+    var outtradeno = ""
+
+    fun setOwner(per: TPerson): PersonTransBuilder {
         this.person = per
+        return this
     }
 
     fun enableOverdraft(b: Boolean = false): PersonTransBuilder {
@@ -110,6 +117,11 @@
         return this
     }
 
+    fun setOuttradeno(outtradeno: String): PersonTransBuilder {
+        this.outtradeno = outtradeno
+        return this
+    }
+
     fun chooseTradetype(tradetype: Tradetype) {
         this.tradetype = tradetype
     }
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 6ca2d5e..61784ec 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
@@ -68,30 +68,30 @@
 
     @PostMapping("/ykt/payinit")
     fun yktPayInit(userid: String, amount: Int, manageFee: Int,
-                   stuempno: String,shopid:String, transdate: String, transtime: String,
+                   stuempno: String, shopid: String, transdate: String, transtime: String,
                    outtradeno: String, payinfo: String): ResponseEntity<Any> {
         //一卡通支付款 112240
         var person = personService.getPersonByThirdUniqueIdenty(stuempno)
         val dtl = PersonTransBuilder.newBuilder(accountUtilServcie)
                 .setTransDatetime(transdate, transtime)
+                .selectPaytype(PaytypeUtil.YKTPAY, payinfo)
+                .setOuttradeno(outtradeno)
+                .setOwner(person)
                 .addDetail(AccountHolder.subject("112240"),
-                        AccountHolder.shop("12323"),
+                        AccountHolder.shop(shopid),
                         amount / 100.0, "")
-                .addDetail(AccountHolder.subject("112240"), AccountHolder.transType(301),
-                        manageFee / 100.0, "")
-                .done(personBalancePayService,false)
+                .done(personBalancePayService, false)
         return ResponseEntity.ok(dtl)
     }
 
     @PostMapping("/ykt/payfinish")
-    fun yktPayFinish(refno: String,yktshopid: String): ResponseEntity<Any> {
-        //一卡通支付款 112240
+    fun yktPayFinish(refno: String, yktshopid: String, devphyid: String?): ResponseEntity<Any> {
         val dtl = PersonTransBuilder.newBuilder(accountUtilServcie)
                 .done(refno, TradeDict.DTL_STATUS_WIP, personBalancePayService)
+        var person = personService.getPersonByUserid(dtl.userid)
         val code = CallService.callYktPay(paytypeService.getPaytypeConfigByPaytype(PaytypeUtil.YKTPAY),
-                dtl, DateUtil.getNow())
+                dtl, DateUtil.getNow(),person?.thirdUniqueIdenty,yktshopid,devphyid)
         return if (code.retcode == "0") {
-            //TODO update dtl
             val suc = PersonTransBuilder.newBuilder(accountUtilServcie)
                     .done(dtl.refno, TradeDict.DTL_STATUS_SUCCESS, personBalancePayService)
             ResponseEntity.ok(suc)
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 a556058..8ce1108 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
@@ -16,6 +16,7 @@
 import com.supwisdom.dlpay.framework.service.SystemUtilService
 import com.supwisdom.dlpay.framework.util.TradeDict
 import com.supwisdom.dlpay.framework.util.TradeErrorCode
+import com.supwisdom.dlpay.framework.util.Tradetype
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.stereotype.Service
 import javax.persistence.EntityManager
@@ -117,6 +118,10 @@
         userdtl.transdate = builder.transDate
         userdtl.transtime = builder.transTime
         userdtl.userid = builder.person?.userid
+        userdtl.outtradeno = builder.outtradeno
+        userdtl.payinfo = builder.payinfo
+        userdtl.paytype = builder.paytype
+        userdtl.tradeflag = 2
         userdtlDao.save(userdtl)
         return userdtl
     }
@@ -130,7 +135,17 @@
     }
 
     override fun finish(paydtl: TUserdtl, status: String, builder: PersonTransBuilder): TUserdtl {
-        TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
+        if(paydtl.status==TradeDict.DTL_STATUS_SUCCESS){
+            return paydtl
+        }
+        paydtl.status = status
+        if(status==TradeDict.DTL_STATUS_SUCCESS){
+            //TODO 更新商户余额,科目余额,账户支付的需要更新余额
+        }
+        val systemtime = systemUtilService.sysdatetime
+        paydtl.endtime = systemtime.hostdatetime
+        userdtlDao.save(paydtl)
+        return paydtl
     }
 
     override fun finish(refno: String, status: String, builder: PersonTransBuilder): TUserdtl {
diff --git a/src/main/kotlin/com/supwisdom/dlpay/consume/service/impl/person_service_impl.kt b/src/main/kotlin/com/supwisdom/dlpay/consume/service/impl/person_service_impl.kt
index e582c50..d6e0cf5 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/consume/service/impl/person_service_impl.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/consume/service/impl/person_service_impl.kt
@@ -14,7 +14,11 @@
     @Autowired
     lateinit var personDao: PersonDao
 
-    override fun getPersonByThirdUniqueIdenty(thirdUniqueIdenty: String?): TPerson {
+    override fun getPersonByThirdUniqueIdenty(thirdUniqueIdenty: String): TPerson {
         return personDao.findByThirdUniqueIdenty(thirdUniqueIdenty)
     }
+
+    override fun getPersonByUserid(userid: String): TPerson {
+        return personDao.getOne(userid)
+    }
 }
\ No newline at end of file
diff --git a/src/main/kotlin/com/supwisdom/dlpay/consume/service/person_service.kt b/src/main/kotlin/com/supwisdom/dlpay/consume/service/person_service.kt
index ce35e2c..1efe1a8 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/consume/service/person_service.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/consume/service/person_service.kt
@@ -9,6 +9,9 @@
  */
 interface PersonService {
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class), readOnly = true)
-    fun getPersonByThirdUniqueIdenty(thirdUniqueIdenty: String?): TPerson
+    fun getPersonByThirdUniqueIdenty(thirdUniqueIdenty: String): TPerson
+
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class), readOnly = true)
+    fun getPersonByUserid(userid: String): TPerson
 
 }
\ No newline at end of file