From 8b2191df2f7d94aa299bd43dcbe97c94e5a61bbd Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期三, 20 十一月 2019 14:53:34 +0800
Subject: [PATCH] RocketMQ的消息整改

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/user/TokenRecordServiceImpl.java |  210 +++++++++++++++++++++++++++++-----------------------
 1 files changed, 118 insertions(+), 92 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/TokenRecordServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/TokenRecordServiceImpl.java
index 15c6e2c..dd59cea 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/TokenRecordServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/TokenRecordServiceImpl.java
@@ -1,6 +1,5 @@
 package com.yeshi.fanli.service.impl.user;
 
-import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
@@ -12,9 +11,13 @@
 import org.springframework.core.task.TaskExecutor;
 import org.springframework.stereotype.Service;
 
+import com.google.gson.Gson;
 import com.yeshi.fanli.dao.mybatis.user.TokenRecordMapper;
 import com.yeshi.fanli.dto.msg.MsgInviteContentDTO;
 import com.yeshi.fanli.dto.msg.MsgOtherGiveContentDTO;
+import com.yeshi.fanli.dto.msg.MsgRedPackGiveContentDTO;
+import com.yeshi.fanli.entity.accept.AcceptData;
+import com.yeshi.fanli.entity.bus.msg.MsgMoneyDetail.MsgTypeMoneyTypeEnum;
 import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinGiveRecord;
 import com.yeshi.fanli.entity.bus.user.TokenRecord;
 import com.yeshi.fanli.entity.bus.user.TokenRecord.TokenTypeEnum;
@@ -23,28 +26,30 @@
 import com.yeshi.fanli.entity.bus.user.UserSystemCoupon;
 import com.yeshi.fanli.entity.bus.user.UserSystemCouponGiveRecord;
 import com.yeshi.fanli.entity.bus.user.UserSystemCouponRecord;
+import com.yeshi.fanli.entity.redpack.RedPackGiveRecord;
 import com.yeshi.fanli.entity.system.SystemCoupon;
 import com.yeshi.fanli.entity.system.SystemCoupon.CouponTypeEnum;
-import com.yeshi.fanli.exception.tlj.UserTaoLiJinOriginException;
+import com.yeshi.fanli.exception.redpack.RedPackGiveRecordException;
 import com.yeshi.fanli.exception.user.TokenRecordException;
 import com.yeshi.fanli.exception.user.UserInfoExtraException;
 import com.yeshi.fanli.log.LogHelper;
 import com.yeshi.fanli.service.inter.config.SystemCouponService;
-import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce;
-import com.yeshi.fanli.service.inter.integral.IntegralGetService;
-import com.yeshi.fanli.service.inter.msg.UserInviteMsgNotificationService;
+import com.yeshi.fanli.service.inter.money.msg.UserMoneyMsgNotificationService;
 import com.yeshi.fanli.service.inter.msg.UserOtherMsgNotificationService;
-import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinGiveRecordService;
-import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinOriginService;
+import com.yeshi.fanli.service.inter.redpack.RedPackGiveRecordService;
 import com.yeshi.fanli.service.inter.user.TokenRecordService;
 import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
 import com.yeshi.fanli.service.inter.user.UserInfoService;
 import com.yeshi.fanli.service.inter.user.UserSystemCouponGiveRecordService;
 import com.yeshi.fanli.service.inter.user.UserSystemCouponRecordService;
 import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
+import com.yeshi.fanli.service.inter.user.integral.IntegralGetService;
+import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
+import com.yeshi.fanli.service.inter.user.invite.UserInviteMsgNotificationService;
 import com.yeshi.fanli.util.Constant;
 import com.yeshi.fanli.util.StringUtil;
 import com.yeshi.fanli.util.TokenUtil;
+import com.yeshi.fanli.util.VersionUtil;
 import com.yeshi.fanli.vo.msg.TokenVO;
 
 @Service
@@ -67,9 +72,6 @@
 	private ThreeSaleSerivce threeSaleSerivce;
 
 	@Resource
-	private UserTaoLiJinGiveRecordService userTaoLiJinGiveRecordService;
-
-	@Resource
 	private UserInfoExtraService userInfoExtraService;
 
 	@Resource
@@ -77,9 +79,6 @@
 
 	@Resource
 	private UserSystemCouponGiveRecordService userSystemCouponGiveRecordService;
-
-	@Resource
-	private UserTaoLiJinOriginService userTaoLiJinOriginService;
 
 	@Resource
 	private UserOtherMsgNotificationService userOtherMsgNotificationService;
@@ -93,6 +92,12 @@
 	
 	@Resource
 	private UserInviteMsgNotificationService userInviteMsgNotificationService;
+	
+	@Resource
+	private RedPackGiveRecordService redPackGiveRecordService;
+	
+	@Resource
+	private UserMoneyMsgNotificationService userMoneyMsgNotificationService;
 	
 
 	@Override
@@ -114,7 +119,7 @@
 	}
 
 	@Override
-	public TokenVO discernToken(String token, Long uid) throws TokenRecordException {
+	public TokenVO discernToken(String token, Long uid, AcceptData acceptData) throws TokenRecordException {
 		// 瑙f瀽鍙d护
 		String parseToken = TokenUtil.parseToken(token);
 		if (StringUtil.isNullOrEmpty(parseToken)) 
@@ -136,8 +141,9 @@
 			throw new TokenRecordException(1, "鍙d护宸插け鏁�");
 
 		
-		Integer num = 1;
+		Integer num = 0;
 		Integer type = 0;
+		String money = null;
 		boolean state = false;
 		List<String> tips = new ArrayList<String>();
 		String identify = rokenRecord.getIdentify();
@@ -151,15 +157,12 @@
 				throw new TokenRecordException(1, "璧犻�佽褰曚笉瀛樺湪");
 			
 			Date endTime = giveRecord.getEndTime();
-			if (endTime != null && endTime.getTime() < now.getTime())
-				throw new TokenRecordException(1, "璧犻�佽褰曞凡杩囨湡");
-
 			// 鐢ㄦ埛鍒镐俊鎭�
 			UserSystemCoupon userCoupon = userSystemCouponService.selectByPrimaryKey(giveRecord.getCouponId());
 			if (userCoupon == null || userCoupon.getGive() == null || !userCoupon.getGive())
 				throw new TokenRecordException(1, "鍒镐笉瀛樺湪鎴栭潪璧犻�佺姸鎬�");
 			
-			if (userCoupon.getState() == UserSystemCoupon.STATE_OVERDUE) {
+			if (userCoupon.getState() == UserSystemCoupon.STATE_OVERDUE || (endTime != null && endTime.getTime() < now.getTime())) {
 				tips.add("鍝庡憖锛岃繖寮犲厤鍗曞埜宸插け鏁堜簡锛�");
 			} else if (userCoupon.getState() == UserSystemCoupon.STATE_END_USE) {
 				tips.add("鍝庡憖锛岃繖寮犲厤鍗曞埜宸茶棰嗗彇浜嗭紒");
@@ -170,7 +173,7 @@
 				state = true;
 				UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
 				if (userInfoExtra == null || StringUtil.isNullOrEmpty(userInfoExtra.getInviteCode())) {
-					tips.add("纭棰嗗彇鍚庯紝浣犲皢鎴愪负璧犻�佽�呯殑涓�绾ч槦鍛橈紱");
+					tips.add("纭棰嗗彇鍚庯紝浣犲皢鎴愪负璧犻�佷汉鐨勪竴绾ч槦鍛橈紱");
 					tips.add("鑾疯禒鐨勫厤鍗曞埜锛岄渶瑕佹縺娲诲悗鎵嶈兘浣跨敤锛岃鎯呭弬瑙佸厤鍗曞埜婵�娲昏鍒欙紱");
 					tips.add("鎴愬姛棰嗗彇鍚庯紝璇峰埌鈥滄垜鐨�-绂忓埄涓績鈥濇煡鐪嬨��");
 				} else {
@@ -190,15 +193,12 @@
 				throw new TokenRecordException(1, "璧犻�佽褰曚笉瀛樺湪");
 			
 			Date endTime = giveRecord.getEndTime();
-			if (endTime != null && endTime.getTime() < now.getTime())
-				throw new TokenRecordException(1, "璧犻�佽褰曞凡杩囨湡");
-
 			UserSystemCoupon userCoupon = userSystemCouponService.selectByPrimaryKey(giveRecord.getCouponId());
 			if (userCoupon == null || userCoupon.getGive() == null || !userCoupon.getGive())
 				throw new TokenRecordException(1, "鍒镐笉瀛樺湪鎴栭潪璧犻�佺姸鎬�");
 			
 			
-			if (userCoupon.getState() == UserSystemCoupon.STATE_OVERDUE) {
+			if (userCoupon.getState() == UserSystemCoupon.STATE_OVERDUE|| (endTime != null && endTime.getTime() < now.getTime())) {
 				tips.add("鍝庡憖锛岃繖寮犺繑鍒╁鍔卞埜宸插け鏁堜簡锛�");
 			} else if (userCoupon.getState() == UserSystemCoupon.STATE_END_USE) {
 				tips.add("鍝庡憖锛岃繖寮犺繑鍒╁鍔卞埜宸茶棰嗗彇浜嗭紒");
@@ -209,46 +209,51 @@
 				state = true;
 				UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
 				if (userInfoExtra == null || StringUtil.isNullOrEmpty(userInfoExtra.getInviteCode())) {
-					tips.add("纭棰嗗彇鍚庯紝浣犲皢鎴愪负璧犻�佽�呯殑涓�绾ч槦鍛橈紱");
-					tips.add("杩斿埄鍒稿鍔卞埜锛屽彲鐢ㄤ簬鈥滃凡鍒拌处鈥濈殑杩斿埄璁㈠崟锛屽湪杩斿埄鐨勫熀纭�涓婂啀鑾峰緱涓�瀹氭瘮渚嬬殑杩斿埄锛�");
+					tips.add("纭棰嗗彇鍚庯紝浣犲皢鎴愪负璧犻�佷汉鐨勪竴绾ч槦鍛橈紱");
+					tips.add("鏉挎牀蹇渷濂栧姳鍒革紝鍙敤浜庘�滃凡鍒拌处鈥濈殑杩斿埄璁㈠崟锛屽湪杩斿埄鐨勫熀纭�涓婂啀鑾峰緱涓�瀹氭瘮渚嬬殑杩斿埄锛�");
 					tips.add("鎴愬姛棰嗗彇鍚庯紝璇峰埌鈥滄垜鐨�-绂忓埄涓績鈥濅腑鏌ョ湅銆�");
 				} else {
-					tips.add("杩斿埄鍒稿鍔卞埜锛屽彲鐢ㄤ簬鈥滃凡鍒拌处鈥濈殑杩斿埄璁㈠崟锛屽湪杩斿埄鐨勫熀纭�涓婂啀鑾峰緱涓�瀹氭瘮渚嬬殑杩斿埄锛�");
+					tips.add("鏉挎牀蹇渷濂栧姳鍒革紝鍙敤浜庘�滃凡鍒拌处鈥濈殑杩斿埄璁㈠崟锛屽湪杩斿埄鐨勫熀纭�涓婂啀鑾峰緱涓�瀹氭瘮渚嬬殑杩斿埄锛�");
 					tips.add("鎴愬姛棰嗗彇鍚庯紝璇峰埌鈥滄垜鐨�-绂忓埄涓績鈥濅腑鏌ョ湅銆�");
 				}
 			} else {
 				throw new TokenRecordException(1, "鍙d护宸插け鏁�");
 			}
-		} else if (tokenType == TokenTypeEnum.taoLiJin) {
-			type = 12;
+		} else if (tokenType == TokenTypeEnum.redPack) {
+			if(!VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion()))
+				throw new TokenRecordException(1, "璇峰崌绾у埌鏈�鏂扮増");
 			
-			UserTaoLiJinGiveRecord giveRecord = userTaoLiJinGiveRecordService.selectByPrimaryKey(Long.parseLong(identify));
+			
+			type = 13;
+			RedPackGiveRecord giveRecord = redPackGiveRecordService.selectByPrimaryKey(Long.parseLong(identify));
 			if (giveRecord == null)
 				throw new TokenRecordException(1, "鍙d护宸插け鏁�");
 			
-			BigDecimal amount = giveRecord.getAmount();
-			num = Integer.parseInt(amount.setScale(0).toString());
-			
-			if(giveRecord.getState() == UserTaoLiJinGiveRecord.STATE_OVERDUE) {
-				tips.add("鍝庡憖锛屾帹骞跨孩鍖呭凡澶辨晥浜嗭紒");
+			Date endTime = giveRecord.getEndTime();
+			// 璧犻�侀潰棰�
+			money = giveRecord.getAmount().setScale(2).toString();
+
+			if(giveRecord.getState() == UserTaoLiJinGiveRecord.STATE_OVERDUE 
+					|| (endTime != null && endTime.getTime() < now.getTime())) {
+				tips.add("鍝庡憖锛岃繖涓孩鍖呭凡澶辨晥浜嗭紒");
 			} else if (giveRecord.getState() == UserTaoLiJinGiveRecord.STATE_RECEIVE) {
-				tips.add("鍝庡憖锛屾帹骞跨孩鍖呭凡琚鍙栦簡锛�");
+				tips.add("鍝庡憖锛岃繖涓孩鍖呭凡琚鍙栦簡锛�");
 			} else if (giveRecord.getState() == UserTaoLiJinGiveRecord.STATE_INIT) {
 				if (uid == null || uid <= 0)
-					throw new TokenRecordException(1001, "娓╅Θ鎻愮ず锛孾鎺ㄥ箍绾㈠寘]闇�瑕佺櫥褰曞悗棰嗗彇");
+					throw new TokenRecordException(1001, "娓╅Θ鎻愮ず锛孾绾㈠寘]闇�瑕佺櫥褰曞悗棰嗗彇");
 				state = true;
 				UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
 				if (userInfoExtra == null || StringUtil.isNullOrEmpty(userInfoExtra.getInviteCode())) {
-					tips.add("纭棰嗗彇鍚庯紝浣犲皢鎴愪负璧犻�佽�呯殑涓�绾ч槦鍛橈紱");
-					tips.add("鎺ㄥ箍绾㈠寘锛屽彲鍒嗕韩鐖嗘鍟嗗搧锛岃鍒嗕韩璁㈠崟鎴愬崟鐜囨洿楂橈紱");
-					tips.add("鎴愬姛棰嗗彇鍚庯紝璇峰埌鈥滄垜鐨�-鎺ㄥ箍绾㈠寘鈥濅腑鏌ョ湅銆�");
+					tips.add("纭棰嗗彇鍚庯紝浣犲皢鎴愪负璧犻�佷汉鐨勪竴绾ч槦鍛橈紱");
+					tips.add("绾㈠寘鍙彁鐜帮紝鍙喘涔版姌鎵e晢鍝侊紱");
+					tips.add("鎴愬姛棰嗗彇鍚庯紝璇峰埌鈥滄垜鐨�-绾㈠寘鈥濅腑鏌ョ湅銆�");
 				} else {
-					tips.add("鎺ㄥ箍绾㈠寘锛屽彲鍒嗕韩鐖嗘鍟嗗搧锛岃鍒嗕韩璁㈠崟鎴愬崟鐜囨洿楂橈紱");
-					tips.add("鎴愬姛棰嗗彇鍚庯紝璇峰埌鈥滄垜鐨�-鎺ㄥ箍绾㈠寘鈥濅腑鏌ョ湅銆�");
+					tips.add("绾㈠寘鍙彁鐜帮紝鍙喘涔版姌鎵e晢鍝侊紱");
+					tips.add("鎴愬姛棰嗗彇鍚庯紝璇峰埌鈥滄垜鐨�-绾㈠寘鈥濅腑鏌ョ湅銆�");
 				}
-			} else {
-				throw new TokenRecordException(1, "鍙d护澶辨晥");
 			}
+		} else if (tokenType == TokenTypeEnum.taoLiJin) {
+			throw new TokenRecordException(1, "鎺ㄥ箍绾㈠寘鐩稿叧鍔熻兘宸蹭笅绾匡紒");
 		} else {
 			throw new TokenRecordException(1, "鏃犲搴旂被鍨�");
 		}
@@ -276,6 +281,7 @@
 		
 		TokenVO tokenVO = new TokenVO();
 		tokenVO.setAmount(num);
+		tokenVO.setMoney(money);
 		tokenVO.setToken(parseToken);
 		tokenVO.setNickName(nickName + "璧犻��");
 		tokenVO.setPortrait(portrait);
@@ -288,7 +294,7 @@
 	
 
 	@Override
-	public String receiveToken(String token, Long uid) throws TokenRecordException {
+	public String receiveToken(String token, Long uid, AcceptData acceptData) throws TokenRecordException {
 		if (uid == null || uid <= 0)
 			throw new TokenRecordException(1, "鐢ㄦ埛鏈櫥褰�");
 
@@ -324,7 +330,6 @@
 		String msg = "棰嗗彇鎴愬姛";
 		TokenTypeEnum tokenType = rokenRecord.getType();
 		if (tokenType == TokenTypeEnum.freeCoupon) {
-
 			// 璧犻�佽褰�
 			UserSystemCouponGiveRecord giveRecord = userSystemCouponGiveRecordService
 					.selectByPrimaryKey(Long.parseLong(identify));
@@ -343,7 +348,7 @@
 			UserSystemCoupon userSystemCoupon= null;
 			try {
 				userSystemCoupon = userSystemCouponService.insertUserCoupon(uid, CouponTypeEnum.freeCoupon.name(),
-						UserSystemCoupon.SOURCE_GIVE, null);
+						UserSystemCoupon.SOURCE_GIVE, null,true);
 			} catch (Exception e) {
 				LogHelper.errorDetailInfo(e);
 				throw new TokenRecordException(1, "棰嗗彇澶辫触");
@@ -437,7 +442,7 @@
 			UserSystemCoupon userSystemCoupon= null;
 			try {
 				userSystemCoupon = userSystemCouponService.insertUserCoupon(uid, CouponTypeEnum.rebatePercentCoupon.name(),
-						UserSystemCoupon.SOURCE_GIVE, systemCoupon.getPercent());
+						UserSystemCoupon.SOURCE_GIVE, systemCoupon.getPercent(),true);
 			} catch (Exception e) {
 				LogHelper.errorDetailInfo(e);
 				throw new TokenRecordException(1, "棰嗗彇澶辫触");
@@ -504,65 +509,60 @@
 					    addInviteMsg(uid, giveUid, "杩斿埄濂栧姳鍒�");
 				}
 			});
-		} else if (tokenType == TokenTypeEnum.taoLiJin) {
-			UserTaoLiJinGiveRecord giveRecord = userTaoLiJinGiveRecordService
-					.selectByPrimaryKey(Long.parseLong(identify));
-			if (giveRecord == null || giveRecord.getState() != UserTaoLiJinGiveRecord.STATE_INIT)
-				throw new TokenRecordException(1, "璧犻�佽褰曞け鏁堟垨宸茶棰嗗彇");
-
-			Date endTime = giveRecord.getEndTime();
-			if (endTime != null && endTime.getTime() < now.getTime())
-				throw new TokenRecordException(1, "鎺ㄥ箍绾㈠寘宸插け鏁堜簡");
-
-			BigDecimal amount = giveRecord.getAmount();
+		} else if (tokenType == TokenTypeEnum.redPack) {
+			if(!VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion()))
+				throw new TokenRecordException(1, "璇峰崌绾у埌鏈�鏂扮増");
+			
 			try {
-				// 棰嗗彇
-				userTaoLiJinOriginService.receiveFriendsGive(uid, amount);
-
-				// 鏇存柊璁板綍
-				UserTaoLiJinGiveRecord updateRecord = new UserTaoLiJinGiveRecord();
-				updateRecord.setId(Long.parseLong(identify));
-				updateRecord.setReceiveTime(new Date());
-				updateRecord.setReceiveUid(uid);
-				updateRecord.setState(UserTaoLiJinGiveRecord.STATE_RECEIVE);
-				userTaoLiJinGiveRecordService.updateByPrimaryKeySelective(updateRecord);
-
-				integralGetService.addGiveTaoLiJin(giveUid);
-				
-				msg = "棰嗗彇鎴愬姛[鎺ㄥ箍绾㈠寘]鎴愬姛锛岃鍒癧鎴戠殑-鎺ㄥ箍绾㈠寘]涓煡鐪�";
-
+				msg = "棰嗗彇绾㈠寘鎴愬姛锛岃鍒癧鎴戠殑-绾㈠寘]涓煡鐪�";
+				// 棰嗗彇绾㈠寘銆佹洿鏂拌褰�
+				RedPackGiveRecord giveRecord = redPackGiveRecordService.receiveFriendsGive(uid, Long.parseLong(identify));
 				// 娑堟伅 + 闃熷憳
 				executor.execute(new Runnable() {
 					@Override
 					public void run() {
 						SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd HH:mm");
 						boolean addTeam = addInviteTeam(uid, giveUid, userInfoExtra);
+						
 						String beiZhu = "鏃�";
-						if (addTeam)
-							beiZhu = "棰嗗彇浜哄凡缁忔垚涓轰綘鐨勪竴绾ч槦鍛�";
-
+						String giveBeiZhu = "鏃�";
+						if (addTeam) {
+							beiZhu = "浣犲凡鎴愪负璧犻�佷汉鐨勪竴绾ч槦鍛�";
+							giveBeiZhu = "棰嗗彇浜哄凡鎴愪负浣犵殑涓�绾ч槦鍛�";
+							// 婵�娲婚個璇蜂俊鎭�
+							addInviteMsg(uid, giveUid, giveRecord.getAmount().setScale(2) + "鍏冪孩鍖�");
+						}
+						
+						// 棰嗗彇浜烘秷鎭�
+						String giveUserName = "鏃�";
+						UserInfo giveuser = userInfoService.selectByPKey(giveUid);
+						if (giveuser != null && !StringUtil.isNullOrEmpty(giveuser.getNickName()))
+							giveUserName = giveuser.getNickName();
+						MsgRedPackGiveContentDTO dto = new MsgRedPackGiveContentDTO();
+						dto.setTitle("绾㈠寘棰嗗彇");
+						dto.setUserInfo("鏄电О锛�" + giveUserName + " ID锛�" + giveUid);
+						dto.setTime(sd.format(giveRecord.getGiveTime()));
+						dto.setMoney("楼" + giveRecord.getAmount().setScale(2));
+						userMoneyMsgNotificationService.redPackMsg(uid, MsgTypeMoneyTypeEnum.redPackReceiveOff, new Gson().toJson(dto), beiZhu);
+						
+						// 璧犻�佷汉娑堟伅
 						String userName = "鏃�";
 						UserInfo user = userInfoService.selectByPKey(uid);
 						if (user != null && !StringUtil.isNullOrEmpty(user.getNickName()))
 							userName = user.getNickName();
-
-						MsgOtherGiveContentDTO msgOther = new MsgOtherGiveContentDTO();
-						msgOther.setType(MsgOtherGiveContentDTO.TYEP_TLJ);
-						msgOther.setTitle("璧犻�佹帹骞跨孩鍖�");
-						msgOther.setGiveType("浣犺禒閫佺殑鎺ㄥ箍绾㈠寘琚垚鍔熼鍙�");
-						msgOther.setReceiveInfo("鏄电О锛�" + userName + " ID锛�" + uid);
-						msgOther.setGiveTime(sd.format(giveRecord.getGiveTime()));
-						msgOther.setReceiveTime(sd.format(new Date()));
-						userOtherMsgNotificationService.tokenGiveMsg(giveUid, beiZhu, msgOther);
-						
-						// 婵�娲婚個璇蜂俊鎭�
-						if (addTeam)
-						    addInviteMsg(uid, giveUid, amount.setScale(2) + "鍏冩帹骞跨孩鍖�");
+						MsgRedPackGiveContentDTO givedto = new MsgRedPackGiveContentDTO();
+						givedto.setTitle("绾㈠寘璧犻��");
+						givedto.setUserInfo("鏄电О锛�" + userName + " ID锛�" + uid);
+						givedto.setTime(sd.format(new Date()));
+						givedto.setMoney("楼" + giveRecord.getAmount().setScale(2));
+						userMoneyMsgNotificationService.redPackMsg(giveUid, MsgTypeMoneyTypeEnum.redPackGiveOff, new Gson().toJson(givedto), giveBeiZhu);
 					}
 				});
-			} catch (UserTaoLiJinOriginException e) {
-				e.printStackTrace();
+			} catch (RedPackGiveRecordException e) {
+				throw new TokenRecordException(1, e.getMsg());
 			}
+		} else if (tokenType == TokenTypeEnum.taoLiJin) {
+			throw new TokenRecordException(1, "鎺ㄥ箍绾㈠寘鐩稿叧鍔熻兘宸蹭笅绾匡紒");
 		} else {
 			throw new TokenRecordException(1, "鏃犲搴旂被鍨�");
 		}
@@ -626,9 +626,35 @@
 			return;
 		Date date = new Date();
 		for (TokenRecord tokenRecord: list) {
+			Integer state = tokenRecord.getState();
+			if (state != null && state == 0) 
+				continue;
+			
 			tokenRecord.setState(1);
 			tokenRecord.setUpdateTime(date);
 			tokenRecordMapper.updateByPrimaryKeySelective(tokenRecord);
 		}
 	}
+	
+	
+	@Override
+	public void invalidByRedPack(Long id) {
+		if (id == null)
+			return;
+		
+		List<String> list = new ArrayList<String>();
+		list.add(TokenTypeEnum.redPack.name());
+		tokenRecordMapper.invalidByTypeAndIdentify(list, id.toString());
+	}
+	
+	@Override
+	public void invalidByCoupon(Long id) {
+		if (id == null)
+			return;
+		
+		List<String> list = new ArrayList<String>();
+		list.add(TokenTypeEnum.freeCoupon.name());
+		list.add(TokenTypeEnum.rebatePercentCoupon.name());
+		tokenRecordMapper.invalidByTypeAndIdentify(list, id.toString());
+	}
 }

--
Gitblit v1.8.0