From f4a0f2acc63d7785eab108419a4e16f5f688cb95 Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期六, 18 一月 2020 12:06:27 +0800
Subject: [PATCH] 用户注册信息

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/order/HongBaoV2ServiceImpl.java |  139 ++++++++++++++++++++++++++++-----------------
 1 files changed, 86 insertions(+), 53 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/HongBaoV2ServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/HongBaoV2ServiceImpl.java
index 0e3f9b7..7c88661 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/HongBaoV2ServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/HongBaoV2ServiceImpl.java
@@ -34,10 +34,12 @@
 import com.yeshi.fanli.entity.order.CommonOrderGoods;
 import com.yeshi.fanli.entity.order.HongBaoOrder;
 import com.yeshi.fanli.entity.order.ShareGoodsActivityOrder;
+import com.yeshi.fanli.entity.system.ConfigKeyEnum;
 import com.yeshi.fanli.entity.taobao.TaoBaoOrder;
 import com.yeshi.fanli.exception.order.HongBaoException;
 import com.yeshi.fanli.exception.order.ShareGoodsActivityOrderException;
 import com.yeshi.fanli.exception.share.UserShareGoodsRecordException;
+import com.yeshi.fanli.exception.user.UserAccountException;
 import com.yeshi.fanli.log.LogHelper;
 import com.yeshi.fanli.service.inter.config.ConfigService;
 import com.yeshi.fanli.service.inter.order.CommonOrderService;
@@ -145,9 +147,9 @@
 		return hongBaoV2Mapper.selectByPrimaryKey(id);
 	}
 
-	@Transactional
+	@Transactional(rollbackFor=Exception.class)
 	@Override
-	public int addHongBao(List<CommonOrder> commonOrderList, int type) throws HongBaoException {
+	public int addHongBao(List<CommonOrder> commonOrderList, int type) throws HongBaoException, UserAccountException {
 		Set<Integer> stateSet = new HashSet<>();// 璁㈠崟鐘舵�丼et
 		if (commonOrderList != null && commonOrderList.size() > 0) {
 			int orderType = commonOrderList.get(0).getSourceType();
@@ -171,7 +173,7 @@
 						hasUpdate = true;
 				}
 			}
-				
+
 			/**
 			 * 閫氱煡鐢ㄦ埛鐨勮繑鍒╂儏鍐�
 			 */
@@ -275,9 +277,9 @@
 		return CommonOrder.STATE_SX;
 	}
 
-	@Transactional
+	@Transactional(rollbackFor=Exception.class)
 	private boolean updateHongBao(HongBaoOrder hongBaoOrder, CommonOrder commonOrder, int type,
-			Map<Integer, HongBaoOrder> notificationMap) throws HongBaoException {
+			Map<Integer, HongBaoOrder> notificationMap) throws HongBaoException, UserAccountException {
 		System.out.println(commonOrder.getOrderNo());
 		// 閿佽
 		HongBaoV2 oldHongBao = hongBaoV2Mapper.selectByPrimaryKeyForUpdate(hongBaoOrder.getHongBaoV2().getId());
@@ -313,7 +315,8 @@
 						MoneyBigDecimalUtil.mul(commonOrder.getEstimate(), fanliRate.divide(new BigDecimal(100))));
 				if (mianDan)
 					hongBao.setMoney(commonOrder.getPayment());
-			} else if (commonOrder.getState() == CommonOrder.STATE_JS) {
+			} else if (commonOrder.getState() == CommonOrder.STATE_JS
+					|| commonOrder.getState() == CommonOrder.STATE_WQ) {
 				hongBao.setState(HongBaoV2.STATE_KELINGQU);
 				hongBao.setMoney(
 						MoneyBigDecimalUtil.mul(commonOrder.geteIncome(), fanliRate.divide(new BigDecimal(100))));
@@ -369,6 +372,9 @@
 			List<HongBaoV2> children = hongBaoV2Mapper.listChildrenById(hongBao.getId());
 			if (children != null && children.size() > 0)
 				for (HongBaoV2 child : children) {
+					if (child.getState() == HongBaoV2.STATE_YILINGQU)
+						continue;
+
 					HongBaoV2 childUpdate = new HongBaoV2(child.getId());
 					childUpdate.setState(hongBao.getState());
 					childUpdate.setUpdateTime(new Date());
@@ -449,24 +455,31 @@
 						} else if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU) {
 							firstHongbao.setMoney(
 									MoneyBigDecimalUtil.mul(hongBao.getMoney(), firstRate.divide(new BigDecimal(100))));
+						} else if (hongBao.getState() == HongBaoV2.STATE_SHIXIAO) {
+							firstHongbao.setMoney(new BigDecimal(0));
 						}
-						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);
+
+						if (firstHongbao.getMoney() != null
+								&& firstHongbao.getMoney().compareTo(new BigDecimal(0)) > 0) {
+							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);
+							}
 						}
 
 						// 鎻掑叆浜岀骇瀛愮孩鍖�
@@ -497,26 +510,29 @@
 							} 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 (hongBao.getState() == HongBaoV2.STATE_SHIXIAO)
+								secondHongbao.setMoney(new BigDecimal(0));
+							if (secondHongbao.getMoney() != null
+									&& secondHongbao.getMoney().compareTo(new BigDecimal(0)) > 0) {
+								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);
+								}
 							}
 						}
 					}
@@ -543,7 +559,8 @@
 				hongBao.setState(HongBaoV2.STATE_BUKELINGQU);
 				hongBao.setMoney(
 						MoneyBigDecimalUtil.mul(commonOrder.getEstimate(), fanliRate.divide(new BigDecimal(100))));
-			} else if (commonOrder.getState() == CommonOrder.STATE_JS) {
+			} else if (commonOrder.getState() == CommonOrder.STATE_JS
+					|| commonOrder.getState() == CommonOrder.STATE_WQ) {
 				hongBao.setState(HongBaoV2.STATE_KELINGQU);
 				hongBao.setMoney(
 						MoneyBigDecimalUtil.mul(commonOrder.geteIncome(), fanliRate.divide(new BigDecimal(100))));
@@ -579,6 +596,9 @@
 			List<HongBaoV2> children = hongBaoV2Mapper.listChildrenById(hongBao.getId());
 			if (children != null)
 				for (HongBaoV2 child : children) {
+					if (child.getState() == HongBaoV2.STATE_YILINGQU)
+						continue;
+
 					HongBaoV2 childUpdate = new HongBaoV2(child.getId());
 					// 缁熶竴璁剧疆鐘舵��
 					childUpdate.setState(hongBao.getState());
@@ -591,7 +611,8 @@
 					}
 
 					// 浠ュ疄闄呮敹鍏ヤ负鍑嗚绠楅浼版敹鐩�
-					if (CommonOrder.STATE_JS == commonOrder.getState()) {
+					if (CommonOrder.STATE_JS == commonOrder.getState()
+							|| CommonOrder.STATE_WQ == commonOrder.getState()) {
 						childUpdate.setMoney(
 								MoneyBigDecimalUtil.mul(hongBao.getMoney(), rate.divide(new BigDecimal(100))));
 						if (commonOrder.getThirdCreateTime().getTime() > TimeUtil.convertToTimeTemp("2019-04-16",
@@ -643,9 +664,9 @@
 		return true;
 	}
 
-	@Transactional
+	@Transactional(rollbackFor=Exception.class)
 	private void saveHongBao(CommonOrder commonOrder, int type, Map<Integer, HongBaoOrder> notificationMap)
-			throws HongBaoException {
+			throws HongBaoException, UserAccountException {
 		if (type == HongBaoV2.TYPE_ZIGOU) {// 鑾峰彇鑷喘鐨勮繑鍒╂瘮渚�
 			BigDecimal fanliRate = hongBaoManageService.getFanLiRate(commonOrder.getCreateTime().getTime());
 			// 鏌ヨ鏄惁鏈夊厤鍗曡鍒�
@@ -691,7 +712,8 @@
 				hongBao.setState(HongBaoV2.STATE_BUKELINGQU);
 				hongBao.setMoney(
 						MoneyBigDecimalUtil.mul(commonOrder.getEstimate(), fanliRate.divide(new BigDecimal(100))));
-			} else if (commonOrder.getState() == CommonOrder.STATE_JS) {
+			} else if (commonOrder.getState() == CommonOrder.STATE_JS
+					|| CommonOrder.STATE_WQ == commonOrder.getState()) {
 				hongBao.setState(HongBaoV2.STATE_KELINGQU);
 				hongBao.setMoney(
 						MoneyBigDecimalUtil.mul(commonOrder.geteIncome(), fanliRate.divide(new BigDecimal(100))));
@@ -711,6 +733,8 @@
 				hongBao.setMoney(mianDanMoney);
 
 			UserInfo user = userInfoService.getUserById(commonOrder.getUserInfo().getId());
+			if (user == null)
+				throw new UserAccountException(1001, "鐢ㄦ埛涓嶅瓨鍦�/琚皝绂�");
 			hongBao.setUrank(user.getRank());
 			hongBao.setOrderType(commonOrder.getSourceType());
 			hongBaoV2Mapper.insertSelective(hongBao);
@@ -862,7 +886,7 @@
 				shareRate = hongBaoManageService.getShareRate(commonOrder.getCreateTime().getTime());
 
 			// 鍒ゆ柇璁㈠崟鍒嗕韩娲诲姩鏄惁寮�鍚�
-			if ("1".equalsIgnoreCase(configService.get("share_goods_activity_open"))) {
+			if ("1".equalsIgnoreCase(configService.get(ConfigKeyEnum.shareGoodsActivityOpen.getKey()))) {
 				// 娌℃湁璁㈠崟锛屽苟涓旀槸娓犻亾ID鏉ョ殑锛屽苟涓�
 				UserExtraTaoBaoInfo taoBaoExtraInfo = userExtraTaoBaoInfoService
 						.getByUid(commonOrder.getUserInfo().getId());
@@ -898,7 +922,8 @@
 				hongBao.setState(HongBaoV2.STATE_BUKELINGQU);
 				hongBao.setMoney(
 						MoneyBigDecimalUtil.mul(commonOrder.getEstimate(), shareRate.divide(new BigDecimal(100))));
-			} else if (commonOrder.getState() == CommonOrder.STATE_JS) {
+			} else if (commonOrder.getState() == CommonOrder.STATE_JS
+					|| commonOrder.getState() == CommonOrder.STATE_WQ) {
 				hongBao.setState(HongBaoV2.STATE_KELINGQU);
 				hongBao.setMoney(
 						MoneyBigDecimalUtil.mul(commonOrder.geteIncome(), shareRate.divide(new BigDecimal(100))));
@@ -909,6 +934,8 @@
 						calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-25", "yyyy-M-dd")));
 			}
 			UserInfo user = userInfoService.getUserById(commonOrder.getUserInfo().getId());
+			if (user == null)
+				throw new UserAccountException(1001, "鐢ㄦ埛涓嶅瓨鍦�/琚皝绂�");
 			hongBao.setUrank(user.getRank());
 			hongBao.setUserInfo(user);
 			hongBao.setOrderType(commonOrder.getSourceType());
@@ -950,7 +977,8 @@
 						child.setState(HongBaoV2.STATE_BUKELINGQU);
 						child.setMoney(MoneyBigDecimalUtil.mul(commonOrder.getEstimate(),
 								firstLevelRate.divide(new BigDecimal(100))));
-					} else if (commonOrder.getState() == CommonOrder.STATE_JS) {
+					} else if (commonOrder.getState() == CommonOrder.STATE_JS
+							|| commonOrder.getState() == CommonOrder.STATE_WQ) {
 						child.setState(HongBaoV2.STATE_KELINGQU);
 						child.setMoney(MoneyBigDecimalUtil.mul(commonOrder.geteIncome(),
 								firstLevelRate.divide(new BigDecimal(100))));
@@ -966,7 +994,7 @@
 					child.setVersion(2);
 					child.setCreateTime(new Date());
 					child.setOrderType(commonOrder.getSourceType());
-					if (child.getMoney().compareTo(new BigDecimal(0)) > 0) {
+					if (child.getMoney() != null && child.getMoney().compareTo(new BigDecimal(0)) > 0) {
 						hongBaoV2Mapper.insertSelective(child);
 						// 娣诲姞閫氱煡
 						if (notificationMap.get(HongBaoV2.TYPE_SHARE_YIJI) == null) {
@@ -1011,7 +1039,6 @@
 					e1.printStackTrace();
 				}
 			}
-
 		} else
 			throw new HongBaoException(2, "type閿欒");
 	}
@@ -1150,5 +1177,11 @@
 	public List<HongBaoV2> listByIds(List<Long> idList) {
 		return hongBaoV2Mapper.listByIds(idList);
 	}
+	
+	
+	@Override
+	public List<HongBaoDTO> listByOrderTradeId(String tradeId) {
+		return hongBaoV2Mapper.listByOrderTradeId(tradeId);
+	}
 
 }

--
Gitblit v1.8.0