*/
@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<String, String> getPaytypeConfigByPaytype(String pattype) {
- List<TPaytypeConfig> list = paytypeConfigDao.getByPaytype(pattype);
- Map<String, String> map = new HashMap<>(list.size());
- for (TPaytypeConfig paytypeConfig : list) {
- map.put(paytypeConfig.getConfigid(), paytypeConfig.getConfigValue());
- }
- return map;
+ @Override
+ public Map<String, String> getPaytypeConfigByPaytype(String pattype) {
+ List<TPaytypeConfig> list = paytypeConfigDao.getByPaytype(pattype);
+ Map<String, String> map = new HashMap<>(list.size());
+ for (TPaytypeConfig paytypeConfig : list) {
+ map.put(paytypeConfig.getConfigid(), paytypeConfig.getConfigValue());
}
+ return map;
+ }
}
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
stuempno: String, shopid: String, transdate: String, transtime: String,
outtradeno: String, payinfo: String, feetype: String): ResponseEntity<Any> {
//一卡通支付款 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")
--- /dev/null
+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<String, Any>()
+
+ 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<String, Any> {
+ 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