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/order/UserOrderWeiQuanRecordServiceImpl.java |  257 +++++++++++++++++++++++++++------------------------
 1 files changed, 136 insertions(+), 121 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/UserOrderWeiQuanRecordServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/UserOrderWeiQuanRecordServiceImpl.java
index 2005ab8..8e9648b 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/UserOrderWeiQuanRecordServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/UserOrderWeiQuanRecordServiceImpl.java
@@ -29,146 +29,161 @@
 @Service
 public class UserOrderWeiQuanRecordServiceImpl implements UserOrderWeiQuanRecordService {
 
-	@Resource
-	private UserOrderWeiQuanRecordMapper userOrderWeiQuanRecordMapper;
+    @Resource
+    private UserOrderWeiQuanRecordMapper userOrderWeiQuanRecordMapper;
 
-	@Resource
-	private TaoBaoWeiQuanOrderService taoBaoWeiQuanOrderService;
+    @Resource
+    private TaoBaoWeiQuanOrderService taoBaoWeiQuanOrderService;
 
-	@Resource
-	private TaoBaoWeiQuanDrawBackService taoBaoWeiQuanDrawBackService;
+    @Resource
+    private TaoBaoWeiQuanDrawBackService taoBaoWeiQuanDrawBackService;
 
-	@Resource
-	private HongBaoV2Service hongBaoV2Service;
+    @Resource
+    private HongBaoV2Service hongBaoV2Service;
 
-	@Resource
-	private CommonOrderService commonOrderService;
+    @Resource
+    private CommonOrderService commonOrderService;
 
-	@Resource
-	private HongBaoOrderService hongBaoOrderService;
+    @Resource
+    private HongBaoOrderService hongBaoOrderService;
 
-	@Override
-	public void syncPrevious() {
-		BigDecimal zero = new BigDecimal(0);
-		for (int page = 1; page < Integer.MAX_VALUE; page++) {
-			List<TaoBaoWeiQuanOrder> list = taoBaoWeiQuanOrderService.listByBeginWeiQuan(page, 100);
-			if (list == null || list.isEmpty())
-				break;
+    @Override
+    public void syncPrevious() {
+        BigDecimal zero = new BigDecimal(0);
+        for (int page = 1; page < Integer.MAX_VALUE; page++) {
+            List<TaoBaoWeiQuanOrder> list = taoBaoWeiQuanOrderService.listByBeginWeiQuan(page, 100);
+            if (list == null || list.isEmpty())
+                break;
 
-			for (TaoBaoWeiQuanOrder weiQuanOrder : list) {
-				String orderItemId = weiQuanOrder.getOrderItemId();
+            for (TaoBaoWeiQuanOrder weiQuanOrder : list) {
+                String orderItemId = weiQuanOrder.getOrderItemId();
 
-				List<HongBaoDTO> listV2 = hongBaoV2Service.listByOrderTradeId(orderItemId);
-				for (HongBaoDTO hongBaoV2 : listV2) {
-					Long uid = hongBaoV2.getUserInfo().getId();
-					TaoBaoWeiQuanDrawBack drawBack = taoBaoWeiQuanDrawBackService.selectByOrderItemIdAndUid(orderItemId,
-							uid);
+                List<HongBaoDTO> listV2 = hongBaoV2Service.listByOrderTradeId(orderItemId);
+                for (HongBaoDTO hongBaoV2 : listV2) {
+                    Long uid = hongBaoV2.getUserInfo().getId();
+                    TaoBaoWeiQuanDrawBack drawBack = taoBaoWeiQuanDrawBackService.selectByOrderItemIdAndUid(orderItemId,
+                            uid);
 
-					int state = 0;
-					BigDecimal money = null;
-					if (drawBack != null) {
-						state = 1; // 宸叉墸娆�
-						BigDecimal drawBackMoney = drawBack.getDrawBackMoney();
-						if (drawBackMoney.compareTo(zero) > 0) {
-							money = drawBackMoney;
-						}
-					}
+                    int state = 0;
+                    BigDecimal money = null;
+                    if (drawBack != null) {
+                        state = 1; // 宸叉墸娆�
+                        BigDecimal drawBackMoney = drawBack.getDrawBackMoney();
+                        if (drawBackMoney.compareTo(zero) > 0) {
+                            money = drawBackMoney;
+                        }
+                    }
 
-					if (money == null) {
-						// (缁存潈閲戦/缁撶畻閲戦) * 杩斿埄閲戦
-						BigDecimal wqmoney = weiQuanOrder.getMoney();
-						money = wqmoney.multiply(hongBaoV2.getMoney()).divide(hongBaoV2.getSettlement(), 2,
-								BigDecimal.ROUND_UP);
+                    if (money == null) {
+                        // (缁存潈閲戦/缁撶畻閲戦) * 杩斿埄閲戦
+                        BigDecimal wqmoney = weiQuanOrder.getMoney();
+                        money = wqmoney.multiply(hongBaoV2.getMoney()).divide(hongBaoV2.getSettlement(), 2,
+                                BigDecimal.ROUND_UP);
 
-						// 澶т簬杩斿埄閲戦 鍒欑瓑浜庤繑鍒╅噾棰�
-						if (money.compareTo(hongBaoV2.getMoney()) > 0)
-							money = hongBaoV2.getMoney();
-					}
+                        // 澶т簬杩斿埄閲戦 鍒欑瓑浜庤繑鍒╅噾棰�
+                        if (money.compareTo(hongBaoV2.getMoney()) > 0)
+                            money = hongBaoV2.getMoney();
+                    }
 
-					UserOrderWeiQuanRecord weiQuanRecord = new UserOrderWeiQuanRecord();
-					weiQuanRecord.setUid(uid);
-					weiQuanRecord.setSourceType(1); // 娣樺疂
-					weiQuanRecord.setTradeId(orderItemId);
-					weiQuanRecord.setCreateTime(weiQuanOrder.getCreateTime());
-					weiQuanRecord.setMoney(money);
-					weiQuanRecord.setState(state);
-					userOrderWeiQuanRecordMapper.insertSelective(weiQuanRecord);
-				}
-			}
-		}
-	}
+                    UserOrderWeiQuanRecord weiQuanRecord = new UserOrderWeiQuanRecord();
+                    weiQuanRecord.setUid(uid);
+                    weiQuanRecord.setSourceType(1); // 娣樺疂
+                    weiQuanRecord.setTradeId(orderItemId);
+                    weiQuanRecord.setCreateTime(weiQuanOrder.getCreateTime());
+                    weiQuanRecord.setMoney(money);
+                    weiQuanRecord.setState(state);
+                    userOrderWeiQuanRecordMapper.insertSelective(weiQuanRecord);
+                }
+            }
+        }
+    }
 
-	@Transactional(rollbackFor = Exception.class)
-	@Override
-	public void addTaoBaoWeiQuan(TaoBaoWeiQuanOrder order) {
-		if (!order.getState().contains("缁存潈鎴愬姛"))
-			return;
-		// 鏌ヨ鏄惁瀛樺湪绾㈠寘
-		CommonOrder commonOrder = commonOrderService.selectBySourceTypeAndTradeId(Constant.SOURCE_TYPE_TAOBAO,
-				order.getOrderItemId());
-		if (commonOrder == null)
-			return;
-		HongBaoOrder hongBaoOrder = hongBaoOrderService.selectDetailByCommonOrderId(commonOrder.getId());
-		if (hongBaoOrder == null || hongBaoOrder.getHongBaoV2() == null)
-			return;
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void addTaoBaoWeiQuan(TaoBaoWeiQuanOrder order) {
+        if (!order.getState().contains("缁存潈鎴愬姛"))
+            return;
+        // 鏌ヨ鏄惁瀛樺湪绾㈠寘
+        CommonOrder commonOrder = commonOrderService.selectBySourceTypeAndTradeId(Constant.SOURCE_TYPE_TAOBAO,
+                order.getOrderItemId());
+        if (commonOrder == null)
+            return;
+        HongBaoOrder hongBaoOrder = hongBaoOrderService.selectDetailByCommonOrderId(commonOrder.getId());
+        if (hongBaoOrder == null || hongBaoOrder.getHongBaoV2() == null)
+            return;
 
-		BigDecimal settleMoney = hongBaoOrder.getCommonOrder().getSettlement();
-		HongBaoV2 mainHongBao = hongBaoOrder.getHongBaoV2();
-		UserOrderWeiQuanRecord ur = userOrderWeiQuanRecordMapper.selectByOrderInfoAndUid(
-				mainHongBao.getUserInfo().getId(), order.getOrderItemId(), Constant.SOURCE_TYPE_TAOBAO);
-		if (ur == null) {
-			UserOrderWeiQuanRecord record = new UserOrderWeiQuanRecord();
-			record.setCreateTime(new Date());
-			record.setMoney(hongBaoOrder.getHongBaoV2().getMoney().multiply(order.getMoney()).divide(settleMoney, 2,
-					RoundingMode.UP));
-			record.setSourceType(Constant.SOURCE_TYPE_TAOBAO);
-			record.setState(0);
-			record.setTradeId(order.getOrderItemId());
-			record.setUid(hongBaoOrder.getHongBaoV2().getUserInfo().getId());
+        BigDecimal settleMoney = hongBaoOrder.getCommonOrder().getSettlement();
+        HongBaoV2 mainHongBao = hongBaoOrder.getHongBaoV2();
+        UserOrderWeiQuanRecord ur = userOrderWeiQuanRecordMapper.selectByOrderInfoAndUid(
+                mainHongBao.getUserInfo().getId(), order.getOrderItemId(), Constant.SOURCE_TYPE_TAOBAO);
+        if (ur == null) {
+            UserOrderWeiQuanRecord record = new UserOrderWeiQuanRecord();
+            record.setCreateTime(new Date());
+            record.setMoney(hongBaoOrder.getHongBaoV2().getMoney().multiply(order.getMoney()).divide(settleMoney, 2,
+                    RoundingMode.UP));
+            record.setSourceType(Constant.SOURCE_TYPE_TAOBAO);
+            record.setState(UserOrderWeiQuanRecord.STATE_NOT_RETURN);
+            record.setTradeId(order.getOrderItemId());
+            record.setUid(hongBaoOrder.getHongBaoV2().getUserInfo().getId());
 
-			if (record.getMoney().compareTo(hongBaoOrder.getHongBaoV2().getMoney()) > 0)
-				record.setMoney(hongBaoOrder.getHongBaoV2().getMoney());
+            if (record.getMoney().compareTo(hongBaoOrder.getHongBaoV2().getMoney()) > 0)
+                record.setMoney(hongBaoOrder.getHongBaoV2().getMoney());
 
-			userOrderWeiQuanRecordMapper.insertSelective(record);
-		}
-		List<HongBaoV2> children = hongBaoV2Service.listChildrenById(mainHongBao.getId());
-		for (HongBaoV2 v2 : children) {
-			UserOrderWeiQuanRecord record = userOrderWeiQuanRecordMapper.selectByOrderInfoAndUid(
-					v2.getUserInfo().getId(), order.getOrderItemId(), Constant.SOURCE_TYPE_TAOBAO);
-			if (record == null) {
-				record = new UserOrderWeiQuanRecord();
-				record.setCreateTime(new Date());
-				record.setMoney(v2.getMoney().multiply(order.getMoney()).divide(settleMoney, 2, RoundingMode.UP));
-				record.setSourceType(Constant.SOURCE_TYPE_TAOBAO);
-				record.setState(0);
-				record.setTradeId(order.getOrderItemId());
-				record.setUid(v2.getUserInfo().getId());
+            userOrderWeiQuanRecordMapper.insertSelective(record);
+        }
+        List<HongBaoV2> children = hongBaoV2Service.listChildrenById(mainHongBao.getId());
+        for (HongBaoV2 v2 : children) {
+            UserOrderWeiQuanRecord record = userOrderWeiQuanRecordMapper.selectByOrderInfoAndUid(
+                    v2.getUserInfo().getId(), order.getOrderItemId(), Constant.SOURCE_TYPE_TAOBAO);
+            if (record == null) {
+                record = new UserOrderWeiQuanRecord();
+                record.setCreateTime(new Date());
+                record.setMoney(v2.getMoney().multiply(order.getMoney()).divide(settleMoney, 2, RoundingMode.UP));
+                record.setSourceType(Constant.SOURCE_TYPE_TAOBAO);
+                record.setState(UserOrderWeiQuanRecord.STATE_NOT_RETURN);
+                record.setTradeId(order.getOrderItemId());
+                record.setUid(v2.getUserInfo().getId());
 
-				if (record.getMoney().compareTo(v2.getMoney()) > 0)
-					record.setMoney(v2.getMoney());
+                if (record.getMoney().compareTo(v2.getMoney()) > 0)
+                    record.setMoney(v2.getMoney());
 
-				userOrderWeiQuanRecordMapper.insertSelective(record);
-			}
-		}
-	}
+                userOrderWeiQuanRecordMapper.insertSelective(record);
+            }
+        }
+    }
 
-	@Override
-	public UserOrderWeiQuanRecord selectByOrderInfoAndUid(Long uid, String tradeId, int sourceType) {
-		UserOrderWeiQuanRecord record = userOrderWeiQuanRecordMapper.selectByOrderInfoAndUid(uid, tradeId, sourceType);
+    @Override
+    public UserOrderWeiQuanRecord selectByOrderInfoAndUid(Long uid, String tradeId, int sourceType) {
+        UserOrderWeiQuanRecord record = userOrderWeiQuanRecordMapper.selectByOrderInfoAndUid(uid, tradeId, sourceType);
 
-		return record;
-	}
+        return record;
+    }
 
-	
-	@Override
-	public Integer countWeiQaunOrderNumberByDate(String preDay) {
-		return  userOrderWeiQuanRecordMapper.countWeiQaunOrderNumberByDate(preDay);
-	}
-	
-	
-	
-	@Override
-	public BigDecimal countWeiQaunOrderMoneyByDate(String preDay) {
-		return  userOrderWeiQuanRecordMapper.countWeiQaunOrderMoneyByDate(preDay);
-	}
+
+    @Override
+    public Integer countWeiQaunOrderNumberByDate(String preDay) {
+        return userOrderWeiQuanRecordMapper.countWeiQaunOrderNumberByDate(preDay);
+    }
+
+
+    @Override
+    public BigDecimal countWeiQaunOrderMoneyByDate(String preDay) {
+        return userOrderWeiQuanRecordMapper.countWeiQaunOrderMoneyByDate(preDay);
+    }
+
+    @Transactional
+    @Override
+    public void weiQuanMoneyReturn(Long uid, String tradeId, int sourceType) {
+        UserOrderWeiQuanRecord record = selectByOrderInfoAndUid(uid, tradeId, sourceType);
+        if (record == null) {
+            return;
+        }
+        if (record.getState() == UserOrderWeiQuanRecord.STATE_RETURNED)
+            return;
+        UserOrderWeiQuanRecord update = new UserOrderWeiQuanRecord();
+        update.setId(record.getId());
+        update.setState(UserOrderWeiQuanRecord.STATE_RETURNED);
+        update.setUpdateTime(new Date());
+        userOrderWeiQuanRecordMapper.updateByPrimaryKeySelective(update);
+    }
 }

--
Gitblit v1.8.0