回滚手机签约接口
diff --git a/backend/build.gradle b/backend/build.gradle
index 684619c..468595c 100644
--- a/backend/build.gradle
+++ b/backend/build.gradle
@@ -74,7 +74,7 @@
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.9.1'
compile group: 'log4j', name: 'log4j', version: '1.2.17'
- compile group: 'com.supwisdom', name: 'payapi-sdk', version: '1.0.28-1-g7415df3'
+ compile group: 'com.supwisdom', name: 'payapi-sdk', version: '1.0.28'
implementation 'org.hamcrest:hamcrest:2.1'
}
diff --git a/backend/src/main/java/com/supwisdom/dlpay/medicine/domain/TBMedicalDtl.java b/backend/src/main/java/com/supwisdom/dlpay/medicine/domain/TBMedicalDtl.java
index ad1fecc..4ada05d 100644
--- a/backend/src/main/java/com/supwisdom/dlpay/medicine/domain/TBMedicalDtl.java
+++ b/backend/src/main/java/com/supwisdom/dlpay/medicine/domain/TBMedicalDtl.java
@@ -3,7 +3,7 @@
import javax.persistence.*;
@Entity
-@Table(name = "tb_medicaldtl",indexes = {@Index(name = "medicaldtl_idx",columnList = "admnumber,organizationid,feeno")})
+@Table(name = "tb_medicaldtl",indexes = {@Index(name = "medicaldtl_idx",columnList = "admnumber,feeno,organizationid")})
public class TBMedicalDtl {
@Id
@Column(name = "billno", length = 32)
diff --git a/backend/src/main/java/com/supwisdom/dlpay/medicine/util/MedicalConstant.java b/backend/src/main/java/com/supwisdom/dlpay/medicine/util/MedicalConstant.java
index d0ad509..86bcd24 100644
--- a/backend/src/main/java/com/supwisdom/dlpay/medicine/util/MedicalConstant.java
+++ b/backend/src/main/java/com/supwisdom/dlpay/medicine/util/MedicalConstant.java
@@ -33,12 +33,13 @@
public final static String DTL_STATUS_INIT = "init";
public final static String DTL_STATUS_WIP = "wip";
public final static String DTL_STATUS_SUCCESS = "sucess";
+ public final static String DTL_STATUS_FAIL = "fail";
/**
* 子系统代码
*/
public final static String DTLTYPE_MEDICAL = "medical";
/**
- * payapi成功响应代码
+ * payapi响应代码
*/
public final static Integer PAYAPI_SUCCESS_RETCODE = 0;
diff --git a/backend/src/main/kotlin/com/supwisdom/dlpay/medicine/MedicineApi.kt b/backend/src/main/kotlin/com/supwisdom/dlpay/medicine/MedicineApi.kt
index c56a6e9..166c520 100644
--- a/backend/src/main/kotlin/com/supwisdom/dlpay/medicine/MedicineApi.kt
+++ b/backend/src/main/kotlin/com/supwisdom/dlpay/medicine/MedicineApi.kt
@@ -200,7 +200,9 @@
return checkResult
}
val cardNo = checkResult["data"] as String
- medicineService.medicalPayInit(user.uid, bean,cardNo)
+ medicineService.medicalPayPreInit(user.uid, bean,cardNo)
+// medicineService.medicalPayInit()
+// medicineService.medicalPayConfirm()
return JsonResult.ok()
}
diff --git a/backend/src/main/kotlin/com/supwisdom/dlpay/medicine/dao/MedicalDtlDao.kt b/backend/src/main/kotlin/com/supwisdom/dlpay/medicine/dao/MedicalDtlDao.kt
index 95f0acb..a641ace 100644
--- a/backend/src/main/kotlin/com/supwisdom/dlpay/medicine/dao/MedicalDtlDao.kt
+++ b/backend/src/main/kotlin/com/supwisdom/dlpay/medicine/dao/MedicalDtlDao.kt
@@ -16,5 +16,5 @@
@QueryHints(QueryHint(name = "javax.persistence.lock.timeout", value = "0"))
fun findByBillnoForUpdate(billno: String?): TBMedicalDtl
- fun findByAdmnumberAndOrganizationidAndFeeno(admNumber: String, organizationId: String, feeNo: String): TBMedicalDtl?
+ fun findByAdmnumberAndFeenoAndOrganizationidAndPaystatusNot(admNumber: String, organizationId: String, feeNo: String, payStatus: String): TBMedicalDtl?
}
\ No newline at end of file
diff --git a/backend/src/main/kotlin/com/supwisdom/dlpay/medicine/service/MedicineService.kt b/backend/src/main/kotlin/com/supwisdom/dlpay/medicine/service/MedicineService.kt
index 5cf9537..c592c93 100644
--- a/backend/src/main/kotlin/com/supwisdom/dlpay/medicine/service/MedicineService.kt
+++ b/backend/src/main/kotlin/com/supwisdom/dlpay/medicine/service/MedicineService.kt
@@ -38,8 +38,14 @@
fun getPayedList(uid: String, organizationId: String, cardId: String): ArrayList<PayedDTO>
@Transactional
- fun medicalPayInit(uid: String, bean: PaymentRequestBean, cardNo: String): JsonResult?
+ fun medicalPayPreInit(uid: String, bean: PaymentRequestBean, cardNo: String): JsonResult?
@Transactional
- fun medicalPayConfirm(billno: String): JsonResult?
+ fun medicalPayInit(billNo: String): JsonResult?
+
+ @Transactional
+ fun medicalPayConfirm(billNo: String): JsonResult?
+
+ @Transactional
+ fun notifyHISPayed()
}
\ No newline at end of file
diff --git a/backend/src/main/kotlin/com/supwisdom/dlpay/medicine/service/impl/MedicineServiceImpl.kt b/backend/src/main/kotlin/com/supwisdom/dlpay/medicine/service/impl/MedicineServiceImpl.kt
index 8ca738c..baeddcf 100644
--- a/backend/src/main/kotlin/com/supwisdom/dlpay/medicine/service/impl/MedicineServiceImpl.kt
+++ b/backend/src/main/kotlin/com/supwisdom/dlpay/medicine/service/impl/MedicineServiceImpl.kt
@@ -223,7 +223,7 @@
return payedDTOList
}
- override fun medicalPayInit(uid: String, bean: PaymentRequestBean, cardNo: String): JsonResult? {
+ override fun medicalPayPreInit(uid: String, bean: PaymentRequestBean, cardNo: String): JsonResult? {
val medicalCard = medicalCardDao.findByCardidAndUid(bean.cardid, uid)
?: throw MedicineException("未找到该就诊卡")
//1.从HIS中找到待支付流水
@@ -257,14 +257,22 @@
}
val preFeeResponse = medicalClient.getPreCalculatedFee(preFeeRequest)
//查看本地是否有该条流水记录
- val localMedicalDtl = medicalDtlDao.findByAdmnumberAndOrganizationidAndFeeno(bean.admnumber, bean.organizationid, mergingItems!!.feeNo)
+ val localMedicalDtl = medicalDtlDao.findByAdmnumberAndFeenoAndOrganizationidAndPaystatusNot(
+ bean.admnumber, bean.organizationid, mergingItems!!.feeNo, MedicalConstant.DTL_STATUS_FAIL)
if (localMedicalDtl != null) {
//锁住该条流水
medicalDtlDao.findByBillnoForUpdate(localMedicalDtl.billno)
- if (localMedicalDtl.paystatus == MedicalConstant.DTL_STATUS_SUCCESS) {
- return JsonResult.ok("该缴费已成功支付")
- } else if (localMedicalDtl.paystatus == MedicalConstant.DTL_STATUS_WIP) {
-
+ when (localMedicalDtl.paystatus) {
+ MedicalConstant.DTL_STATUS_SUCCESS -> {
+ return JsonResult.ok("该缴费已成功支付")
+ }
+ MedicalConstant.DTL_STATUS_WIP -> {
+ return JsonResult.ok("请求正在处理中,请稍后查询处理结果")
+ }
+ MedicalConstant.DTL_STATUS_INIT -> {
+ //流水已生成,跳过生成本地流水步骤
+ return JsonResult.ok("continue")
+ }
}
}
//3.本地新建一条支付流水
@@ -286,10 +294,10 @@
return JsonResult.ok()
}
- override fun medicalPayConfirm(billno: String): JsonResult? {
+ override fun medicalPayInit(billNo: String): JsonResult? {
//4.本地向payapi扣费
//4.1 payapi扣费初始化
- val medicalDtl = medicalDtlDao.findByBillnoForUpdate(billno)
+ val medicalDtl = medicalDtlDao.findByBillnoForUpdate(billNo)
val initParam = CitizenCardPayinitParam().apply {
this.billno = medicalDtl.billno
this.cardNo = medicalDtl.citizencardno
@@ -306,7 +314,12 @@
medicalDtl.refno = payInit.refno
medicalDtl.paystatus = MedicalConstant.DTL_STATUS_WIP
medicalDtlDao.save(medicalDtl)
+ return JsonResult.ok()
+ }
+
+ override fun medicalPayConfirm(billNo: String): JsonResult? {
//4.2 paypai扣费确认
+ val medicalDtl = medicalDtlDao.findByBillnoForUpdate(billNo)
val confirmParam = CitizenCardPayfinishParam().apply {
this.refno = medicalDtl.refno
}
@@ -316,14 +329,12 @@
}
//6.修改本地流水状态
-
medicalDtl.paystatus = MedicalConstant.DTL_STATUS_SUCCESS
medicalDtlDao.save(medicalDtl)
return JsonResult.ok()
}
- fun notifyHIS() {
-
+ override fun notifyHISPayed() {
//5.向HIS支付确认
val notifyPayedRequest = NotifyPayedRequest().apply {
diff --git a/backend/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt b/backend/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
index e29742f..3c3e0fc 100644
--- a/backend/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
+++ b/backend/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
@@ -722,15 +722,7 @@
return JsonResult.error("用户不存在,请注册")
}
if (!user.userid.isNullOrEmpty()) {
- val response = userProxy.signbxy(SignBxyParam().apply {
- this.userid = user.userid
- this.code = agree
- this.phone = user.phone
- this.uid = user.uid
- this.rsaprivate = user.rsaprivate
- this.rsapublic = user.rsapublic
- this.secertkey = user.secertkey
- })
+ val response = userProxy.signbxy(user.userid, agree, user.phone)
if (response.retcode != 0) {
logger.error { "用户签约失败:${response.retmsg}" }
return JsonResult.error("签约失败,${response.retmsg}")