From efd229f59ecd8aae8e1e9764859824a82bf4b111 Mon Sep 17 00:00:00 2001
From: zhangmei <645025773@qq.com>
Date: 星期三, 19 三月 2025 09:50:11 +0800
Subject: [PATCH] 修改邮件
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBillServiceImpl.java | 116 ++++++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 84 insertions(+), 32 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 92617fc..0376220 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
@@ -1,15 +1,14 @@
package com.ruoyi.system.service.impl;
+import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.basic.PageInfo;
+import com.ruoyi.common.config.SmsProperties;
import com.ruoyi.common.constant.AmountConstant;
import com.ruoyi.common.constant.CacheConstants;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.exception.ServiceException;
-import com.ruoyi.common.utils.DateUtils;
-import com.ruoyi.common.utils.SmsUtil;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.common.utils.TencentMailUtil;
+import com.ruoyi.common.utils.*;
import com.ruoyi.common.utils.uuid.UUID;
import com.ruoyi.system.dto.*;
import com.ruoyi.system.mapper.TBillMapper;
@@ -242,41 +241,72 @@
@Override
@Transactional(rollbackFor = Exception.class)
public boolean checkOfflinePay(OfflinePayCheckDto dto) {
- TBankFlow bankflow = tBankFlowService.getById(dto.getFlowId());
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("实付金额不能高于该账单欠费金额");
- }
+ if (dto.getPayType()==1){ //银行
+ if (StringUtils.isEmpty(dto.getFlowId())){
+ throw new ServiceException("银行流水ID不能为空");
+ }
+ TBankFlow bankflow = tBankFlowService.getById(dto.getFlowId());
+ 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(bankflow.getBankSerialNumber());
+ billSave.setPayFeesTime(bankflow.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()));
+ BigDecimal subtract = bankflow.getRemainingMoney().subtract(dto.getAmount());
+ saveBankFlow.setRemainingMoney(subtract);
+ if (BigDecimal.ZERO.compareTo(subtract) == 0){
+ saveBankFlow.setFlowStatus(1);
+ }
+ tBankFlowService.updateById(saveBankFlow);
+ //更新银行流水的已抵扣金额和剩余可抵扣金额
+ //存流水
+ TFlowManagement save = new TFlowManagement();
+ save.setPayType(3);
+ save.setPayer(dto.getPayer());
+ save.setPayTime(bankflow.getPayTime());
+ save.setSysSerialNumber(OrderNos.getDid(30));
+ save.setBankSerialNumber(bankflow.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;
+ }
+ //现金支付
TBill billSave = new TBill();
billSave.setId(bill.getId());
billSave.setPayFeesMoney(dto.getAmount());
- billSave.setBankSerialNumber(bankflow.getBankSerialNumber());
- billSave.setPayFeesTime(bankflow.getPayTime());
+ billSave.setPayFeesTime(dto.getPayTime()!=null?dto.getPayTime():DateUtils.dateToLocalDateTime(new Date()));
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(bankflow.getPayTime());
- save.setBankSerialNumber(bankflow.getBankSerialNumber());
- save.setFlowType(2);
+ save.setPayTime(billSave.getPayFeesTime());
+ save.setSysSerialNumber(OrderNos.getDid(30));
+ save.setFlowType(1);
save.setPaymentBillId(back.getId());
save.setDeductionMoney(back.getDeductionMoney());
save.setFlowMoney(dto.getAmount());
@@ -331,6 +361,7 @@
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());
@@ -383,7 +414,7 @@
int failNum = 0;
for (String billId : dto.getBillIds()) {
TBillDto bill = getDetailByBillId(billId);
- if (bill.getSmsLastTime()!=null
+ if (bill.getSmsLastTime()!=null && bill.getSmsStatus()==1
&& (System.currentTimeMillis()-bill.getSmsLastTime().getTime()<smsUtil.getPro().getBillSmsDelayPeriod()*60*1000L)){
throw new ServiceException("有账单最近一次发送的时间是:"+DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,bill.getSmsLastTime()));
}
@@ -394,7 +425,8 @@
TBill save = new TBill();
save.setId(bill.getId());
try {
- smsUtil.sendSms(bill.getPhone(), "2365726", new String[]{bill.getPartyTwoName()});
+ String name = bill.getPartyTwoName().length()>5?bill.getPartyTwoName().substring(0,5):bill.getPartyTwoName();
+ smsUtil.sendSms(bill.getPhone(), "2365726", new String[]{name});
save.setSmsStatus(1);
}catch (ServiceException e){
failNum++;
@@ -412,7 +444,7 @@
int failNum = 0;
for (String billId : dto.getBillIds()) {
TBillDto bill = getDetailByBillId(billId);
- if (bill.getMailLastTime()!=null
+ if (bill.getMailLastTime()!=null && bill.getMailStatus()==1
&& (System.currentTimeMillis()-bill.getMailLastTime().getTime()<mailUtil.getPro().getBillMailDelayPeriod()*60*1000L)){
throw new ServiceException("有账单最近一次发送的时间是:"+DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,bill.getMailLastTime()));
}
@@ -463,7 +495,7 @@
throw new ServiceException("实付金额不能高于于流水可抵扣剩余金额");
}
//如果实付金额大于欠费金额
- if (dto.getAmount().compareTo(bill.getOutstandingMoney())>=0){
+ if (dto.getAmount().compareTo(bill.getOutstandingMoney())>0){
throw new ServiceException("实付金额不能高于该账单欠费金额");
}
}
@@ -481,7 +513,11 @@
TBankFlow saveBankFlow = new TBankFlow();
saveBankFlow.setId(bankflow.getId());
saveBankFlow.setDeductionMoney(bankflow.getDeductionMoney().add(dto.getAmount()));
- saveBankFlow.setRemainingMoney(bankflow.getRemainingMoney().subtract(dto.getAmount()));
+ BigDecimal subtract = bankflow.getRemainingMoney().subtract(dto.getAmount());
+ saveBankFlow.setRemainingMoney(subtract);
+ if (BigDecimal.ZERO.compareTo(subtract) == 0){
+ saveBankFlow.setFlowStatus(1);
+ }
tBankFlowService.updateById(saveBankFlow);
}
//存流水
@@ -489,6 +525,7 @@
save.setPayType(3);
save.setPayer(dto.getPayer());
save.setPayTime(bankflow!=null?bankflow.getPayTime():DateUtils.dateToLocalDateTime(new Date()));
+ save.setSysSerialNumber(OrderNos.getDid());
save.setBankSerialNumber(bankflow!=null?bankflow.getBankSerialNumber():null);
save.setFlowType(dto.getPayType()==1?2:1);
save.setPaymentBillId(back.getId());
@@ -500,5 +537,20 @@
return true;
}
+ @Override
+ public BillStatisticsDto statistics() {
+ BillStatisticsDto dto = new BillStatisticsDto();
+ dto.setRent(getBaseMapper().statisticsAllRent());
+ dto.setNopay(getBaseMapper().statisticsNoPay());
+ dto.setPayed(getBaseMapper().statisticsPayed());
+ dto.setOverdue(getBaseMapper().statisticsOverdue());
+ return dto;
+ }
+
+ @Override
+ public Integer batchBillCount(String userId, List<String> billIds) {
+ return this.baseMapper.batchBillCount(userId,billIds);
+ }
+
}
--
Gitblit v1.7.1