diff --git a/bashi-dk/src/main/java/com/bashi/dk/service/impl/BorrowServiceImpl.java b/bashi-dk/src/main/java/com/bashi/dk/service/impl/BorrowServiceImpl.java index 5fec6b0..dde41d6 100644 --- a/bashi-dk/src/main/java/com/bashi/dk/service/impl/BorrowServiceImpl.java +++ b/bashi-dk/src/main/java/com/bashi/dk/service/impl/BorrowServiceImpl.java @@ -1,7 +1,5 @@ package com.bashi.dk.service.impl; -import cn.hutool.core.lang.hash.Hash; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -31,6 +29,8 @@ import com.bashi.dk.util.MoneyUtil; import com.bashi.dk.util.OrderTradeNoUtil; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -41,6 +41,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.TimeUnit; @Service public class BorrowServiceImpl extends ServiceImpl implements BorrowService { @@ -53,7 +54,8 @@ public class BorrowServiceImpl extends ServiceImpl impleme private CalLoanManager calLoanManager; @Autowired private LoansSettingService loansSettingService; - + @Autowired + private RedissonClient redissonClient; @Override @@ -69,32 +71,42 @@ public class BorrowServiceImpl extends ServiceImpl impleme if(customer.getRealNameAuth() != 1){ throw new CustomException("请补全个人资料后在发起贷款"); } - LoansSetting loansSetting = loansSettingService.getLoansSetting(); - CalLoanReq calLoanReq = new CalLoanReq(); - calLoanReq.setTotalLoanMoney(req.getTotalLoanMoney()); - calLoanReq.setTotalMonth(req.getTotalMonth()); - Loan loan = calLoanManager.calLoan(calLoanReq); - Borrow borrow = BeanConvertUtil.convertTo(customerInfo, Borrow::new); - borrow.setId(null); - borrow.setTradeNo(OrderTradeNoUtil.createOrder(OrderTradeNoUtil.BORROW)); - borrow.setTotalLoanMoney(loan.getTotalLoanMoney()); - borrow.setTotalMonth(loan.getTotalMonth()); - borrow.setLoanMonthRate(loan.getLoanRateMonth()); - borrow.setLoanYearRate(loan.getLoanRate()); - borrow.setTotalInterest(loan.getTotalInterest()); - borrow.setTotalRepayment(loan.getTotalRepayment()); - borrow.setFirstRepayment(loan.getFirstRepayment()); - borrow.setAvgRepayment(loan.getAvgRepayment()); - borrow.setDueDate(loansSetting.getDueDate()); - borrow.setNoteRemark(req.getNoteRemark()); - borrow.setBorrowName("审核中"); - borrow.setBorrowNameStyle("black"); - borrow.setBorrowRemark("审核中..."); - borrow.setInfoJson(JsonUtils.toJsonString(loan)); - borrow.setFirstBankType(borrow.getBankType()); - borrow.setFirstBackCardNum(borrow.getBackCardNum()); - this.save(borrow); - customerService.dk(customer.getId()); + RLock lock = redissonClient.getLock("borrow:lock:" + req.getCustomerId()); + if(lock.isLocked()){ + throw new CustomException("点击太快了,请稍等"); + } + lock.lock(5, TimeUnit.SECONDS); + Borrow borrow; + try { + LoansSetting loansSetting = loansSettingService.getLoansSetting(); + CalLoanReq calLoanReq = new CalLoanReq(); + calLoanReq.setTotalLoanMoney(req.getTotalLoanMoney()); + calLoanReq.setTotalMonth(req.getTotalMonth()); + Loan loan = calLoanManager.calLoan(calLoanReq); + borrow = BeanConvertUtil.convertTo(customerInfo, Borrow::new); + borrow.setId(null); + borrow.setTradeNo(OrderTradeNoUtil.createOrder(OrderTradeNoUtil.BORROW)); + borrow.setTotalLoanMoney(loan.getTotalLoanMoney()); + borrow.setTotalMonth(loan.getTotalMonth()); + borrow.setLoanMonthRate(loan.getLoanRateMonth()); + borrow.setLoanYearRate(loan.getLoanRate()); + borrow.setTotalInterest(loan.getTotalInterest()); + borrow.setTotalRepayment(loan.getTotalRepayment()); + borrow.setFirstRepayment(loan.getFirstRepayment()); + borrow.setAvgRepayment(loan.getAvgRepayment()); + borrow.setDueDate(loansSetting.getDueDate()); + borrow.setNoteRemark(req.getNoteRemark()); + borrow.setBorrowName("审核中"); + borrow.setBorrowNameStyle("black"); + borrow.setBorrowRemark("审核中..."); + borrow.setInfoJson(JsonUtils.toJsonString(loan)); + borrow.setFirstBankType(borrow.getBankType()); + borrow.setFirstBackCardNum(borrow.getBackCardNum()); + this.save(borrow); + customerService.dk(customer.getId()); + }finally { + lock.unlock(); + } return borrow; }