From d2576a608a3104e3fcb0dd53ac4ab5a13f99ffff Mon Sep 17 00:00:00 2001 From: Tang Cheng Date: Mon, 15 Apr 2019 09:57:17 +0800 Subject: [PATCH] =?utf8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../service/impl/PaytypeServiceImpl.java | 32 ++++----- .../dlpay/framework/dao/SubjectbalDao.java | 1 - .../dlpay/framework/util/Subject.java | 9 +++ .../consume/controller/consume_service.kt | 67 +++++++++++-------- .../dlpay/framework/framework_util.kt | 48 +++++++++++++ 5 files changed, 112 insertions(+), 45 deletions(-) create mode 100644 src/main/kotlin/com/supwisdom/dlpay/framework/framework_util.kt diff --git a/src/main/java/com/supwisdom/dlpay/consume/service/impl/PaytypeServiceImpl.java b/src/main/java/com/supwisdom/dlpay/consume/service/impl/PaytypeServiceImpl.java index 5aad2232..1c99381e 100644 --- a/src/main/java/com/supwisdom/dlpay/consume/service/impl/PaytypeServiceImpl.java +++ b/src/main/java/com/supwisdom/dlpay/consume/service/impl/PaytypeServiceImpl.java @@ -17,23 +17,23 @@ import java.util.Map; */ @Service public class PaytypeServiceImpl implements PaytypeService { - @Autowired - private PaytypeDao paytypeDao; - @Autowired - private PaytypeConfigDao paytypeConfigDao; + @Autowired + private PaytypeDao paytypeDao; + @Autowired + private PaytypeConfigDao paytypeConfigDao; - @Override - public TPaytype getByPaytype(String paytype) { - return paytypeDao.getOne(paytype); - } + @Override + public TPaytype getByPaytype(String paytype) { + return paytypeDao.getOne(paytype); + } - @Override - public Map getPaytypeConfigByPaytype(String pattype) { - List list = paytypeConfigDao.getByPaytype(pattype); - Map map = new HashMap<>(list.size()); - for (TPaytypeConfig paytypeConfig : list) { - map.put(paytypeConfig.getConfigid(), paytypeConfig.getConfigValue()); - } - return map; + @Override + public Map getPaytypeConfigByPaytype(String pattype) { + List list = paytypeConfigDao.getByPaytype(pattype); + Map map = new HashMap<>(list.size()); + for (TPaytypeConfig paytypeConfig : list) { + map.put(paytypeConfig.getConfigid(), paytypeConfig.getConfigValue()); } + return map; + } } diff --git a/src/main/java/com/supwisdom/dlpay/framework/dao/SubjectbalDao.java b/src/main/java/com/supwisdom/dlpay/framework/dao/SubjectbalDao.java index 71940c47..b2638c17 100644 --- a/src/main/java/com/supwisdom/dlpay/framework/dao/SubjectbalDao.java +++ b/src/main/java/com/supwisdom/dlpay/framework/dao/SubjectbalDao.java @@ -1,6 +1,5 @@ package com.supwisdom.dlpay.framework.dao; -import com.supwisdom.dlpay.framework.data.AmountBean; import com.supwisdom.dlpay.framework.data.MerchBean; import com.supwisdom.dlpay.framework.data.SubjectInfoBean; import com.supwisdom.dlpay.framework.domain.TSubjectbal; diff --git a/src/main/java/com/supwisdom/dlpay/framework/util/Subject.java b/src/main/java/com/supwisdom/dlpay/framework/util/Subject.java index ede84deb..32718c2c 100644 --- a/src/main/java/com/supwisdom/dlpay/framework/util/Subject.java +++ b/src/main/java/com/supwisdom/dlpay/framework/util/Subject.java @@ -17,6 +17,15 @@ public class Subject { */ public static final String SUBJ_CHEQUE = "1003"; + /** + * 一卡通支付款 + */ + public static final String SUBJ_PAY_YKT = "112240"; + + /** + * 折扣预存款 + */ + public static final String SUBJ_DISCOUNT_PRE_DEPOSIT = "2003"; // 负债类科目 /** 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 0a93fd25..de02e7b8 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,6 +7,8 @@ import com.supwisdom.dlpay.consume.service.AccountUtilServcie 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.exception.TransactionException +import com.supwisdom.dlpay.framework.ResponseBodyBuilder import com.supwisdom.dlpay.framework.util.* import com.supwisdom.dlpay.util.PaytypeUtil import org.springframework.beans.factory.annotation.Autowired @@ -69,35 +71,44 @@ class ConsumeController { stuempno: String, shopid: String, transdate: String, transtime: String, outtradeno: String, payinfo: String, feetype: String): ResponseEntity { //一卡通支付款 112240 - 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, "一卡通支付") - .chooseTradetype(Tradetype.CONSUME) - .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, "优惠折扣") + return try { + 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, "一卡通支付") + .chooseTradetype(Tradetype.CONSUME) + .also { + when (feetype) { + TradeDict.FEETYPE_CONSUME_MEALER -> { + it.addDetail(AccountHolder.subject(Subject.SUBJ_PAY_YKT), + AccountHolder.shop(shopid), + amount / 100.0, "一卡通支付") + .addDetail(AccountHolder.subject(Subject.SUBJ_PAY_YKT), + AccountHolder.subject(Subject.SUBJ_MACHANT_INCOME), + manageFee / 100.0, "收搭伙费") + } + TradeDict.FEETYPE_CONSUME_DISCOUNT -> { + it.addDetail(AccountHolder.subject(Subject.SUBJ_PAY_YKT), + AccountHolder.shop(shopid), + (amount - manageFee) / 100.0, "一卡通支付") + .addDetail(AccountHolder.subject(Subject.SUBJ_DISCOUNT_PRE_DEPOSIT), + AccountHolder.shop(shopid), + manageFee / 100.0, "优惠折扣") + } } - } - }.done(personBalancePayService, false) - return ResponseEntity.ok(dtl) + }.done(personBalancePayService, false) + ResponseEntity.ok(ResponseBodyBuilder.create() + .success() + .data("refno", dtl.refno) + .build()) + } catch (e: TransactionException) { + ResponseEntity.ok(ResponseBodyBuilder.create() + .exception(99, e, "查询异常") + .build()) + } } @PostMapping("/ykt/payfinish") diff --git a/src/main/kotlin/com/supwisdom/dlpay/framework/framework_util.kt b/src/main/kotlin/com/supwisdom/dlpay/framework/framework_util.kt new file mode 100644 index 00000000..67e22d69 --- /dev/null +++ b/src/main/kotlin/com/supwisdom/dlpay/framework/framework_util.kt @@ -0,0 +1,48 @@ +package com.supwisdom.dlpay.framework + +import com.supwisdom.dlpay.exception.TransactionCheckException +import com.supwisdom.dlpay.framework.util.TradeErrorCode + +class ResponseBodyBuilder private constructor() { + companion object { + private const val INVALIDE_RETCODE = -0x7FFFFFFF + fun create() = ResponseBodyBuilder() + } + + private var retCode = INVALIDE_RETCODE + private var retMsg = "" + + private val respData = mutableMapOf() + + fun result(code: Int, msg: String? = null): ResponseBodyBuilder { + this.retCode = code + retMsg = if (retCode == 0) { + msg ?: "成功" + } else { + msg ?: "失败" + } + return this + } + + fun success(msg: String? = null): ResponseBodyBuilder { + result(0, msg) + return this + } + + fun exception(code: Int, exception: Exception, msg: String? = null): ResponseBodyBuilder { + data("exception", exception.message ?: "$exception") + return result(code, msg) + } + + fun data(name: String, value: Any): ResponseBodyBuilder { + this.respData[name] = value + return this + } + + fun build(): Map { + if (retCode == INVALIDE_RETCODE) { + throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR, "未设置返回码!") + } + return this.respData.plus(mapOf("retcode" to retCode, "retmsg" to retMsg)) + } +} \ No newline at end of file -- 2.17.1