From 3c6a682a64ce8089e000026f9d035eb329aebf47 Mon Sep 17 00:00:00 2001 From: yupeng <roc__yu@163.com> Date: 星期五, 28 二月 2025 16:01:50 +0800 Subject: [PATCH] feat: 完善后台批量发送邮件接口 --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBillServiceImpl.java | 138 +++++++++++++++++++++++++++++++++++----------- 1 files changed, 105 insertions(+), 33 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 2d13e31..6da60f4 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 @@ -11,10 +11,7 @@ import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.TencentMailUtil; import com.ruoyi.common.utils.uuid.UUID; -import com.ruoyi.system.dto.OfflinePayCheckDto; -import com.ruoyi.system.dto.SmsByBillDto; -import com.ruoyi.system.dto.TBillDto; -import com.ruoyi.system.dto.TbillSaveDto; +import com.ruoyi.system.dto.*; import com.ruoyi.system.mapper.TBillMapper; import com.ruoyi.system.model.*; import com.ruoyi.system.query.TBillQuery; @@ -242,32 +239,50 @@ } @Override + @Transactional(rollbackFor = Exception.class) public boolean checkOfflinePay(OfflinePayCheckDto dto) { - List<TBill> tBills = listByIds(dto.getBillIds()); - TBillConfirm confirm = tBillConfirmService.getById(dto.getConfirmId()); - lockAndUpdateByAmountBatch(tBills,dto.getAmount(),(bill)->{ - TFlowManagement save = new TFlowManagement(); - save.setPayType(3); - save.setPayer(dto.getPayer()); - save.setPayTime(dto.getPayTime()==null?DateUtils.dateToLocalDateTime(confirm.getPayTime()):dto.getPayTime()); - save.setBankSerialNumber(dto.getBankSerilNum()); - save.setFlowType(2); - save.setPaymentBillId(bill.getId()); - save.setDeductionMoney(bill.getDeductionMoney()); - save.setFlowMoney(dto.getAmount()); - save.setRemainingMoney(bill.getOutstandingMoney()); - save.setPreOutstand(bill.getPreOutstand()); - tFlowManagementService.save(save); - }); - TBankFlow bankFlow = new TBankFlow(); - bankFlow.setPayType(3); - bankFlow.setPayer(dto.getPayer()); - bankFlow.setPayTime(dto.getPayTime()==null?DateUtils.dateToLocalDateTime(confirm.getPayTime()):dto.getPayTime()); - bankFlow.setBankSerialNumber(dto.getBankSerilNum()); - bankFlow.setFlowMoney(dto.getAmount()); - bankFlow.setFlowStatus(1); - tBankFlowService.save(bankFlow); - return false; + TBankFlow bankflow = tBankFlowService.getById(dto.getTBankFlow().getId()); + TBillDto bill = getDetailByBillId(dto.getBillId()); + if (bankflow.getRemainingMoney().compareTo(BigDecimal.ZERO)<=0){ + throw new ServiceException("该流水已无可抵扣剩余金额"); + } + if (bankflow.getRemainingMoney().compareTo(dto.getAmount())<0){ + throw new ServiceException("实付金额不能高于于流水可抵扣剩余金额"); + } + //如果实付金额大于欠费金额 + if (dto.getAmount().compareTo(bill.getOutstandingMoney())>=0){ + throw new ServiceException("实付金额不能高于该账单欠费金额"); + } + + TBill billSave = new TBill(); + billSave.setId(bill.getId()); + billSave.setPayFeesMoney(dto.getAmount()); + billSave.setBankSerialNumber(dto.getTBankFlow().getBankSerialNumber()); + billSave.setPayFeesTime(dto.getTBankFlow().getPayTime()); + billSave.setVoucher(dto.getVoucher()); + billSave.setPayFeesType(2); + TBill back = lockAndUpdateInfo(billSave, 2); + + //更新银行流水的已抵扣金额和剩余可抵扣金额 + TBankFlow saveBankFlow = new TBankFlow(); + saveBankFlow.setId(bankflow.getId()); + saveBankFlow.setDeductionMoney(bankflow.getDeductionMoney().add(dto.getAmount())); + saveBankFlow.setRemainingMoney(bankflow.getRemainingMoney().subtract(dto.getAmount())); + tBankFlowService.updateById(saveBankFlow); + //存流水 + TFlowManagement save = new TFlowManagement(); + save.setPayType(3); + save.setPayer(dto.getPayer()); + save.setPayTime(dto.getTBankFlow().getPayTime()); + save.setBankSerialNumber(dto.getTBankFlow().getBankSerialNumber()); + save.setFlowType(2); + save.setPaymentBillId(back.getId()); + save.setDeductionMoney(back.getDeductionMoney()); + save.setFlowMoney(dto.getAmount()); + save.setRemainingMoney(back.getOutstandingMoney()); + save.setPreOutstand(back.getPreOutstand()); + tFlowManagementService.save(save); + return true; } @Override @@ -376,7 +391,7 @@ TBill save = new TBill(); save.setId(bill.getId()); try { - smsUtil.sendSms(bill.getPhone(), "", new String[]{""}); + smsUtil.sendSms(bill.getPhone(), "2365726", new String[]{bill.getPartyTwoName()}); save.setSmsStatus(1); }catch (ServiceException e){ failNum++; @@ -394,9 +409,9 @@ int failNum = 0; for (String billId : dto.getBillIds()) { TBillDto bill = getDetailByBillId(billId); - if (bill.getSmsLastTime()!=null - && (System.currentTimeMillis()-bill.getSmsLastTime().getTime()<mailUtil.getPro().getBillMailDelayPeriod()*60*1000L)){ - throw new ServiceException("有账单最近一次发送的时间是:"+DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,bill.getSmsLastTime())); + if (bill.getMailLastTime()!=null + && (System.currentTimeMillis()-bill.getMailLastTime().getTime()<mailUtil.getPro().getBillMailDelayPeriod()*60*1000L)){ + throw new ServiceException("有账单最近一次发送的时间是:"+DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,bill.getMailLastTime())); } if (StringUtils.isEmpty(bill.getEmail())){ failNum++; @@ -422,5 +437,62 @@ return getBaseMapper().selectDetailByBillId(billId); } + /** + * 收款、类型可能是现金、银行 + * @param dto + * @return + */ + @Transactional(rollbackFor = Exception.class) + @Override + public Boolean cashPay(CachPayDto dto) { + TBill back = null; + TBankFlow bankflow = null; + if (dto.getPayType()==1){ + bankflow = tBankFlowService.getById(dto.getTBankFlow().getId()); + TBillDto bill = getDetailByBillId(dto.getBillId()); + if (bankflow.getRemainingMoney().compareTo(BigDecimal.ZERO)<=0){ + throw new ServiceException("该流水已无可抵扣剩余金额"); + } + if (bankflow.getRemainingMoney().compareTo(dto.getAmount())<0){ + throw new ServiceException("实付金额不能高于于流水可抵扣剩余金额"); + } + //如果实付金额大于欠费金额 + if (dto.getAmount().compareTo(bill.getOutstandingMoney())>=0){ + throw new ServiceException("实付金额不能高于该账单欠费金额"); + } + } + TBillDto bill = getDetailByBillId(dto.getBillId()); + TBill billSave = new TBill(); + billSave.setId(bill.getId()); + billSave.setPayFeesMoney(dto.getAmount()); + billSave.setBankSerialNumber(dto.getTBankFlow().getBankSerialNumber()); + billSave.setPayFeesTime(dto.getTBankFlow().getPayTime()); + billSave.setVoucher(dto.getVoucher()); + billSave.setPayFeesType(2); + back = lockAndUpdateInfo(billSave, 2); + if (dto.getPayType()==1){ + //更新银行流水的已抵扣金额和剩余可抵扣金额 + TBankFlow saveBankFlow = new TBankFlow(); + saveBankFlow.setId(bankflow.getId()); + saveBankFlow.setDeductionMoney(bankflow.getDeductionMoney().add(dto.getAmount())); + saveBankFlow.setRemainingMoney(bankflow.getRemainingMoney().subtract(dto.getAmount())); + tBankFlowService.updateById(saveBankFlow); + } + //存流水 + TFlowManagement save = new TFlowManagement(); + save.setPayType(3); + save.setPayer(dto.getPayer()); + save.setPayTime(dto.getTBankFlow().getPayTime()); + save.setBankSerialNumber(dto.getTBankFlow().getBankSerialNumber()); + save.setFlowType(dto.getPayType()==1?2:1); + save.setPaymentBillId(back.getId()); + save.setDeductionMoney(back.getDeductionMoney()); + save.setFlowMoney(dto.getAmount()); + save.setRemainingMoney(back.getOutstandingMoney()); + save.setPreOutstand(back.getPreOutstand()); + tFlowManagementService.save(save); + return true; + } + } -- Gitblit v1.7.1