From 5e3fa361990b97bdc0f4d41b112ca1b713fab7ad Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期三, 26 三月 2025 16:59:46 +0800 Subject: [PATCH] Merge branch 'master' of https://gitee.com/xiaochen991015/xizang --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBillServiceImpl.java | 113 +++++++++++++++++++++++++++++--------------------------- 1 files changed, 59 insertions(+), 54 deletions(-) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBillServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBillServiceImpl.java index 05bbd56..57597b2 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBillServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBillServiceImpl.java @@ -144,6 +144,7 @@ if (isok){ try { TBill save = new TBill(); + save.setId(tBill.getId()); TBill presist = getById(tBill.getId()); //如果账单是已缴费状态,本方法不再进行更新账单 if (presist.getPayFeesStatus().equals("3")){ @@ -343,62 +344,66 @@ String uuid = UUID.fastUUID().toString(); boolean lock = redisCache.trylockLoop(CacheConstants.COMPLETE_PAY_LOCK_KEY + orderNo, uuid, 60); if (lock){ - TPayOrder order = tPayOrderService.getById(orderNo); - if (order==null){ - throw new ServiceException("订单不存在"); - } - if (StringUtils.isNotEmpty(order.getPayNo())){ - log.info("订单号已处理:{}",orderNo); - return; - } - /** - * 更新订单状态 - */ - TPayOrder save = new TPayOrder(); - save.setId(order.getId()); - save.setStatus(1); - save.setPayNo(billRequest.getMessage().getInfo().getTraceNo()); - save.setPayType(billRequest.getMessage().getHead().getChannel()); try { - save.setPayTime(DateUtils.parseDate(billRequest.getMessage().getHead().getTimeStamp(),"yyyyMMddHHmmssSSS")); - } catch (ParseException e) { - throw new ServiceException("日期格式化错误"); + TPayOrder order = tPayOrderService.getById(orderNo); + if (order==null){ + throw new ServiceException("订单不存在"); + } + if (StringUtils.isNotEmpty(order.getPayNo())){ + log.info("订单号已处理:{}",orderNo); + return; + } + /** + * 更新订单状态 + */ + TPayOrder save = new TPayOrder(); + save.setId(order.getId()); + save.setStatus(1); + save.setPayNo(billRequest.getMessage().getInfo().getTraceNo()); + save.setPayType(billRequest.getMessage().getHead().getChannel()); + try { + save.setPayTime(DateUtils.parseDate(billRequest.getMessage().getHead().getTimeStamp(),"yyyyMMddHHmmssSSS")); + } catch (ParseException e) { + throw new ServiceException("日期格式化错误"); + } + save.setCallbackTime(new Date()); + BigDecimal payAmount = new BigDecimal(billRequest.getMessage().getInfo().getPayBillAmt()); + save.setActPayAmount(payAmount + .multiply(AmountConstant.b100).longValue()); + save.setStatus(1); + save.setPayInfo(billRequest.getMessage().toString()); + tPayOrderService.updateById(save); + /** + * 更新账单状态 + */ + List<TOrderBill> orderBills = orderBillService.getByOrderNo(order.getId()); + List<TBill> bills = orderBills.stream().map(ob -> getById(ob.getBillId())).collect(Collectors.toList()); + lockAndUpdateByAmountBatch(bills,payAmount,(bill)->{ + TFlowManagement saveFlow = new TFlowManagement(); + saveFlow.setPayType(1); + saveFlow.setPayer(order.getUserId()); + saveFlow.setPayTime(DateUtils.dateToLocalDateTime(save.getPayTime())); + saveFlow.setSysSerialNumber(OrderNos.getDid(30)); + saveFlow.setBankSerialNumber(save.getPayNo()); + saveFlow.setFlowType(2); + saveFlow.setPaymentBillId(bill.getId()); + saveFlow.setDeductionMoney(bill.getDeductionMoney()); + saveFlow.setFlowMoney(payAmount); + saveFlow.setRemainingMoney(bill.getOutstandingMoney()); + saveFlow.setPreOutstand(bill.getPreOutstand()); + tFlowManagementService.save(saveFlow); + }); +// TBankFlow bankFlow = new TBankFlow(); +// bankFlow.setPayType(1); +// bankFlow.setPayer(order.getUserId()); +// bankFlow.setPayTime(DateUtils.dateToLocalDateTime(save.getPayTime())); +// bankFlow.setBankSerialNumber(save.getPayNo()); +// bankFlow.setFlowMoney(payAmount); +// bankFlow.setFlowStatus(1); +// tBankFlowService.save(bankFlow); + }finally { + redisCache.unlock(CacheConstants.COMPLETE_PAY_LOCK_KEY + orderNo,uuid); } - save.setCallbackTime(new Date()); - BigDecimal payAmount = new BigDecimal(billRequest.getMessage().getInfo().getPayBillAmt()); - save.setActPayAmount(payAmount - .multiply(AmountConstant.b100).longValue()); - save.setStatus(1); - save.setPayInfo(billRequest.getMessage().toString()); - tPayOrderService.updateById(save); - /** - * 更新账单状态 - */ - List<TOrderBill> orderBills = orderBillService.getByOrderNo(order.getId()); - List<TBill> bills = orderBills.stream().map(ob -> getById(ob.getBillId())).collect(Collectors.toList()); - lockAndUpdateByAmountBatch(bills,payAmount,(bill)->{ - TFlowManagement saveFlow = new TFlowManagement(); - saveFlow.setPayType(1); - saveFlow.setPayer(order.getUserId()); - saveFlow.setPayTime(DateUtils.dateToLocalDateTime(save.getPayTime())); - saveFlow.setSysSerialNumber(OrderNos.getDid(30)); - saveFlow.setBankSerialNumber(save.getPayNo()); - saveFlow.setFlowType(2); - saveFlow.setPaymentBillId(bill.getId()); - saveFlow.setDeductionMoney(bill.getDeductionMoney()); - saveFlow.setFlowMoney(payAmount); - saveFlow.setRemainingMoney(bill.getOutstandingMoney()); - saveFlow.setPreOutstand(bill.getPreOutstand()); - tFlowManagementService.save(saveFlow); - }); - TBankFlow bankFlow = new TBankFlow(); - bankFlow.setPayType(1); - bankFlow.setPayer(order.getUserId()); - bankFlow.setPayTime(DateUtils.dateToLocalDateTime(save.getPayTime())); - bankFlow.setBankSerialNumber(save.getPayNo()); - bankFlow.setFlowMoney(payAmount); - bankFlow.setFlowStatus(1); - tBankFlowService.save(bankFlow); } -- Gitblit v1.7.1