From 9a24f2802a3d6fe3e82c05e52f2880d65ad04dcf Mon Sep 17 00:00:00 2001
From: yujian <yujian>
Date: 星期一, 29 四月 2019 08:59:47 +0800
Subject: [PATCH] Merge branch 'div_develop' into master_develop

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/hongbao/HongBaoV2ServiceImpl.java |  237 +++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 214 insertions(+), 23 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/hongbao/HongBaoV2ServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/hongbao/HongBaoV2ServiceImpl.java
index d0b324c..7cf4837 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/hongbao/HongBaoV2ServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/hongbao/HongBaoV2ServiceImpl.java
@@ -1,6 +1,7 @@
 package com.yeshi.fanli.service.impl.hongbao;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.HashMap;
@@ -16,18 +17,17 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import com.yeshi.fanli.dao.mybatis.HongBaoV2Mapper;
-import com.yeshi.fanli.dao.mybatis.hongbao.HongBaoMapper;
 import com.yeshi.fanli.dao.mybatis.order.CommonOrderGoodsMapper;
 import com.yeshi.fanli.dao.mybatis.order.CommonOrderMapper;
 import com.yeshi.fanli.dao.mybatis.order.HongBaoOrderMapper;
-import com.yeshi.fanli.dao.mybatis.order.OrderItemMapper;
 import com.yeshi.fanli.dao.mybatis.order.OrderMapper;
 import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoOrderMapper;
 import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoWeiQuanOrderMapper;
+import com.yeshi.fanli.dto.HongBao;
 import com.yeshi.fanli.dto.HongBaoDTO;
 import com.yeshi.fanli.entity.bus.msg.MsgOrderDetail;
-import com.yeshi.fanli.entity.bus.user.HongBao;
 import com.yeshi.fanli.entity.bus.user.HongBaoV2;
+import com.yeshi.fanli.entity.bus.user.ThreeSale;
 import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo;
 import com.yeshi.fanli.entity.bus.user.UserInfo;
 import com.yeshi.fanli.entity.order.CommonOrder;
@@ -64,13 +64,7 @@
 	private HongBaoV2Mapper hongBaoV2Mapper;
 
 	@Resource
-	private HongBaoMapper hongBaoMapper;
-
-	@Resource
 	private TaoBaoOrderMapper taoBaoOrderMapper;
-
-	@Resource
-	private OrderItemMapper orderItemMapper;
 
 	@Resource
 	private CommonOrderMapper commonOrderMapper;
@@ -95,7 +89,6 @@
 
 	@Resource
 	private UserShareGoodsGroupService userShareGoodsGroupService;
-
 
 	@Resource
 	private HongBaoManageService hongBaoManageService;
@@ -154,7 +147,6 @@
 		return hongBaoV2Mapper.selectByPrimaryKey(id);
 	}
 
-
 	@Transactional
 	@Override
 	public void addHongBao(List<CommonOrder> commonOrderList, int type) throws HongBaoException {
@@ -183,7 +175,6 @@
 			if (hasAdd) {
 				Iterator<Integer> its = notificationMap.keySet().iterator();
 				while (its.hasNext()) {
-
 					Integer t = its.next();
 					HongBaoV2 notify = notificationMap.get(t).getHongBaoV2();
 					CommonOrder commonOrder = notificationMap.get(t).getCommonOrder();
@@ -214,6 +205,11 @@
 								MsgOrderDetail.STATE_FK, null, money);
 						userOrderMsgNotificationService.orderInviteStatistic(uid, orderId, commonOrder.getPayment(),
 								money, goodsCount, state);
+						break;
+
+					case HongBaoV2.TYPE_SHARE_YIJI:
+						userOrderMsgNotificationService.orderShareFirstLevelStatistic(uid, orderId,
+								commonOrder.getPayment(), money, goodsCount, state, notify.getBeizhu());
 						break;
 					}
 				}
@@ -247,6 +243,9 @@
 						userOrderMsgNotificationService.orderInviteStateChanged(uid, orderId, commonOrder.getPayment(),
 								money, state);
 						break;
+					case HongBaoV2.TYPE_SHARE_YIJI:
+						userOrderMsgNotificationService.orderShareFirstLevelStateChanged(uid, orderId,
+								commonOrder.getPayment(), money, state);
 					}
 				}
 			}
@@ -346,7 +345,7 @@
 
 			// 鑾峰彇瀛愮孩鍖�
 			List<HongBaoV2> children = hongBaoV2Mapper.listChildrenById(hongBao.getId());
-			if (children != null)
+			if (children != null && children.size() > 0)
 				for (HongBaoV2 child : children) {
 					HongBaoV2 childUpdate = new HongBaoV2(child.getId());
 					childUpdate.setState(hongBao.getState());
@@ -395,7 +394,110 @@
 					}
 
 				}
+			else {// 淇涔嬪墠浜岀骇,涓夌骇璁㈠崟鏈粺璁″埌鐨勬儏鍐�
+				if (!mianDan) {
+					ThreeSale threeSale = threeSaleSerivce.selectByWorkerId(commonOrder.getUserInfo().getId());
+					if (threeSale != null && threeSale.getSucceedTime() != null
+							&& threeSale.getSucceedTime() <= commonOrder.getThirdCreateTime().getTime()) {
+						UserInfo boss = threeSaleSerivce.getBoss(commonOrder.getUserInfo().getId());
+						// 鎻掑叆涓�绾у瓙绾㈠寘
+						BigDecimal firstRate = hongBaoManageService
+								.getFirstInviteRate(boss.getRank() == null ? 0 : boss.getRank());
+						if (firstRate.compareTo(new BigDecimal(0)) <= 0)
+							return;
+						HongBaoV2 firstHongbao = new HongBaoV2();
+						firstHongbao.setUserInfo(boss);
+						firstHongbao.setUrank(boss.getRank());
+						firstHongbao.setParent(hongBao);
+						firstHongbao.setCreateTime(new Date());
+						firstHongbao.setType(HongBaoV2.TYPE_YIJI);
+						firstHongbao.setVersion(2);
+						firstHongbao.setState(hongBao.getState());
 
+						if (hongBao.getState() == HongBaoV2.STATE_KELINGQU) {
+							firstHongbao.setMoney(
+									MoneyBigDecimalUtil.mul(hongBao.getMoney(), firstRate.divide(new BigDecimal(100))));
+							Calendar calendar = Calendar.getInstance();
+							calendar.setTime(commonOrder.getSettleTime());
+							calendar.add(Calendar.MONTH, 1);
+							firstHongbao.setPreGetTime(new Date(TimeUtil.convertToTimeTemp(
+									calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-25",
+									"yyyy-M-dd")));
+						} else if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU) {
+							firstHongbao.setMoney(
+									MoneyBigDecimalUtil.mul(hongBao.getMoney(), firstRate.divide(new BigDecimal(100))));
+						}
+						hongBaoV2Mapper.insertSelective(firstHongbao);
+						// 鐢ㄦ埛閫氱煡
+						if (notificationMap.get(HongBaoV2.TYPE_YIJI) == null) {
+							HongBaoV2 tempHongBao = new HongBaoV2(firstHongbao.getId());
+							tempHongBao.setUserInfo(firstHongbao.getUserInfo());
+							tempHongBao.setMoney(firstHongbao.getMoney());
+							CommonOrder tempCommonOrder = new CommonOrder(commonOrder.getId());
+							tempCommonOrder.setPayment(commonOrder.getPayment());
+							notificationMap.put(HongBaoV2.TYPE_YIJI, new HongBaoOrder(tempCommonOrder, tempHongBao));
+						} else {
+							// 澧炲姞浠樻閲戦涓庤祫閲�
+							HongBaoOrder tempHongBaoOrder = notificationMap.get(HongBaoV2.TYPE_YIJI);
+							tempHongBaoOrder.getCommonOrder().setPayment(
+									tempHongBaoOrder.getCommonOrder().getPayment().add(commonOrder.getPayment()));
+							tempHongBaoOrder.getHongBaoV2()
+									.setMoney(tempHongBaoOrder.getHongBaoV2().getMoney().add(firstHongbao.getMoney()));
+							notificationMap.put(HongBaoV2.TYPE_YIJI, tempHongBaoOrder);
+						}
+
+						// 鎻掑叆浜岀骇瀛愮孩鍖�
+						boss = threeSaleSerivce.getBoss(boss.getId());
+						if (boss != null) {// 浜岀骇BOSS瀛樺湪
+							BigDecimal secondRate = hongBaoManageService
+									.getSecondInviteRate(boss.getRank() == null ? 0 : boss.getRank());
+							if (secondRate.compareTo(new BigDecimal(0)) <= 0)
+								return;
+							HongBaoV2 secondHongbao = new HongBaoV2();
+							secondHongbao.setUserInfo(boss);
+							secondHongbao.setUrank(boss.getRank());
+							secondHongbao.setParent(hongBao);
+							secondHongbao.setCreateTime(new Date());
+							secondHongbao.setType(HongBaoV2.TYPE_ERJI);
+							secondHongbao.setVersion(2);
+							secondHongbao.setState(hongBao.getState());
+							if (hongBao.getState() == HongBaoV2.STATE_KELINGQU) {
+								secondHongbao.setMoney(MoneyBigDecimalUtil.mul(hongBao.getMoney(),
+										secondRate.divide(new BigDecimal(100))));
+								Calendar calendar = Calendar.getInstance();
+								calendar.setTime(commonOrder.getSettleTime());
+								calendar.add(Calendar.MONTH, 1);
+								secondHongbao.setPreGetTime(new Date(TimeUtil.convertToTimeTemp(
+										calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-25",
+										"yyyy-M-dd")));
+							} else if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU) {
+								secondHongbao.setMoney(MoneyBigDecimalUtil.mul(hongBao.getMoney(),
+										secondRate.divide(new BigDecimal(100))));
+							}
+							hongBaoV2Mapper.insertSelective(secondHongbao);
+
+							// 鐢ㄦ埛閫氱煡
+							if (notificationMap.get(HongBaoV2.TYPE_ERJI) == null) {
+								HongBaoV2 tempHongBao = new HongBaoV2(secondHongbao.getId());
+								tempHongBao.setUserInfo(secondHongbao.getUserInfo());
+								tempHongBao.setMoney(secondHongbao.getMoney());
+								CommonOrder tempCommonOrder = new CommonOrder(commonOrder.getId());
+								tempCommonOrder.setPayment(commonOrder.getPayment());
+								notificationMap.put(HongBaoV2.TYPE_ERJI,
+										new HongBaoOrder(tempCommonOrder, tempHongBao));
+							} else {
+								// 澧炲姞浠樻閲戦涓庤祫閲�
+								HongBaoOrder tempHongBaoOrder = notificationMap.get(HongBaoV2.TYPE_ERJI);
+								tempHongBaoOrder.getCommonOrder().setPayment(
+										tempHongBaoOrder.getCommonOrder().getPayment().add(commonOrder.getPayment()));
+								tempHongBaoOrder.getHongBaoV2().setMoney(
+										tempHongBaoOrder.getHongBaoV2().getMoney().add(secondHongbao.getMoney()));
+								notificationMap.put(HongBaoV2.TYPE_ERJI, tempHongBaoOrder);
+							}
+						}
+					}
+				}
+			}
 		} else if (type == HongBaoV2.TYPE_SHARE_GOODS) {
 			BigDecimal fanliRate = hongBaoManageService.getShareRate(commonOrder.getCreateTime().getTime());
 			List<ShareGoodsActivityOrder> list = shareGoodsActivityOrderService
@@ -453,17 +555,20 @@
 					childUpdate.setUpdateTime(new Date());
 					BigDecimal rate = null;
 					if (child.getType() == HongBaoV2.TYPE_SHARE_YIJI) {// 涓�绾у垎浜禋
-						rate = hongBaoManageService.getFirstShareRate(child.getUrank(),
-								commonOrder.getCreateTime().getTime());
+						rate = hongBaoManageService.getFirstShareRate(1, commonOrder.getCreateTime().getTime());
 					} else if (child.getType() == HongBaoV2.TYPE_SHARE_ERJI) {// 浜岀骇鍒嗕韩璧�
-						rate = hongBaoManageService.getSecondShareRate(child.getUrank(),
-								commonOrder.getCreateTime().getTime());
+						rate = hongBaoManageService.getSecondShareRate(1, commonOrder.getCreateTime().getTime());
 					}
 
 					// 浠ュ疄闄呮敹鍏ヤ负鍑嗚绠楅浼版敹鐩�
 					if (CommonOrder.STATE_JS == commonOrder.getState()) {
 						childUpdate.setMoney(
 								MoneyBigDecimalUtil.mul(hongBao.getMoney(), rate.divide(new BigDecimal(100))));
+						if (commonOrder.getThirdCreateTime().getTime() > TimeUtil.convertToTimeTemp("2019-04-16",
+								"yyyy-MM-dd"))
+							childUpdate.setMoney(MoneyBigDecimalUtil.mul(commonOrder.geteIncome(),
+									rate.divide(new BigDecimal(100))));
+
 						Calendar calendar = Calendar.getInstance();
 						calendar.setTime(commonOrder.getSettleTime());
 						calendar.add(Calendar.MONTH, 1);
@@ -471,13 +576,34 @@
 								calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-25",
 								"yyyy-M-dd")));
 					} else if (CommonOrder.STATE_FK == commonOrder.getState()) {
-						if (commonOrder.getOrderNo().equalsIgnoreCase("314134177659155087"))
-							System.out.println("");
-
-						childUpdate.setMoney(
-								MoneyBigDecimalUtil.mul(hongBao.getMoney(), rate.divide(new BigDecimal(100))));
+						if (commonOrder.getThirdCreateTime().getTime() > TimeUtil.convertToTimeTemp("2019-04-16",
+								"yyyy-MM-dd"))
+							childUpdate.setMoney(MoneyBigDecimalUtil.mul(commonOrder.getEstimate(),
+									rate.divide(new BigDecimal(100))));
+						else
+							childUpdate.setMoney(
+									MoneyBigDecimalUtil.mul(hongBao.getMoney(), rate.divide(new BigDecimal(100))));
 					}
 					hongBaoV2Mapper.updateByPrimaryKeySelective(childUpdate);
+					// 娣诲姞閫氱煡
+					if (notificationMap.get(child.getType()) == null) {
+						HongBaoV2 tempHongBao = new HongBaoV2(child.getId());
+						tempHongBao.setUserInfo(child.getUserInfo());
+						tempHongBao.setMoney(childUpdate.getMoney());
+						CommonOrder tempCommonOrder = new CommonOrder(commonOrder.getId());
+						tempCommonOrder.setPayment(commonOrder.getPayment());
+						notificationMap.put(child.getType(), new HongBaoOrder(tempCommonOrder, tempHongBao));
+					} else {
+						// 澧炲姞浠樻閲戦涓庤祫閲�
+						HongBaoOrder tempHongBaoOrder = notificationMap.get(child.getType());
+						tempHongBaoOrder.getCommonOrder().setPayment(
+								tempHongBaoOrder.getCommonOrder().getPayment().add(commonOrder.getPayment()));
+						tempHongBaoOrder.getHongBaoV2()
+								.setMoney(tempHongBaoOrder.getHongBaoV2().getMoney().add(childUpdate.getMoney()));
+						notificationMap.put(child.getType(), tempHongBaoOrder);
+					}
+					
+					
 				}
 		} else
 			throw new HongBaoException(2, "type閿欒");
@@ -707,7 +833,6 @@
 						}
 					}
 				}
-
 			}
 
 			HongBaoV2 hongBao = new HongBaoV2();
@@ -754,6 +879,56 @@
 				tempHongBaoOrder.getHongBaoV2()
 						.setMoney(tempHongBaoOrder.getHongBaoV2().getMoney().add(hongBao.getMoney()));
 				notificationMap.put(type, tempHongBaoOrder);
+			}
+
+			// 4鏈�17鏃ュ悗鎵嶆湁涓�绾у垎浜禋
+			if (commonOrder.getThirdCreateTime().getTime() > TimeUtil.convertToTimeTemp("2019-04-17", "yyyy-MM-dd")) {
+				UserInfo boss = threeSaleSerivce.getBoss(hongBao.getUserInfo().getId());
+				if (boss != null) {
+					BigDecimal firstLevelRate = hongBaoManageService.getFirstShareRate(1,
+							commonOrder.getThirdCreateTime().getTime());
+					HongBaoV2 child = new HongBaoV2();
+					child.setParent(hongBao);
+					child.setType(HongBaoV2.TYPE_SHARE_YIJI);
+					if (commonOrder.getState() == CommonOrder.STATE_FK) {
+						child.setState(HongBaoV2.STATE_BUKELINGQU);
+						child.setMoney(MoneyBigDecimalUtil.mul(commonOrder.getEstimate(),
+								firstLevelRate.divide(new BigDecimal(100))));
+					} else if (commonOrder.getState() == CommonOrder.STATE_JS) {
+						child.setState(HongBaoV2.STATE_KELINGQU);
+						child.setMoney(MoneyBigDecimalUtil.mul(commonOrder.geteIncome(),
+								firstLevelRate.divide(new BigDecimal(100))));
+						Calendar calendar = Calendar.getInstance();
+						calendar.setTime(commonOrder.getSettleTime());
+						calendar.add(Calendar.MONTH, 1);
+						child.setPreGetTime(new Date(TimeUtil.convertToTimeTemp(
+								calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-25",
+								"yyyy-M-dd")));
+					}
+					child.setUserInfo(boss);
+					child.setUrank(boss.getRank());
+					child.setVersion(2);
+					child.setCreateTime(new Date());
+					hongBaoV2Mapper.insertSelective(child);
+					// 娣诲姞閫氱煡
+					if (notificationMap.get(HongBaoV2.TYPE_SHARE_YIJI) == null) {
+						HongBaoV2 tempHongBao = new HongBaoV2(child.getId());
+						tempHongBao.setUserInfo(child.getUserInfo());
+						tempHongBao.setMoney(child.getMoney());
+						tempHongBao.setBeizhu(hongBao.getUserInfo().getNickName());
+						CommonOrder tempCommonOrder = new CommonOrder(commonOrder.getId());
+						tempCommonOrder.setPayment(commonOrder.getPayment());
+						notificationMap.put(HongBaoV2.TYPE_SHARE_YIJI, new HongBaoOrder(tempCommonOrder, tempHongBao));
+					} else {
+						// 澧炲姞浠樻閲戦涓庤祫閲�
+						HongBaoOrder tempHongBaoOrder = notificationMap.get(HongBaoV2.TYPE_SHARE_YIJI);
+						tempHongBaoOrder.getCommonOrder().setPayment(
+								tempHongBaoOrder.getCommonOrder().getPayment().add(commonOrder.getPayment()));
+						tempHongBaoOrder.getHongBaoV2()
+								.setMoney(tempHongBaoOrder.getHongBaoV2().getMoney().add(child.getMoney()));
+						notificationMap.put(HongBaoV2.TYPE_SHARE_YIJI, tempHongBaoOrder);
+					}
+				}
 			}
 
 			// 淇敼缁熻鏁版嵁
@@ -837,4 +1012,20 @@
 		else
 			return money;
 	}
+
+	@Override
+	public BigDecimal computeMoneyByUidAndState(Long uid, int state) {
+		List<Integer> stateList = new ArrayList<>();
+		stateList.add(state);
+		BigDecimal money = hongBaoV2Mapper.computeMoneyByUidAndState(uid, stateList);
+		if (money == null)
+			return new BigDecimal(0);
+		else
+			return money;
+	}
+	
+	@Override
+	public List<HongBaoV2> listChildrenById(Long id){
+		return hongBaoV2Mapper.listChildrenById(id);
+	}
 }

--
Gitblit v1.8.0