重构代码,优化kontlin 代码风格
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 67257c6..a046753 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/consume/comsume_builder.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/consume/comsume_builder.kt
@@ -63,9 +63,10 @@
val amount: Double, val summary: String,
val rowno: Int)
- // 输入参数,调用接口时指定的参数值
+ ///////////////////////////////////////////////////////////////////////////////
+ // 以下为输入参数,调用接口时指定的参数值
lateinit var person: TPerson
- lateinit var tradetype:Tradetype
+ lateinit var tradetype: Tradetype
var transcode = 0
@@ -77,12 +78,6 @@
var overdraft = false
var description = ""
- // 内部参数,不需要调用者处理
- val details = mutableListOf<TransDetail>()
- var amount: Double = 0.0
- var accountUtil = accUitl
-
-
/**
* 支付方式
* */
@@ -94,6 +89,13 @@
* */
var outtradeno = "" //发起支付系统的流水号(对接系统根据此流水号查询本地流水对账)
+ ////////////////////////////////////////////////////////////////////////////////////
+ // 以下为内部参数,不需要调用者处理
+ val details = mutableListOf<TransDetail>()
+ var amount: Double = 0.0
+ var accountUtil = accUitl
+
+ /////////////////////////////////////////////
fun setOwner(per: TPerson): PersonTransBuilder {
this.person = per
@@ -139,25 +141,20 @@
}
private fun prepareData() {
- if (null == this.tradetype) {
- throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR, "未指定交易类型")
- }
- if(transcode==0){
+ if (transcode == 0) {
throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR, "未指定交易码")
}
- when(this.tradetype){
+ // fixme : 是否要检查 recharge , consume 之外的类型
+ when (this.tradetype) {
//充值必须指明用户和支付方式
Tradetype.RECHARGE -> {
- if (null == this.person)
- throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR, "未指定充值账户")
-
if (StringUtil.isEmpty(this.paytype))
throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR, "未指定充值方式")
}
//消费
- Tradetype.CONSUME ->{
+ Tradetype.CONSUME -> {
if (StringUtil.isEmpty(this.paytype))
this.paytype = TradeDict.PAYTYPE_BALANCE //默认余额支付
}
@@ -167,36 +164,39 @@
if (this.details.size < 1) {
throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR, "未指定交易明细")
}
- if (null != this.person) {
- var buyer = accountUtil.readAccount(person.userid) //判断是一个人的流水
- for (detail in details) {
- if (detail.debitSubjNo.equals(buyer.subjno) && !detail.debitAccNo.equals(buyer.accno))
- throw throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR, "交易明细用户错误")
+ val buyer = accountUtil.readAccount(person.userid) //判断是一个人的流水
- if (detail.creditSubjNo.equals(buyer.subjno) && !detail.creditAccNo.equals(buyer.accno))
- throw throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR, "交易明细用户错误")
+ amount = this.details.sumByDouble { detail ->
+ if (detail.debitSubjNo == buyer.subjno && detail.debitAccNo != buyer.accno) {
+ throw throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR, "交易明细用户错误")
}
- }
- amount = this.details.sumByDouble { it.amount }
- if (!StringUtil.isEmpty(this.transDate) && !DateUtil.checkDatetimeValid(this.transDate, "yyyyMMdd")) {
+ if (detail.creditSubjNo == buyer.subjno && detail.creditAccNo != buyer.accno) {
+ throw throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR, "交易明细用户错误")
+ }
+ detail.amount
+ }
+
+ if (!StringUtil.isEmpty(this.transDate) &&
+ !DateUtil.checkDatetimeValid(this.transDate, "yyyyMMdd")) {
throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR, "交易日期格式错误[yyyyMMdd]")
}
- if (!StringUtil.isEmpty(this.transTime) && !DateUtil.checkDatetimeValid(this.transTime, "HHmmss")) {
+ if (!StringUtil.isEmpty(this.transTime) &&
+ !DateUtil.checkDatetimeValid(this.transTime, "HHmmss")) {
throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR, "交易时间格式错误[HHmmss]")
}
- if(StringUtil.isEmpty(this.outtradeno)){
+ if (StringUtil.isEmpty(this.outtradeno)) {
throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR, "未传递外部流水号")
}
}
private fun preCheckAccount() {
- if (null != this.person) {
- when (person.status) {
- TradeDict.STATUS_CLOSED -> throw TransactionCheckException(TradeErrorCode.PERSON_STATUS_ERROR, "用户已注销")
- TradeDict.STATUS_LOCKED -> throw TransactionCheckException(TradeErrorCode.PERSON_STATUS_ERROR, "用户已冻结锁定")
- }
+ when (person.status) {
+ TradeDict.STATUS_CLOSED ->
+ throw TransactionCheckException(TradeErrorCode.PERSON_STATUS_ERROR, "用户已注销")
+ TradeDict.STATUS_LOCKED ->
+ throw TransactionCheckException(TradeErrorCode.PERSON_STATUS_ERROR, "用户已冻结锁定")
}
}
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 6b8c419..06f3cae 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
@@ -112,10 +112,10 @@
@PostMapping("/ykt/payfinish")
fun yktPayFinish(refno: String, yktshopid: String, devphyid: String?): ResponseEntity<Any> {
- var dtl = personBalancePayService.wip(refno)
- var person = personService.getPersonByUserid(dtl.userid)
+ 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)
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 e0d792f..c85139d 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
@@ -72,12 +72,8 @@
}
override fun readSubject(subjno: String): TSubject {
- subjectDao.getOne(subjno).let {
- if (null != it) {
- return it
- }
- throw TransactionProcessException(TradeErrorCode.SUBJECT_NOT_EXISTS, "科目<$subjno>不存在")
- }
+ return subjectDao.getOne(subjno)
+// throw TransactionProcessException(TradeErrorCode.SUBJECT_NOT_EXISTS, "科目<$subjno>不存在")
}
override fun readTranstype(transtype: Int): TTranstype {
@@ -157,10 +153,10 @@
}
override fun init(builder: PersonTransBuilder): TUserdtl {
- var userdtl = TUserdtl()
+ val userdtl = TUserdtl()
userdtl.refno = systemUtilService.refno
userdtl.accdate = systemUtilService.accdate
- userdtl.userid = builder.person?.userid
+ userdtl.userid = builder.person.userid
if (StringUtil.isEmpty(builder.transDate)) {
userdtl.transdate = systemUtilService.sysdatetime.hostdate
} else {
@@ -194,17 +190,18 @@
userdtl.status = TradeDict.DTL_STATUS_INIT
userdtlDao.save(userdtl)
- for (detail in builder.details) {
- var dtl = TDebitCreditDtl()
- dtl.refno = userdtl.refno
- dtl.seqno = detail.rowno
- dtl.drsubjno = detail.debitSubjNo
- dtl.draccno = detail.debitAccNo
- dtl.crsubjno = detail.creditSubjNo
- dtl.craccno = detail.creditAccNo
- dtl.amount = detail.amount
- dtl.summary = detail.summary
- debitCreditDtlDao.save(dtl)
+ builder.details.forEach {
+ TDebitCreditDtl().apply {
+ refno = userdtl.refno
+ seqno = it.rowno
+ drsubjno = it.debitSubjNo
+ draccno = it.debitAccNo
+ crsubjno = it.creditSubjNo
+ craccno = it.creditAccNo
+ amount = it.amount
+ summary = it.summary
+ debitCreditDtlDao.save(this)
+ }
}
return userdtl
}
@@ -214,8 +211,8 @@
}
override fun finish(refno: String, status: String, businessData: Map<String, String>?): TUserdtl {
- var userdtl = getLockUserdtl(refno)
- when (status) {
+ val userdtl = getLockUserdtl(refno)
+ return when (status) {
TradeDict.DTL_STATUS_FAIL -> {
//失败
if (TradeDict.DTL_STATUS_SUCCESS == userdtl.status)
@@ -223,15 +220,14 @@
userdtl.status = TradeDict.DTL_STATUS_FAIL
userdtl.endtime = systemUtilService.sysdatetime.hostdatetime
userdtl.remark = businessData?.get("errmsg")
- return userdtlDao.save(userdtl)
+ userdtlDao.save(userdtl)
}
-
TradeDict.DTL_STATUS_SUCCESS -> {
//成功
if (TradeDict.DTL_STATUS_SUCCESS == userdtl.status)
return userdtl //已成功直接返回
- for (detail in debitCreditDtlDao.findByRefno(userdtl.refno)) {
+ debitCreditDtlDao.findByRefno(userdtl.refno).forEach { detail ->
//个人账户入账
if (TradeDict.SUBJNO_ACCOUNT == detail.drsubjno) {
doDealAccount(detail.draccno, -1 * detail.amount, false) //借方消费
@@ -253,9 +249,8 @@
userdtl.accdate = systemUtilService.accdate //入账成功时更新
userdtl.endtime = systemUtilService.sysdatetime.hostdatetime
//TODO 存储一些业务参数
- return userdtlDao.save(userdtl)
+ userdtlDao.save(userdtl)
}
-
else -> throw TransactionProcessException(TradeErrorCode.TRANSDTL_STATUS_ERROR, "未指定明确的交易结束状态")
}
}
@@ -265,8 +260,8 @@
}
override fun wip(refno: String): TUserdtl {
- var userdtl = getLockUserdtlNowait(refno)
- if(TradeDict.DTL_STATUS_WIP == userdtl.status){
+ val userdtl = getLockUserdtlNowait(refno)
+ if (TradeDict.DTL_STATUS_WIP == userdtl.status) {
return userdtl
}