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