From 47f8eb34c4224ab5c7444130ede1cd48d330b974 Mon Sep 17 00:00:00 2001 From: Xia Kaixiang Date: Wed, 19 Jun 2019 13:07:35 +0800 Subject: [PATCH] =?utf8?q?=E8=B4=A6=E6=88=B7=E4=BD=99=E9=A2=9D=E6=94=AF?= =?utf8?q?=E4=BB=98=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../framework/core/DayendSettleTask.java | 3 +- .../service/impl/ShopDataServiceImpl.java | 16 +-- .../api/controller/charge_api_controller.kt | 1 + .../api/controller/consume_api_controller.kt | 107 +++++++++--------- src/main/resources/application.properties | 2 + 5 files changed, 68 insertions(+), 61 deletions(-) diff --git a/src/main/java/com/supwisdom/dlpay/framework/core/DayendSettleTask.java b/src/main/java/com/supwisdom/dlpay/framework/core/DayendSettleTask.java index 0560c061..de2afe39 100644 --- a/src/main/java/com/supwisdom/dlpay/framework/core/DayendSettleTask.java +++ b/src/main/java/com/supwisdom/dlpay/framework/core/DayendSettleTask.java @@ -22,8 +22,7 @@ public class DayendSettleTask { private static final Logger logger = LoggerFactory.getLogger(DayendSettleTask.class); - @Scheduled(cron="0 3/30 2-3 * * ? ") -// @Scheduled(cron="0 0/2 * * * ? ") + @Scheduled(cron="${dayend.settletask.cron}") public void doSettleTask() { if (logger.isDebugEnabled()) logger.debug("进入日结算任务!"); diff --git a/src/main/java/com/supwisdom/dlpay/system/service/impl/ShopDataServiceImpl.java b/src/main/java/com/supwisdom/dlpay/system/service/impl/ShopDataServiceImpl.java index d474e2c5..f2bc236b 100644 --- a/src/main/java/com/supwisdom/dlpay/system/service/impl/ShopDataServiceImpl.java +++ b/src/main/java/com/supwisdom/dlpay/system/service/impl/ShopDataServiceImpl.java @@ -143,14 +143,14 @@ public class ShopDataServiceImpl implements ShopDataService { shop.setShopaccno(shopacc.getShopaccno()); shopDao.save(shop); - TShopPaytype shopPaytype = new TShopPaytype(); - shopPaytype.setShopaccno(shopacc.getShopaccno()); - shopPaytype.setPaytype(TradeDict.PAYTYPE_BALANCE); - shopPaytype.setConsumeEnable(true); - shopPaytype.setAnonymousEnable(false); - shopPaytype.setReverseEnable(false); - shopPaytype.setCreatetime(dt.getHostdatetime()); - shopPaytypeDao.save(shopPaytype); //默认增加余额支付方式 +// TShopPaytype shopPaytype = new TShopPaytype(); +// shopPaytype.setShopaccno(shopacc.getShopaccno()); +// shopPaytype.setPaytype(TradeDict.PAYTYPE_BALANCE); +// shopPaytype.setConsumeEnable(true); +// shopPaytype.setAnonymousEnable(false); +// shopPaytype.setReverseEnable(false); +// shopPaytype.setCreatetime(dt.getHostdatetime()); +// shopPaytypeDao.save(shopPaytype); //默认增加余额支付方式 } return true; } diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/controller/charge_api_controller.kt b/src/main/kotlin/com/supwisdom/dlpay/api/controller/charge_api_controller.kt index c52dce29..3141e6c6 100644 --- a/src/main/kotlin/com/supwisdom/dlpay/api/controller/charge_api_controller.kt +++ b/src/main/kotlin/com/supwisdom/dlpay/api/controller/charge_api_controller.kt @@ -123,6 +123,7 @@ class ChargeAPIController { return ResponseEntity.ok(ResponseBodyBuilder.create() .data("refno", it.refno) .data("billno", it.outTradeNo) + .data("amount", chargeApiService.getPersonDtl(it.refno).amount) .success("交易确认成功")) } diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt b/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt index 390e8d1e..7a15077c 100644 --- a/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt +++ b/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt @@ -140,64 +140,69 @@ class ConsumeAPIController { * */ @PostMapping("/balance/pay") fun balancePay(@RequestBody param: CitizenCardPayinitParam, authentication: Authentication): ResponseEntity { - try { - if (param.checkParam() && param.checkSign(commonService.getSecretByAppid(authentication.name))) { - return ResponseEntity.ok(ResponseBodyBuilder.create() - .fail(TradeErrorCode.REQUEST_SIGN_ERROR, "参数签名错误")) - } - - val person = userService.findPersonByIdentityCheckStatus(param.cardNo) - if (consumePayService.checkShopPaytype(param.shopaccno, TradeDict.PAYTYPE_BALANCE)) { - val account = accountUtilServcie.readAccount(person.userid) - val shopacc = accountUtilServcie.readShopbyShopaccno(param.shopaccno) + if(!param.checkSign(commonService.getSecretByAppid(authentication.name))){ + return ResponseEntity.ok(ResponseBodyBuilder.create() + .fail(TradeErrorCode.REQUEST_SIGN_ERROR, "参数签名错误")) + } - val dtl = TransactionBuilder().apply { - setTransInfo(param.transdate, param.transtime, - TradeCode.TRANSCODE_BALANCE_PAY, - TradeDict.PAYTYPE_BALANCE) - setOutTransInfo(shopacc.shopaccno, param.billno) - operator(param.shopaccno, TradeDict.OPERTYPE_SHOP) - payinfo = "账户余额消费" - description = "账户余额消费" - }.person(account).apply { - setAmount(param.amount / 100.0, TradeDict.TRADE_FLAG_OUT) - opposite = AccountProxy(shopacc) - }.and().shop(shopacc).apply { - setAmount(param.amount / 100.0, TradeDict.TRADE_FLAG_IN) - opposite = AccountProxy(account) - }.and().also { builder -> - param.feelist?.forEach { - when (it.feetype) { - TradeDict.FEETYPE_CONSUME_MEALER -> { - consumeMealer(param, builder, it, account, shopacc) - } - TradeDict.FEETYPE_CONSUME_DISCOUNT -> { - consumeDiscount(param, builder, it, account, shopacc) + val person = userService.findPersonByIdentityCheckStatus(param.cardNo) + if(consumePayService.checkShopPaytype(param.shopaccno, TradeDict.PAYTYPE_BALANCE)) { + val account = accountUtilServcie.readAccount(person.userid) + val shopacc = accountUtilServcie.readShopbyShopaccno(param.shopaccno) + + val dtl = TransactionBuilder().apply { + setTransInfo(param.transdate, param.transtime, + TradeCode.TRANSCODE_BALANCE_PAY, + TradeDict.PAYTYPE_BALANCE) + setOutTransInfo(shopacc.shopaccno, param.billno) + operator(param.shopaccno, TradeDict.OPERTYPE_SHOP) + payinfo = param.cardNo //fixme: 卡号或其他唯一信息 + description = "账户余额消费" + }.person(account).apply { + setAmount(param.amount / 100.0, TradeDict.TRADE_FLAG_OUT) + opposite = AccountProxy(shopacc) + }.and().shop(shopacc).apply { + setAmount(param.amount / 100.0, TradeDict.TRADE_FLAG_IN) + opposite = AccountProxy(account) + }.and().addDebitCreditRecord(AccountProxy(account), AccountProxy(shopacc), + param.amount / 100.0, "账户余额消费") + .also { builder -> + param.feelist?.forEach { + val feeamt = it.amount / 100.0 + when (it.feetype) { + TradeDict.FEETYPE_CONSUME_MEALER -> { + //搭伙费 + val feetypeConfig = accountUtilServcie.readFeetype(TradeDict.FEETYPE_CONSUME_MEALER, TradeDict.PAYTYPE_BALANCE) + val subject = accountUtilServcie.readSubject(feetypeConfig.crsubjno) //不同在贷方科目 + when (Subject.SUBJNO_MACHANT_INCOME == subject.subjno) { + true -> builder.addDebitCreditRecord(AccountProxy(account), AccountProxy(shopacc), feeamt, feetypeConfig.summary) //商户收 + false -> builder.addDebitCreditRecord(AccountProxy(account), AccountProxy(subject), feeamt, feetypeConfig.summary) //其他科目 + } + } + TradeDict.FEETYPE_CONSUME_DISCOUNT -> { + //优惠折扣 + val feetypeConfig = accountUtilServcie.readFeetype(TradeDict.FEETYPE_CONSUME_DISCOUNT, TradeDict.PAYTYPE_BALANCE) + val subject = accountUtilServcie.readSubject(feetypeConfig.drsubjno) //不同在借方科目 + builder.addDebitCreditRecord(AccountProxy(subject), AccountProxy(shopacc), feeamt, feetypeConfig.summary) + + } + else -> throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR, + "账户余额支付费用清单不支持feetype<${it.feetype}>") } - else -> throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR, - "支付费率清单不支持feetype<${it.feetype}>") } - } - }.init(transactionService) + }.init(transactionService) - transactionService.success(dtl.refno) - - return ResponseEntity.ok(ResponseBodyBuilder.create() - .data("refno", dtl.refno) - .data("amount", dtl.personDtl.amount) - .success("交易成功")) - } + transactionService.success(dtl.refno) return ResponseEntity.ok(ResponseBodyBuilder.create() - .fail(TradeErrorCode.BUSINESS_PAYTYPE_NOSUPPORT, "不支持支付方式<账户余额>")) - - } catch (ex: RequestParamCheckException) { - return ResponseEntity.ok(ResponseBodyBuilder.create() - .requestException(ex, "请求参数错误")) - } catch (et: TransactionException) { - return ResponseEntity.ok(ResponseBodyBuilder.create() - .transException(et, "业务处理错误")) + .data("refno", dtl.refno) + .data("billno", dtl.outTradeNo) + .data("amount", dtl.personDtl.amount) + .success("交易成功")) } + + return ResponseEntity.ok(ResponseBodyBuilder.create() + .fail(TradeErrorCode.BUSINESS_PAYTYPE_NOSUPPORT, "不支持支付方式<账户余额>")) } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index a4d11c5e..18ea9d24 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -26,6 +26,8 @@ spring.thymeleaf.enabled=true ################################################## ## quartz task scheduler shopbalance.updater.cron = 10/* * * * * +dayend.settletask.cron = 0 3/30 2-3 * * ? +#dayend.settletask.cron = 0 0/2 * * * ? ################################################ # user password auth.password.bcrypt.length=10 -- 2.17.1