From d28bed1a1275131a5ca37f7da37961e2b518ac07 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期一, 26 八月 2019 13:44:00 +0800
Subject: [PATCH] 淘礼金创建异常处理

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/tlj/UserTaoLiJinOriginServiceImpl.java |  178 +++++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 142 insertions(+), 36 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/tlj/UserTaoLiJinOriginServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/tlj/UserTaoLiJinOriginServiceImpl.java
index 82ab9fa..55b62f9 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/tlj/UserTaoLiJinOriginServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/tlj/UserTaoLiJinOriginServiceImpl.java
@@ -23,6 +23,7 @@
 import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinRecord;
 import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinReport;
 import com.yeshi.fanli.entity.bus.user.UserInfoExtra;
+import com.yeshi.fanli.entity.bus.user.UserMoneyExtra;
 import com.yeshi.fanli.entity.bus.user.UserRank;
 import com.yeshi.fanli.exception.tlj.UserTaoLiJinOriginException;
 import com.yeshi.fanli.log.LogHelper;
@@ -32,6 +33,7 @@
 import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinDetailService;
 import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinOriginService;
 import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinRecordService;
+import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinReportService;
 import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
 import com.yeshi.fanli.service.inter.user.UserMoneyExtraService;
 import com.yeshi.fanli.util.MoneyBigDecimalUtil;
@@ -66,6 +68,9 @@
 	
 	@Resource
 	private UserTaoLiJinRecordService userTaoLiJinRecordService;
+	
+	@Resource
+	private UserTaoLiJinReportService userTaoLiJinReportService;
 	
 	
 	@Override
@@ -143,7 +148,7 @@
 		if (uid == null) {
 			throw new UserTaoLiJinOriginException(1, "鍙傛暟涓嶈兘涓虹┖");
 		}
-		String value = configTaoLiJinService.getValueByKey("hongbao_newbies");
+		String value = configTaoLiJinService.getValueByKey("hongbao_newbies",null);
 		if (StringUtil.isNullOrEmpty(value)) {
 			throw new UserTaoLiJinOriginException(1, "绯荤粺绾㈠寘涓嶅瓨鍦�");
 		}
@@ -202,7 +207,7 @@
 			throw new UserTaoLiJinOriginException(2, "鐢ㄦ埛绛夌骇涓嶈冻");
 		}
 		
-		String value = configTaoLiJinService.getValueByKey(key);
+		String value = configTaoLiJinService.getValueByKey(key,null);
 		if (StringUtil.isNullOrEmpty(value)) {
 			throw new UserTaoLiJinOriginException(1, "绯荤粺绾㈠寘涓嶅瓨鍦�");
 		}
@@ -241,7 +246,7 @@
 			throw new UserTaoLiJinOriginException(1, "鍙傛暟涓嶈兘涓虹┖");
 		}
 		
-		String value = configTaoLiJinService.getValueByKey("hongbao_invite");
+		String value = configTaoLiJinService.getValueByKey("hongbao_invite",null);
 		if (StringUtil.isNullOrEmpty(value)) {
 			throw new UserTaoLiJinOriginException(1, "绯荤粺绾㈠寘涓嶅瓨鍦�");
 		}
@@ -280,7 +285,7 @@
 			throw new UserTaoLiJinOriginException(1, "鐢ㄦ埛鏈櫥褰�");
 		}
 		
-		String value = configTaoLiJinService.getValueByKey("hongbao_share");
+		String value = configTaoLiJinService.getValueByKey("hongbao_share",null);
 		if (StringUtil.isNullOrEmpty(value)) {
 			throw new UserTaoLiJinOriginException(1, "绯荤粺绾㈠寘涓嶅瓨鍦�");
 		}
@@ -372,6 +377,7 @@
 		
 		// 绾㈠寘鏄庣粏
 		userTaoLiJinDetailService.createAddDetail(taoLiJinOrigin);
+		
 		// 娑堟伅
 		executor.execute(new Runnable() {
 			@Override
@@ -398,65 +404,165 @@
 
 	@Override
 	public void overdueHongBao(Long uid) {
-		// 15澶╁墠杩囨湡
-		Date date = null;
+		if (uid == null) {
+			return;
+		}
+		
+		// 15澶╁墠杩囨湡- 闈炵瓑绾х孩鍖�
 		try {
-			date = DateUtil.reduceDay(15, new Date());
+			Date date = DateUtil.reduceDay(14, new Date());
+			List<UserTaoLiJinOrigin> list = userTaoLiJinOriginMapper.getOverdueTaoLiJin(uid, date);
+			executeOverdueHongBao(uid, date, list);
 		} catch (ParseException e) {
 			e.printStackTrace();
 		}
 		
-		if (date == null) {
-			return;
+		// 30澶╁墠杩囨湡 - 绛夌骇绾㈠寘
+		try {
+			Date date = DateUtil.reduceDay(29, new Date());
+			List<UserTaoLiJinOrigin> list = userTaoLiJinOriginMapper.getOverdueTaoLiJinByRank(uid, date);
+			executeOverdueHongBao(uid, date, list);
+		} catch (ParseException e) {
+			e.printStackTrace();
 		}
-		
-		List<UserTaoLiJinOrigin> list = userTaoLiJinOriginMapper.getOverdueTaoLiJin(uid, date);
+	}
+
+	
+	public void executeOverdueHongBao(Long uid, Date date, List<UserTaoLiJinOrigin> list) {
 		if (list == null || list.size() == 0) {
 			return;
 		}
-		
+
 		BigDecimal total = new BigDecimal(0);
-		for (UserTaoLiJinOrigin userTaoLiJinOrigin: list) {
-			
+		for (UserTaoLiJinOrigin userTaoLiJinOrigin : list) {
+			SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd HH.mm");
+			String time = sd.format(userTaoLiJinOrigin.getCreateTime());
+
+			BigDecimal moneySurplus = userTaoLiJinOrigin.getMoneySurplus();
+			total = MoneyBigDecimalUtil.add(total, moneySurplus);
+
+			String rightsId = null;
+			boolean refund = false;
+			TaoLiJinOriginEnum originEnum = userTaoLiJinOrigin.getOrigin();
+			if (TaoLiJinOriginEnum.refund.equals(originEnum)) {
+				refund = true;
+				rightsId = userTaoLiJinOrigin.getRightsId();
+			}
+
 			UserTaoLiJinOrigin origin = new UserTaoLiJinOrigin();
 			origin.setId(userTaoLiJinOrigin.getId());
 			origin.setMoneySurplus(new BigDecimal(0));
 			origin.setUpdateTime(new Date());
 			userTaoLiJinOriginMapper.updateByPrimaryKeySelective(origin);
-			
-			total = MoneyBigDecimalUtil.add(total, userTaoLiJinOrigin.getMoneySurplus());
+
+			if (refund) {
+				UserTaoLiJinReport report = userTaoLiJinReportService.selectByPrimaryKey(rightsId);
+				Date shareTime = null;
+				if (report == null) {
+					shareTime = date;
+				} else {
+					shareTime = report.getCreateTime();
+				}
+
+				// 娑堟伅
+				MsgOtherTaoLiJinContentDTO content = new MsgOtherTaoLiJinContentDTO();
+				content.setState("绾㈠寘鏀跺洖");
+				content.setSource("浜嶽" + sd.format(shareTime) + "]鍒涘缓鐨勫垎浜湭琚鍙栭儴鍒�");
+				content.setTimeDesc("閫�鍥炰簬" + time);
+				content.setMoney(moneySurplus);
+				content.setReason("鏈瑪閫�鍥炴帹骞跨孩鍖呬粠閫�鍥炴棩璧疯嚦浠婂苟鏈骇鐢熷垎浜褰�");
+				content.setResult("闀挎湡鏈娇鐢ㄦ敹鍥�");
+				userOtherMsgNotificationService.taoLiJinMsg(uid, "濡傛湁鐤戦棶璇疯仈绯讳汉宸ュ鏈�", content);
+
+			} else {
+				// 娑堟伅
+				MsgOtherTaoLiJinContentDTO content = new MsgOtherTaoLiJinContentDTO();
+				content.setState("绾㈠寘鏀跺洖");
+				content.setSource(originEnum.getDesc());
+				content.setTimeDesc("鑾峰緱浜�" + time);
+				content.setMoney(moneySurplus);
+				content.setReason("鏈瑪鎺ㄥ箍绾㈠寘浠庤幏寰楁棩璧疯嚦浠婂苟鏈骇鐢熷垎浜褰�");
+				content.setResult("闀挎湡鏈娇鐢ㄦ敹鍥�");
+				userOtherMsgNotificationService.taoLiJinMsg(uid, "濡傛湁鐤戦棶璇疯仈绯讳汉宸ュ鏈�", content);
+			}
 		}
-		
+
+		// 鐢ㄦ埛鍓╀綑娣樼ぜ閲�
+		UserMoneyExtra userMoneyExtra = userMoneyExtraService.selectByPrimaryKey(uid);
+		if (userMoneyExtra == null || userMoneyExtra.getTlj() == null) {
+			return;
+		}
+
+		UserMoneyExtra updateExtra = new UserMoneyExtra();
+		updateExtra.setUid(uid);
+
+		BigDecimal tljSelf = userMoneyExtra.getTljSelf();
+		if (tljSelf != null && tljSelf.compareTo(new BigDecimal(0)) > 0) { // 鍓╀綑娣樼ぜ閲�-- 鑷喘
+			BigDecimal sub = MoneyBigDecimalUtil.sub(tljSelf, total);
+			if (sub.compareTo(new BigDecimal(0)) > 0) {
+				updateExtra.setTljSelf(sub);
+			} else {
+				updateExtra.setTljSelf(new BigDecimal(0));
+			}
+		}
+		updateExtra.setTlj(MoneyBigDecimalUtil.sub(userMoneyExtra.getTlj(), total));
+		updateExtra.setUpdateTime(new Date());
+		userMoneyExtraService.updateByPrimaryKeySelective(updateExtra);
+
 		// 鎻掑叆鏄庣粏
 		UserTaoLiJinDetail detail = new UserTaoLiJinDetail();
 		detail.setUid(uid);
 		detail.setMoney(new BigDecimal("-" + total.toString()));
 		detail.setTitle(TaoLiJinDetailTypeEnum.sendBack.getDesc());
 		detail.setType(TaoLiJinDetailTypeEnum.sendBack);
-		detail.setCreateTime(date);
+		detail.setCreateTime(new Date());
 		userTaoLiJinDetailService.insertSelective(detail);
-		
-		// 娑堟伅
-		final BigDecimal totalMoney = total;
-		executor.execute(new Runnable() {
-			@Override
-			public void run() {
-				try {
-					MsgOtherTaoLiJinContentDTO content = new MsgOtherTaoLiJinContentDTO();
-					content.setState("绾㈠寘鎵i櫎");
-					content.setSource("15澶╁唴鏈骇鐢熻繃鎺ㄥ箍绾㈠寘鍒嗕韩璁板綍");
-					content.setMoney(totalMoney);
-					userOtherMsgNotificationService.taoLiJinMsg(uid, "娓呴櫎鍚庢棤娉曟仮澶�", content);
-				} catch (Exception e) {
-					LogHelper.errorDetailInfo(e);
-				}
-			}
-		});
 	}
-
+	
+	
 	@Override
 	public List<UserTaoLiJinOrigin> getSurplusLiJin(long uid) {
 		return userTaoLiJinOriginMapper.getSurplusLiJin(uid);
 	}
 	
+	
+	@Override
+	@Transactional
+	public void addInviteWinMoneyByHand(Long uid, String inviteName, Date date) throws UserTaoLiJinOriginException {
+		if (uid == null || StringUtil.isNullOrEmpty(inviteName)) {
+			throw new UserTaoLiJinOriginException(1, "鍙傛暟涓嶈兘涓虹┖");
+		}
+		
+		String value = configTaoLiJinService.getValueByKey("hongbao_invite",null);
+		if (StringUtil.isNullOrEmpty(value)) {
+			throw new UserTaoLiJinOriginException(1, "绯荤粺绾㈠寘涓嶅瓨鍦�");
+		}
+		BigDecimal money = new BigDecimal(value);
+		
+		// 娣诲姞鐢ㄦ埛绾㈠寘
+		userMoneyExtraService.addTaoLiJin(uid, money, false);
+
+		// 娣诲姞鏂板璁板綍
+		UserTaoLiJinOrigin taoLiJinOrigin = new UserTaoLiJinOrigin();
+		taoLiJinOrigin.setUid(uid);
+		taoLiJinOrigin.setType(1);
+		taoLiJinOrigin.setOrigin(TaoLiJinOriginEnum.inviteWin);
+		taoLiJinOrigin.setMoney(money);
+		taoLiJinOrigin.setMoneySurplus(money);
+		taoLiJinOrigin.setCreateTime(date);
+		taoLiJinOrigin.setUpdateTime(date);
+		taoLiJinOrigin.setRemark(TaoLiJinOriginEnum.inviteWin.getDesc());
+		userTaoLiJinOriginMapper.insertSelective(taoLiJinOrigin);
+		
+		// 鏄庣粏
+		UserTaoLiJinDetail detail = new UserTaoLiJinDetail();
+		detail.setUid(uid);
+		detail.setMoney(money);
+		detail.setType(TaoLiJinDetailTypeEnum.add);
+		detail.setTitle(TaoLiJinDetailTypeEnum.add.getDesc());
+		detail.setDescInfo("鏉ユ簮锛�" + TaoLiJinOriginEnum.inviteWin.getDesc());
+		detail.setCreateTime(date);
+		userTaoLiJinDetailService.insertSelective(detail);
+	}
+	
 }

--
Gitblit v1.8.0