From e6764831a890de26fcfebb4fb8f3a22e9f8cc816 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 27 八月 2019 16:09:42 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/div' into div

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/tlj/UserTaoLiJinOriginServiceImpl.java |  251 ++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 224 insertions(+), 27 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..89e088c 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
@@ -14,15 +14,18 @@
 import org.yeshi.utils.DateUtil;
 
 import com.yeshi.fanli.dao.mybatis.tlj.UserTaoLiJinOriginMapper;
+import com.yeshi.fanli.dto.msg.MsgOtherGiveContentDTO;
 import com.yeshi.fanli.dto.msg.MsgOtherTaoLiJinContentDTO;
 import com.yeshi.fanli.entity.bus.tlj.DeviceTaoLiJinRecord;
 import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinDetail;
+import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinGiveRecord;
 import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinDetail.TaoLiJinDetailTypeEnum;
 import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinOrigin;
 import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinOrigin.TaoLiJinOriginEnum;
 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 +35,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 +70,9 @@
 	
 	@Resource
 	private UserTaoLiJinRecordService userTaoLiJinRecordService;
+	
+	@Resource
+	private UserTaoLiJinReportService userTaoLiJinReportService;
 	
 	
 	@Override
@@ -143,7 +150,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 +209,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 +248,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 +287,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 +379,7 @@
 		
 		// 绾㈠寘鏄庣粏
 		userTaoLiJinDetailService.createAddDetail(taoLiJinOrigin);
+		
 		// 娑堟伅
 		executor.execute(new Runnable() {
 			@Override
@@ -393,70 +401,259 @@
 		});
 	}
 	
-	
-	
 
 	@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(new Date());
+		userTaoLiJinDetailService.insertSelective(detail);
+	}
+	
+	
+	@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);
+	}
+	
+	
+	@Override
+	@Transactional
+	public void exchangeMoney(Long uid, BigDecimal money) throws UserTaoLiJinOriginException{
+		if (uid == null || money == null) {
+			throw new UserTaoLiJinOriginException(1, "鍙傛暟涓嶈兘涓虹┖");
+		}
+		// 娣诲姞鐢ㄦ埛绾㈠寘
+		userMoneyExtraService.addTaoLiJin(uid, money, false);
+		// 娣诲姞鏂板璁板綍
+		UserTaoLiJinOrigin origin = saveOrigin(uid, 1, money, TaoLiJinOriginEnum.exchange);
+		// 绾㈠寘鏄庣粏
+		userTaoLiJinDetailService.createAddDetail(origin);
+	}
+	
+	
+	@Override
+	@Transactional
+	public UserTaoLiJinOrigin  receiveFriendsGive(Long uid, BigDecimal money) throws UserTaoLiJinOriginException{
+		if (uid == null || money == null) {
+			throw new UserTaoLiJinOriginException(1, "鍙傛暟涓嶈兘涓虹┖");
+		}
 		
+		// 娣诲姞绾㈠寘浣欓
+		userMoneyExtraService.addTaoLiJin(uid, money, false);
+		// 娣诲姞鏂板璁板綍
+		UserTaoLiJinOrigin origin = saveOrigin(uid, 1, money, TaoLiJinOriginEnum.friendsGive);
+		// 绾㈠寘鏄庣粏
+		userTaoLiJinDetailService.createAddDetail(origin);
 		// 娑堟伅
-		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);
+					content.setState("绾㈠寘澧炲姞");
+					content.setSource("濂藉弸璧犻��");
+					content.setMoney(money);
+					userOtherMsgNotificationService.taoLiJinMsg(uid, "", content);
 				} catch (Exception e) {
 					LogHelper.errorDetailInfo(e);
 				}
 			}
 		});
+		return origin;
 	}
-
+	
+	
+	
 	@Override
-	public List<UserTaoLiJinOrigin> getSurplusLiJin(long uid) {
-		return userTaoLiJinOriginMapper.getSurplusLiJin(uid);
+	@Transactional
+	public void  giveSendBack(Long uid, UserTaoLiJinGiveRecord record) throws UserTaoLiJinOriginException{
+		if (uid == null || record == null) {
+			throw new UserTaoLiJinOriginException(1, "鍙傛暟涓嶈兘涓虹┖");
+		}
+		
+		BigDecimal money = record.getAmount();
+		
+		// 娣诲姞绾㈠寘浣欓
+		userMoneyExtraService.addTaoLiJin(uid, money, false);
+		// 娣诲姞鏂板璁板綍
+		UserTaoLiJinOrigin origin = saveOrigin(uid, 1, money, TaoLiJinOriginEnum.giveSendBack);
+		// 绾㈠寘鏄庣粏
+		userTaoLiJinDetailService.createAddDetail(origin);
+		UserTaoLiJinDetail detail = new UserTaoLiJinDetail();
+		detail.setUid(uid);
+		detail.setMoney(money);
+		detail.setType(TaoLiJinDetailTypeEnum.giveBack);
+		detail.setTitle(TaoLiJinDetailTypeEnum.giveBack.getDesc());
+		detail.setCreateTime(new Date());
+		userTaoLiJinDetailService.insertSelective(detail);
+		
+		
+		executor.execute(new Runnable() {
+			@Override
+			public void run() {
+				// 閫�鍥炴秷鎭�
+				String beiZhu = "璇峰埌鎴戠殑-鎺ㄥ箍绾㈠寘鏌ョ湅";
+				SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd HH:mm");
+				MsgOtherGiveContentDTO msgOther = new MsgOtherGiveContentDTO();
+				msgOther.setType(MsgOtherGiveContentDTO.TYEP_TLJ);
+				msgOther.setTitle("璧犻�佹帹骞跨孩鍖呴��鍥�");
+				msgOther.setGiveType("浣犺禒閫佺殑"+ money + "鎺ㄥ箍绾㈠寘鏈鎴愬姛棰嗗彇");
+				msgOther.setGiveTime(sd.format(record.getGiveTime()));
+				msgOther.setReturnTime(sd.format(new Date()));
+				userOtherMsgNotificationService.tokenGiveMsg(record.getGiveUid(), beiZhu, msgOther);
+			}
+		});
+		
 	}
 	
 }

--
Gitblit v1.8.0