From 353ac53e5e8093e36c69fbaa7b26160bb2d97f9d Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期三, 15 四月 2020 16:09:24 +0800
Subject: [PATCH] 消息订阅

---
 fanli/src/main/java/com/yeshi/fanli/service/manger/order/TeamDividentsManager.java |   50 +++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 39 insertions(+), 11 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/manger/order/TeamDividentsManager.java b/fanli/src/main/java/com/yeshi/fanli/service/manger/order/TeamDividentsManager.java
index 6a14fc8..fc7a5e5 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/manger/order/TeamDividentsManager.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/manger/order/TeamDividentsManager.java
@@ -16,15 +16,17 @@
 import com.yeshi.fanli.entity.bus.user.ThreeSale;
 import com.yeshi.fanli.entity.bus.user.vip.TeamUserLevelStatistic;
 import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum;
-import com.yeshi.fanli.entity.money.UserMoneyDetail;
+import com.yeshi.fanli.entity.order.CommonOrder;
 import com.yeshi.fanli.entity.order.dividents.TeamDividentsDebt;
 import com.yeshi.fanli.entity.order.dividents.TeamDividentsRecord;
 import com.yeshi.fanli.entity.order.dividents.TeamDividentsSourceOrder;
 import com.yeshi.fanli.entity.order.dividents.TeamDividentsSourceUser;
 import com.yeshi.fanli.exception.ParamsException;
 import com.yeshi.fanli.exception.money.TeamDividentsDebtException;
+import com.yeshi.fanli.exception.money.TeamEincomeRecordException;
 import com.yeshi.fanli.exception.money.UserMoneyDetailException;
 import com.yeshi.fanli.exception.order.dividents.TeamDividentsRecordException;
+import com.yeshi.fanli.exception.order.dividents.TeamDividentsSourceOrderException;
 import com.yeshi.fanli.service.inter.money.TeamDividentsDebtService;
 import com.yeshi.fanli.service.inter.money.UserMoneyService;
 import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
@@ -33,10 +35,12 @@
 import com.yeshi.fanli.service.inter.order.dividents.TeamDividentsSourceUserService;
 import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
 import com.yeshi.fanli.service.inter.user.vip.TeamUserLevelStatisticService;
+import com.yeshi.fanli.service.manger.money.TeamEincomeManager;
 import com.yeshi.fanli.util.Constant;
 import com.yeshi.fanli.util.MoneyBigDecimalUtil;
 import com.yeshi.fanli.util.TimeUtil;
-import com.yeshi.fanli.util.factory.UserMoneyDetailFactory;
+import com.yeshi.fanli.util.factory.order.dividents.TeamDividentsSourceOrderFactory;
+import com.yeshi.fanli.util.user.UserLevelUtil;
 
 /**
  * 鍥㈤槦鍒嗙孩绠$悊
@@ -69,6 +73,28 @@
 
 	@Resource
 	private HongBaoManageService hongBaoManageService;
+
+	@Resource
+	private TeamEincomeManager teamEincomeManager;
+
+	@Transactional(rollbackFor = Exception.class)
+	public void addDividentsSourceOrder(List<CommonOrder> commonOrderList) throws TeamDividentsSourceOrderException {
+		if (commonOrderList.get(0).getThirdCreateTime().getTime() < Constant.NEW_ORDER_FANLI_RULE_TIME)
+			return;
+
+		UserLevelEnum level = UserLevelUtil.getByOrderRank(commonOrderList.get(0).getUrank());
+		if (level == null)
+			level = UserLevelEnum.daRen;
+		BigDecimal rate = getSourceOrderDividentsRate(level);
+		TeamDividentsSourceOrder order = TeamDividentsSourceOrderFactory.create(commonOrderList, rate);
+		if (order == null)
+			return;
+		try {
+			teamDividentsSourceOrderService.addTeamDividentsSourceOrder(order);
+		} catch (ParamsException e) {
+			throw new TeamDividentsSourceOrderException(101, "鍙傛暟涓嶅畬鏁�");
+		}
+	}
 
 	/**
 	 *  寮�濮嬪垎绾�
@@ -166,6 +192,11 @@
 			}
 		}
 
+		// 娌℃湁鍙備笌鍒嗙孩鐨勭敤鎴�
+		if (uidLevel == null || uidLevel.size() == 0) {
+			return;
+		}
+
 		BigDecimal perDivident = computePerDivident(uidLevel, totalMoney);
 		for (Iterator<Long> its = uidLevel.keySet().iterator(); its.hasNext();) {
 			Long uid = its.next();
@@ -233,11 +264,12 @@
 	 * @throws
 	 */
 	@Transactional(rollbackFor = Exception.class)
-	public void addDividents(Long uid, String day)
-			throws TeamDividentsRecordException, TeamDividentsDebtException, UserMoneyDetailException, ParamsException {
+	public void addToTeamEincome(Long uid, Date preSendTime) throws TeamDividentsRecordException,
+			TeamDividentsDebtException, UserMoneyDetailException, ParamsException, TeamEincomeRecordException {
+		String day = TimeUtil.getGernalTime(preSendTime.getTime(), "yyyy-MM-dd");
 		BigDecimal money = teamDividentsSourceUserService.sumMoneyByUidAndDay(uid, day);
 		// 鏌ヨ闇�瑕佹墸闄ょ殑璧勯噾
-		List<TeamDividentsDebt> list = teamDividentsDebtService.listNeedRepayDebt(uid, 1, 1000);
+		List<TeamDividentsDebt> list = teamDividentsDebtService.listNeedRepayDebt(uid, preSendTime, 1, 1000);
 		for (TeamDividentsDebt debt : list) {
 			if (money.subtract(debt.getLeftMoney()).compareTo(new BigDecimal(0)) >= 0) {// 杩樻湁閽辫繕
 				money = money.subtract(debt.getLeftMoney());
@@ -259,12 +291,9 @@
 
 		// 鏈夊垎绾㈡墠鏄剧ず璧勯噾鏄庣粏
 		if (money.compareTo(new BigDecimal(0)) > 0) {
-			UserMoneyDetail detail = UserMoneyDetailFactory.createOrderTeamDividents(uid, money, new Date());
-			// 澧炲姞璧勯噾
-			userMoneyService.addUserMoney(uid, money, detail);
-			// TODO 鍔犲叆閫氱煡
-		}
 
+			teamEincomeManager.addTeamDividents(uid, preSendTime, money);
+		}
 	}
 
 	/**
@@ -318,7 +347,6 @@
 		} else if (sourceOrder.getState() == TeamDividentsSourceOrder.STATE_CAN_SEND) {
 			teamDividentsSourceOrderService.invalidOrder(orderNo, sourceType, "璁㈠崟缁存潈");
 		}
-
 	}
 
 	/**

--
Gitblit v1.8.0