From 234dbc39d8b7dd047805f81a7d23a1dccd9786b7 Mon Sep 17 00:00:00 2001 From: "kaixiang.xia" Date: Mon, 23 Nov 2020 11:03:08 +0800 Subject: [PATCH] =?utf8?q?=E7=9B=91=E6=8E=A7=E5=A4=A7=E7=90=86=E5=B8=82?= =?utf8?q?=E6=B0=91=E5=8D=A1=E6=94=AF=E4=BB=98=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../dlpay/agent/citizencard/YnrccUtil.java | 4 +- .../dao/MonitorDlsmkCardpayDao.java | 9 +++ .../domain/TMonitorDlsmkCardpay.java | 64 +++++++++++++++++++ .../agent/service/citizencard_service.kt | 7 ++ .../impl/transaction_monitor_service_impl.kt | 26 ++++++++ .../service/transaction_monitor_service.kt | 9 +++ 6 files changed, 117 insertions(+), 2 deletions(-) create mode 100644 payapi/src/main/java/com/supwisdom/dlpay/citizencard/dao/MonitorDlsmkCardpayDao.java create mode 100644 payapi/src/main/java/com/supwisdom/dlpay/citizencard/domain/TMonitorDlsmkCardpay.java create mode 100644 payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_monitor_service_impl.kt create mode 100644 payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/transaction_monitor_service.kt diff --git a/payapi/src/main/java/com/supwisdom/dlpay/agent/citizencard/YnrccUtil.java b/payapi/src/main/java/com/supwisdom/dlpay/agent/citizencard/YnrccUtil.java index 79daf312..428b3f0e 100644 --- a/payapi/src/main/java/com/supwisdom/dlpay/agent/citizencard/YnrccUtil.java +++ b/payapi/src/main/java/com/supwisdom/dlpay/agent/citizencard/YnrccUtil.java @@ -27,8 +27,8 @@ public class YnrccUtil { public static final String PARAM_CONFIG_ERROR = "90000"; // 参数未配置 public static final String PARAM_VALUE_ERROR = "90001"; // 参数值错误 - public static final int AGENT_CONNECT_TIMEOUT = 10; - public static final int AGENT_READ_TIMEOUT = 10; + public static final int AGENT_CONNECT_TIMEOUT = 20; + public static final int AGENT_READ_TIMEOUT = 20; public static final String TRANSTYPE_SIGNCARD = "1"; //签约 public static final String TRANSTYPE_UNSIGNCARD = "2"; //解约 diff --git a/payapi/src/main/java/com/supwisdom/dlpay/citizencard/dao/MonitorDlsmkCardpayDao.java b/payapi/src/main/java/com/supwisdom/dlpay/citizencard/dao/MonitorDlsmkCardpayDao.java new file mode 100644 index 00000000..283cc05b --- /dev/null +++ b/payapi/src/main/java/com/supwisdom/dlpay/citizencard/dao/MonitorDlsmkCardpayDao.java @@ -0,0 +1,9 @@ +package com.supwisdom.dlpay.citizencard.dao; + +import com.supwisdom.dlpay.citizencard.domain.TMonitorDlsmkCardpay; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface MonitorDlsmkCardpayDao extends JpaRepository { +} diff --git a/payapi/src/main/java/com/supwisdom/dlpay/citizencard/domain/TMonitorDlsmkCardpay.java b/payapi/src/main/java/com/supwisdom/dlpay/citizencard/domain/TMonitorDlsmkCardpay.java new file mode 100644 index 00000000..6ffcaa3b --- /dev/null +++ b/payapi/src/main/java/com/supwisdom/dlpay/citizencard/domain/TMonitorDlsmkCardpay.java @@ -0,0 +1,64 @@ +package com.supwisdom.dlpay.citizencard.domain; + +import javax.persistence.*; + +@Entity +@Table(name = "TB_MONITOR_DLSMK_CARDPAY", + indexes = {@Index(name = "idx_monitor_dlsmk_cardpay", columnList = "request_url, createtime")}) +public class TMonitorDlsmkCardpay { + @Id + @Column(name = "refno", length = 32, nullable = false) + private String refno; + + @Column(name = "use_milli_sec", precision = 9) + private Long useMilliSec; + + @Column(name = "resp_json", length = 600) + private String respJson; + + @Column(name = "request_url", length = 200) + private String requestUrl; + + @Column(name = "createtime", length = 14) + private String createtime; + + public String getRefno() { + return refno; + } + + public void setRefno(String refno) { + this.refno = refno; + } + + public Long getUseMilliSec() { + return useMilliSec; + } + + public void setUseMilliSec(Long useMilliSec) { + this.useMilliSec = useMilliSec; + } + + public String getRespJson() { + return respJson; + } + + public void setRespJson(String respJson) { + this.respJson = respJson; + } + + public String getRequestUrl() { + return requestUrl; + } + + public void setRequestUrl(String requestUrl) { + this.requestUrl = requestUrl; + } + + public String getCreatetime() { + return createtime; + } + + public void setCreatetime(String createtime) { + this.createtime = createtime; + } +} diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/citizencard_service.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/citizencard_service.kt index 526d447b..b5c246d7 100644 --- a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/citizencard_service.kt +++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/citizencard_service.kt @@ -9,6 +9,7 @@ import com.supwisdom.dlpay.agent.citizencard.YnrccRespCode import com.supwisdom.dlpay.agent.citizencard.YnrccUtil import com.supwisdom.dlpay.agent.domain.QrcodePayTrans import com.supwisdom.dlpay.api.domain.TTransactionMain +import com.supwisdom.dlpay.api.service.TransactionMonitorService import com.supwisdom.dlpay.framework.util.MoneyUtil import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Component @@ -37,6 +38,9 @@ class CitizenCardPayAgent : AgentPayService { @Autowired private lateinit var citizencardPayService: CitizencardPayService + @Autowired + private lateinit var transactionMonitorService: TransactionMonitorService + private fun agentCode(code: String, msg: String?): org.springframework.data.util.Pair { return YnrccUtil.errcode.firstOrNull { it.second.code == code @@ -55,8 +59,11 @@ class CitizenCardPayAgent : AgentPayService { } override fun pay(transaction: TTransactionMain): AgentResponse { + val start = System.currentTimeMillis() val resp = citizencardPayService.cardPay(transaction.shopDtl.shopaccno, transaction.personDtl.userid, transaction.accdate, Math.abs(MoneyUtil.YuanToFen(transaction.personDtl.amount)), transaction.dtltype, transaction.refno) + val end = System.currentTimeMillis() + transactionMonitorService.doMonitorCitizenCardPay(transaction.refno, end - start, resp) return AgentResponse().also { val code = agentCode(resp.code, resp.message) diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_monitor_service_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_monitor_service_impl.kt new file mode 100644 index 00000000..b9d00310 --- /dev/null +++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_monitor_service_impl.kt @@ -0,0 +1,26 @@ +package com.supwisdom.dlpay.api.service.impl + +import com.google.gson.Gson +import com.supwisdom.dlpay.agent.citizencard.DlpayResp +import com.supwisdom.dlpay.api.service.TransactionMonitorService +import com.supwisdom.dlpay.citizencard.dao.MonitorDlsmkCardpayDao +import com.supwisdom.dlpay.citizencard.domain.TMonitorDlsmkCardpay +import com.supwisdom.dlpay.framework.util.DateUtil +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.stereotype.Service + +@Service +class TransactionMonitorServiceImpl: TransactionMonitorService { + @Autowired + private lateinit var monitorDlsmkCardpayDao: MonitorDlsmkCardpayDao + + override fun doMonitorCitizenCardPay(refno: String, milliSecond: Long, resp: DlpayResp) { + monitorDlsmkCardpayDao.save(TMonitorDlsmkCardpay().apply { + this.refno = refno + this.useMilliSec = milliSecond + this.respJson = Gson().toJson(resp) + this.requestUrl = "/api/consume/citizencard/payfinish" + this.createtime = DateUtil.getNow() + }) + } +} \ No newline at end of file diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/transaction_monitor_service.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/transaction_monitor_service.kt new file mode 100644 index 00000000..19293471 --- /dev/null +++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/transaction_monitor_service.kt @@ -0,0 +1,9 @@ +package com.supwisdom.dlpay.api.service + +import com.supwisdom.dlpay.agent.citizencard.DlpayResp +import org.springframework.transaction.annotation.Transactional + +interface TransactionMonitorService { + @Transactional(rollbackFor = [Exception::class]) + fun doMonitorCitizenCardPay(refno: String, milliSecond: Long, resp: DlpayResp) +} \ No newline at end of file -- 2.17.1