From bb07147aaa96d1ef4c99e358dbbe7dad160dc62a Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期四, 19 十二月 2019 15:43:23 +0800
Subject: [PATCH] Merge branch 'div' of ssh://193.112.35.168:29418/fanli-server into div

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/order/UserOrderWeiQuanRecordServiceImpl.java |  110 ++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 89 insertions(+), 21 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 8d1c9e4..d4da58d 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
@@ -1,54 +1,69 @@
 package com.yeshi.fanli.service.impl.order;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.Date;
 import java.util.List;
 
 import javax.annotation.Resource;
 
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import com.yeshi.fanli.dao.mybatis.order.UserOrderWeiQuanRecordMapper;
 import com.yeshi.fanli.dto.HongBaoDTO;
+import com.yeshi.fanli.entity.bus.user.HongBaoV2;
+import com.yeshi.fanli.entity.order.CommonOrder;
+import com.yeshi.fanli.entity.order.HongBaoOrder;
 import com.yeshi.fanli.entity.order.UserOrderWeiQuanRecord;
 import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanDrawBack;
 import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder;
 import com.yeshi.fanli.service.inter.money.tb.TaoBaoWeiQuanDrawBackService;
+import com.yeshi.fanli.service.inter.order.CommonOrderService;
+import com.yeshi.fanli.service.inter.order.HongBaoOrderService;
 import com.yeshi.fanli.service.inter.order.HongBaoV2Service;
 import com.yeshi.fanli.service.inter.order.UserOrderWeiQuanRecordService;
 import com.yeshi.fanli.service.inter.order.tb.TaoBaoWeiQuanOrderService;
-import com.yeshi.fanli.util.MoneyBigDecimalUtil;
+import com.yeshi.fanli.util.Constant;
 
 @Service
 public class UserOrderWeiQuanRecordServiceImpl implements UserOrderWeiQuanRecordService {
-	
+
 	@Resource
 	private UserOrderWeiQuanRecordMapper userOrderWeiQuanRecordMapper;
-	
+
 	@Resource
 	private TaoBaoWeiQuanOrderService taoBaoWeiQuanOrderService;
-	
+
 	@Resource
 	private TaoBaoWeiQuanDrawBackService taoBaoWeiQuanDrawBackService;
-	
+
 	@Resource
 	private HongBaoV2Service hongBaoV2Service;
-	
+
+	@Resource
+	private CommonOrderService commonOrderService;
+
+	@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()) 
+			if (list == null || list.isEmpty())
 				break;
-			
-			for (TaoBaoWeiQuanOrder weiQuanOrder: list) {
+
+			for (TaoBaoWeiQuanOrder weiQuanOrder : list) {
 				String orderItemId = weiQuanOrder.getOrderItemId();
-				
+
 				List<HongBaoDTO> listV2 = hongBaoV2Service.listByOrderTradeId(orderItemId);
-				for (HongBaoDTO hongBaoV2: listV2) {
+				for (HongBaoDTO hongBaoV2 : listV2) {
 					Long uid = hongBaoV2.getUserInfo().getId();
-					TaoBaoWeiQuanDrawBack drawBack= taoBaoWeiQuanDrawBackService.selectByOrderItemIdAndUid(orderItemId, uid);
-					
+					TaoBaoWeiQuanDrawBack drawBack = taoBaoWeiQuanDrawBackService.selectByOrderItemIdAndUid(orderItemId,
+							uid);
+
 					int state = 0;
 					BigDecimal money = null;
 					if (drawBack != null) {
@@ -58,18 +73,18 @@
 							money = drawBackMoney;
 						}
 					}
-					
+
 					if (money == null) {
-						// (缁存潈閲戦/缁撶畻閲戦)   * 杩斿埄閲戦 
+						// (缁存潈閲戦/缁撶畻閲戦) * 杩斿埄閲戦
 						BigDecimal wqmoney = weiQuanOrder.getMoney();
-						money = wqmoney.multiply(hongBaoV2.getMoney())
-								.divide(hongBaoV2.getSettlement(), 2, BigDecimal.ROUND_DOWN);
-						
-						// 澶т簬杩斿埄閲戦  鍒欑瓑浜庤繑鍒╅噾棰�
+						money = wqmoney.multiply(hongBaoV2.getMoney()).divide(hongBaoV2.getSettlement(), 2,
+								BigDecimal.ROUND_UP);
+
+						// 澶т簬杩斿埄閲戦 鍒欑瓑浜庤繑鍒╅噾棰�
 						if (money.compareTo(hongBaoV2.getMoney()) > 0)
 							money = hongBaoV2.getMoney();
 					}
-					
+
 					UserOrderWeiQuanRecord weiQuanRecord = new UserOrderWeiQuanRecord();
 					weiQuanRecord.setUid(uid);
 					weiQuanRecord.setSourceType(1); // 娣樺疂
@@ -82,6 +97,59 @@
 			}
 		}
 	}
-	
+
+	@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());
+
+			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());
+
+				if (record.getMoney().compareTo(v2.getMoney()) > 0)
+					record.setMoney(v2.getMoney());
+
+				userOrderWeiQuanRecordMapper.insertSelective(record);
+			}
+		}
+	}
 
 }

--
Gitblit v1.8.0