From 2147d023563a7c9d05d97547c00d6b0162c0644c Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期一, 09 十一月 2020 18:37:24 +0800 Subject: [PATCH] 刷单风险规则优化 --- fanli/src/main/java/com/yeshi/fanli/service/impl/money/TeamRewardDebtServiceImpl.java | 191 +++++++++++++++++++++++++---------------------- 1 files changed, 101 insertions(+), 90 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/money/TeamRewardDebtServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/money/TeamRewardDebtServiceImpl.java index 7d0f36c..8fb5c03 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/money/TeamRewardDebtServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/money/TeamRewardDebtServiceImpl.java @@ -7,6 +7,9 @@ import javax.annotation.Resource; +import com.yeshi.fanli.entity.order.UserOrderWeiQuanRecord; +import com.yeshi.fanli.service.inter.order.UserOrderWeiQuanRecordService; +import com.yeshi.fanli.util.StringUtil; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -19,106 +22,114 @@ @Service public class TeamRewardDebtServiceImpl implements TeamRewardDebtService { - @Resource - private TeamRewardDebtMapper teamRewardDebtMapper; + @Resource + private TeamRewardDebtMapper teamRewardDebtMapper; - @Resource - private TeamRewardDebtRepayHistoryMapper teamRewardDebtRepayHistoryMapper; + @Resource + private TeamRewardDebtRepayHistoryMapper teamRewardDebtRepayHistoryMapper; - @Transactional(rollbackFor = Exception.class) - @Override - public void addDebt(TeamRewardDebt debt) throws TeamRewardDebtException { - if (debt == null || debt.getOriginMoney() == null || debt.getOriginMoney() == null || debt.getUid() == null) { - throw new TeamRewardDebtException(1, "鏁版嵁涓嶅畬鏁�"); - } - if (debt.getCreateTime() == null) - debt.setCreateTime(new Date()); - debt.setLeftMoney(debt.getOriginMoney()); - teamRewardDebtMapper.insertSelective(debt); - } + @Resource + private UserOrderWeiQuanRecordService userOrderWeiQuanRecordService; - @Transactional(rollbackFor = Exception.class) - @Override - public void repayDebt(Long debtId, BigDecimal money) throws TeamRewardDebtException { - TeamRewardDebt debt = teamRewardDebtMapper.selectByPrimaryKeyForUpdate(debtId); - if (debt == null) - throw new TeamRewardDebtException(1, "鍊哄姟ID涓嶅瓨鍦�"); - if (money == null || money.compareTo(new BigDecimal(0)) <= 0) - throw new TeamRewardDebtException(3, "杩橀挶蹇呴』澶т簬0"); - if (debt.getLeftMoney().compareTo(money) < 0) - throw new TeamRewardDebtException(2, "杩橀挶杩囧"); - // 杩橀挶 - TeamRewardDebt update = new TeamRewardDebt(); - update.setId(debt.getId()); - update.setLeftMoney(debt.getLeftMoney().subtract(money)); - update.setUpdateTime(new Date()); - teamRewardDebtMapper.updateByPrimaryKeySelective(update); - // 鍔犲叆杩橀挶璁板綍 - TeamRewardDebtRepayHistory record = new TeamRewardDebtRepayHistory(); - record.setCreateTime(new Date()); - record.setDebt(debt); - record.setMoney(money); - record.setUid(debt.getUid()); - teamRewardDebtRepayHistoryMapper.insertSelective(record); - } + @Transactional(rollbackFor = Exception.class) + @Override + public void addDebt(TeamRewardDebt debt) throws TeamRewardDebtException { + if (debt == null || debt.getOriginMoney() == null || debt.getOriginMoney() == null || debt.getUid() == null || StringUtil.isNullOrEmpty(debt.getTradeId()) || debt.getSourceType() == null) { + throw new TeamRewardDebtException(1, "鏁版嵁涓嶅畬鏁�"); + } + if (debt.getCreateTime() == null) + debt.setCreateTime(new Date()); + debt.setLeftMoney(debt.getOriginMoney()); + teamRewardDebtMapper.insertSelective(debt); + } - @Transactional(rollbackFor = Exception.class) - @Override - public BigDecimal repayDebtByUid(Long uid,Date maxEstimatePayTime, BigDecimal money) throws TeamRewardDebtException { - // 杩橀挶 - long count = countNeedRepayDebt(uid,maxEstimatePayTime); - int page = (int) (count % 200 == 0 ? count / 200 : count / 200 + 1); - List<TeamRewardDebt> totalList = new ArrayList<>(); - for (int i = 0; i < page; i++) { - List<TeamRewardDebt> tempList = listNeedRepayDebt(uid,maxEstimatePayTime, i + 1, 200); - if (tempList != null && tempList.size() > 0) { - totalList.addAll(tempList); - } - } + @Transactional(rollbackFor = Exception.class) + @Override + public void repayDebt(Long debtId, BigDecimal money) throws TeamRewardDebtException { + TeamRewardDebt debt = teamRewardDebtMapper.selectByPrimaryKeyForUpdate(debtId); + if (debt == null) + throw new TeamRewardDebtException(1, "鍊哄姟ID涓嶅瓨鍦�"); + if (money == null || money.compareTo(new BigDecimal(0)) <= 0) + throw new TeamRewardDebtException(3, "杩橀挶蹇呴』澶т簬0"); + if (debt.getLeftMoney().compareTo(money) < 0) + throw new TeamRewardDebtException(2, "杩橀挶杩囧"); + // 杩橀挶 + TeamRewardDebt update = new TeamRewardDebt(); + update.setId(debt.getId()); + update.setLeftMoney(debt.getLeftMoney().subtract(money)); + update.setUpdateTime(new Date()); + teamRewardDebtMapper.updateByPrimaryKeySelective(update); + // 鍔犲叆杩橀挶璁板綍 + TeamRewardDebtRepayHistory record = new TeamRewardDebtRepayHistory(); + record.setCreateTime(new Date()); + record.setDebt(debt); + record.setMoney(money); + record.setUid(debt.getUid()); + teamRewardDebtRepayHistoryMapper.insertSelective(record); + //杩橀挶鏄惁杩樺畬 + if (update.getLeftMoney().compareTo(new BigDecimal(0)) <= 0) { + //宸茬粡杩樺畬閽� + userOrderWeiQuanRecordService.weiQuanMoneyReturn(debt.getUid(), debt.getTradeId(), debt.getSourceType()); + } + } - // 鍓╀綑璧勯噾 - BigDecimal leftMoney = new BigDecimal(money.toString()); + @Transactional(rollbackFor = Exception.class) + @Override + public BigDecimal repayDebtByUid(Long uid, Date maxEstimatePayTime, BigDecimal money) throws TeamRewardDebtException { + // 杩橀挶 + long count = countNeedRepayDebt(uid, maxEstimatePayTime); + int page = (int) (count % 200 == 0 ? count / 200 : count / 200 + 1); + List<TeamRewardDebt> totalList = new ArrayList<>(); + for (int i = 0; i < page; i++) { + List<TeamRewardDebt> tempList = listNeedRepayDebt(uid, maxEstimatePayTime, i + 1, 200); + if (tempList != null && tempList.size() > 0) { + totalList.addAll(tempList); + } + } - for (TeamRewardDebt debt : totalList) { - if (leftMoney.compareTo(new BigDecimal(0)) <= 0)// 浣欓涓嶈冻鎵f - break; - BigDecimal repayMoney = null; - if (debt.getLeftMoney().compareTo(leftMoney) >= 0) - repayMoney = new BigDecimal(leftMoney.toString()); - else - repayMoney = debt.getLeftMoney(); - try { - repayDebt(debt.getId(), repayMoney); - leftMoney = leftMoney.subtract(repayMoney); - } catch (TeamRewardDebtException e) { - // 涓婄瑪杩樻鏈垚鍔燂紝缁х画涓嬩竴绗旇繕娆� - } - } + // 鍓╀綑璧勯噾 + BigDecimal leftMoney = new BigDecimal(money.toString()); - return leftMoney;// 杩斿洖鍓╀綑鐨勮祫閲� - } + for (TeamRewardDebt debt : totalList) { + if (leftMoney.compareTo(new BigDecimal(0)) <= 0)// 浣欓涓嶈冻鎵f + break; + BigDecimal repayMoney = null; + if (debt.getLeftMoney().compareTo(leftMoney) >= 0) + repayMoney = new BigDecimal(leftMoney.toString()); + else + repayMoney = debt.getLeftMoney(); + try { + repayDebt(debt.getId(), repayMoney); + leftMoney = leftMoney.subtract(repayMoney); + } catch (TeamRewardDebtException e) { + // 涓婄瑪杩樻鏈垚鍔燂紝缁х画涓嬩竴绗旇繕娆� + } + } - @Override - public List<TeamRewardDebt> listNeedRepayDebt(Long uid,Date maxEstimatePayTime, int page, int count) { - return teamRewardDebtMapper.listByLeftMoneyAndUidAndMaxEstimatePayTime(new BigDecimal("0.01"), null, uid,maxEstimatePayTime, (page - 1) * count, count); - } + return leftMoney;// 杩斿洖鍓╀綑鐨勮祫閲� + } - @Override - public long countNeedRepayDebt(Long uid,Date maxEstimatePayTime) { - return teamRewardDebtMapper.countByLeftMoneyAndUidAndMaxEstimatePayTime(new BigDecimal("0.01"), null, uid,maxEstimatePayTime); - } + @Override + public List<TeamRewardDebt> listNeedRepayDebt(Long uid, Date maxEstimatePayTime, int page, int count) { + return teamRewardDebtMapper.listByLeftMoneyAndUidAndMaxEstimatePayTime(new BigDecimal("0.01"), null, uid, maxEstimatePayTime, (page - 1) * count, count); + } - @Override - public BigDecimal getTotalDebtMoney(Long uid,Date maxEstimatePayTime) { - BigDecimal money = teamRewardDebtMapper.sumLeftMoneyByUid(uid, maxEstimatePayTime); - if (money == null) - money = new BigDecimal(0); - return money; - } + @Override + public long countNeedRepayDebt(Long uid, Date maxEstimatePayTime) { + return teamRewardDebtMapper.countByLeftMoneyAndUidAndMaxEstimatePayTime(new BigDecimal("0.01"), null, uid, maxEstimatePayTime); + } - @Override - public TeamRewardDebt selectBySourceId(Long sourceId) { - return teamRewardDebtMapper.selectBySourceId(sourceId); - } + @Override + public BigDecimal getTotalDebtMoney(Long uid, Date maxEstimatePayTime) { + BigDecimal money = teamRewardDebtMapper.sumLeftMoneyByUid(uid, maxEstimatePayTime); + if (money == null) + money = new BigDecimal(0); + return money; + } + + @Override + public TeamRewardDebt selectBySourceId(Long sourceId) { + return teamRewardDebtMapper.selectBySourceId(sourceId); + } } -- Gitblit v1.8.0