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/redpack/RedPackGiveRecordServiceImpl.java |  137 +++++++++++++++++++++++++++------------------
 1 files changed, 81 insertions(+), 56 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackGiveRecordServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackGiveRecordServiceImpl.java
index 5f5ede2..ddb7293 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackGiveRecordServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackGiveRecordServiceImpl.java
@@ -3,7 +3,6 @@
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.Date;
-import java.util.List;
 
 import javax.annotation.Resource;
 
@@ -11,8 +10,12 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.yeshi.utils.DateUtil;
 
+import com.aliyun.openservices.ons.api.Message;
+import com.aliyun.openservices.ons.api.Producer;
 import com.google.gson.Gson;
 import com.yeshi.fanli.dao.mybatis.redpack.RedPackGiveRecordMapper;
+import com.yeshi.fanli.dto.mq.user.UserTopicTagEnum;
+import com.yeshi.fanli.dto.mq.user.body.UserRedPackGiftMQMsg;
 import com.yeshi.fanli.dto.msg.MsgRedPackGiveContentDTO;
 import com.yeshi.fanli.entity.bus.msg.MsgMoneyDetail.MsgTypeMoneyTypeEnum;
 import com.yeshi.fanli.entity.bus.user.TokenRecord;
@@ -31,7 +34,10 @@
 import com.yeshi.fanli.util.Constant;
 import com.yeshi.fanli.util.StringUtil;
 import com.yeshi.fanli.util.TokenUtil;
+import com.yeshi.fanli.util.annotation.RequestSerializableByKeyService;
 import com.yeshi.fanli.util.factory.RedPackDetailFactory;
+import com.yeshi.fanli.util.rocketmq.MQMsgBodyFactory;
+import com.yeshi.fanli.util.rocketmq.MQTopicName;
 
 @Service
 public class RedPackGiveRecordServiceImpl implements RedPackGiveRecordService {
@@ -41,65 +47,71 @@
 
 	@Resource
 	private RedPackConfigService redPackConfigService;
-	
+
 	@Resource
 	private RedPackBalanceService redPackBalanceService;
 
-	
 	@Resource
 	private TokenRecordService tokenRecordService;
-	
+
 	@Resource
 	private RedPackDetailService redPackDetailService;
-	
+
 	@Resource
 	private UserMoneyMsgNotificationService userMoneyMsgNotificationService;
-	
-	
+
+	@Resource(name = "producer")
+	private Producer producer;
+
 	@Override
 	public RedPackGiveRecord selectByPrimaryKey(Long id) {
 		return redPackGiveRecordMapper.selectByPrimaryKey(id);
 	}
-	
+
 	@Override
 	public void updateByPrimaryKeySelective(RedPackGiveRecord record) {
 		redPackGiveRecordMapper.updateByPrimaryKeySelective(record);
 	}
-	
-	
+
 	@Override
-	public List<RedPackGiveRecord> overdueList(int count) {
-		return redPackGiveRecordMapper.overdueList(count);
-	}
-	
-	@Override
+	@RequestSerializableByKeyService(key = "#id")
 	@Transactional(rollbackFor = Exception.class)
-	public void overdue(List<RedPackGiveRecord> list) throws Exception {
-		if (list == null || list.size() == 0)
+	public void overdueByPrimaryKey(Long id) throws Exception {
+		if (id == null)
 			return;
-		
+
+		RedPackGiveRecord giveRecord = redPackGiveRecordMapper.selectByPrimaryKey(id);
+		if (giveRecord == null)
+			return;
+
+		if (giveRecord.getState() != null && giveRecord.getState() != RedPackGiveRecord.STATE_INIT)
+			return;
+
+		// 璧犻�佽褰曞け鏁�
+		RedPackGiveRecord updateRecord = new RedPackGiveRecord();
+		updateRecord.setId(giveRecord.getId());
+		updateRecord.setState(RedPackGiveRecord.STATE_OVERDUE);
+		redPackGiveRecordMapper.updateByPrimaryKeySelective(updateRecord);
+
+		// 鍙d护澶辨晥
+		tokenRecordService.invalidByRedPack(id);
+
+		// 閫�鍥炵孩鍖�
+		redPackBalanceService.addRedPack(giveRecord.getGiveUid(), giveRecord.getAmount(),
+				RedPackDetailFactory.createGiveOthersFail(giveRecord));
+
+		// 閫�鍥炴秷鎭�
 		SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd HH:mm");
-		RedPackGiveRecord updateRecord = null;
-		for (RedPackGiveRecord giveRecord: list) {
-			updateRecord = new RedPackGiveRecord();
-			updateRecord.setId(giveRecord.getId());
-			updateRecord.setState(1);
-			redPackGiveRecordMapper.updateByPrimaryKeySelective(updateRecord);
-			
-			// 閫�鍥炵孩鍖�
-			redPackBalanceService.addRedPack(giveRecord.getGiveUid(), giveRecord.getAmount(), RedPackDetailFactory.createGiveOthersFail(giveRecord));
-			
-			// 閫�鍥炴秷鎭�
-			MsgRedPackGiveContentDTO givedto = new MsgRedPackGiveContentDTO();
-			givedto.setTitle("浣犺禒閫佺殑绾㈠寘鏈鎴愬姛棰嗗彇");
-			givedto.setMoney("楼" + giveRecord.getAmount().setScale(2));
-			givedto.setTime(sd.format(new Date()));
-			givedto.setGiveTime(sd.format(giveRecord.getGiveTime()));
-			userMoneyMsgNotificationService.redPackMsg(giveRecord.getGiveUid(), MsgTypeMoneyTypeEnum.redPackGiveBack, new Gson().toJson(givedto), "璇峰埌鎴戠殑-绾㈠寘鏌ョ湅");
-		}
+		MsgRedPackGiveContentDTO givedto = new MsgRedPackGiveContentDTO();
+		givedto.setTitle("浣犺禒閫佺殑绾㈠寘鏈鎴愬姛棰嗗彇");
+		givedto.setMoney("楼" + giveRecord.getAmount().setScale(2));
+		givedto.setTime(sd.format(new Date()));
+		givedto.setGiveTime(sd.format(giveRecord.getGiveTime()));
+		userMoneyMsgNotificationService.redPackMsg(giveRecord.getGiveUid(), MsgTypeMoneyTypeEnum.redPackGiveBack,
+				new Gson().toJson(givedto), "璇峰埌鎴戠殑-绾㈠寘鏌ョ湅");
+
 	}
-	
-	
+
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public String giving(Long uid, BigDecimal amount) throws RedPackGiveRecordException {
@@ -110,14 +122,14 @@
 		String giveMax = redPackConfigService.getValueByKey("give_money_max");
 		if (amount.compareTo(new BigDecimal(giveMin)) < 0 || amount.compareTo(new BigDecimal(giveMax)) > 0)
 			throw new RedPackGiveRecordException(1, "璧犻�侀噾棰濊嚦灏�" + giveMin + "鍏冭嚦澶�" + giveMax + "鍏�");
-		
+
 		BigDecimal balance = null;
 		try {
 			balance = redPackBalanceService.getBalance(uid);
 		} catch (RedPackBalanceException e1) {
 			throw new RedPackGiveRecordException(1, e1.getMsg());
 		}
-		
+
 		if (balance == null || amount.compareTo(balance) > 0)
 			throw new RedPackGiveRecordException(1, "浣欓涓嶈冻");
 
@@ -151,55 +163,68 @@
 		while (tips.contains("{APP鍚嶇О}")) {
 			tips = tips.replace("{APP鍚嶇О}", projectChineseName);
 		}
-		tips = tips.replace("{鍙d护}", token).replace("{涓嬭浇閾炬帴}", redPackConfigService.getValueByKey("app_down_link")).replace("{闈㈤}",
-				amount.setScale(2).toString());
-		
+		tips = tips.replace("{鍙d护}", token).replace("{涓嬭浇閾炬帴}", redPackConfigService.getValueByKey("app_down_link"))
+				.replace("{闈㈤}", amount.setScale(2).toString());
+
 		// 鍑忓皯绾㈠寘
 		try {
 			redPackBalanceService.subRedPack(uid, amount, RedPackDetailFactory.createGiveOthers(giveRecord));
 		} catch (Exception e) {
 			throw new RedPackGiveRecordException(1, "绾㈠寘鍒涘缓澶辫触");
 		}
+
+		UserRedPackGiftMQMsg msg = new UserRedPackGiftMQMsg();
+		msg.setId(giveRecord.getId());
+		msg.setUid(uid);
+		Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.redPackGiftDrawback,
+				msg);
+		try {
+			producer.send(message);
+		} catch (Exception e) {
+			throw new RedPackGiveRecordException(1, "绾㈠寘鍒涘缓澶辫触");
+		}
+		
+
 		return tips;
 	}
-	
-	
+
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public RedPackGiveRecord receiveFriendsGive(Long uid, Long id) throws RedPackGiveRecordException{
+	public RedPackGiveRecord receiveFriendsGive(Long uid, Long id) throws RedPackGiveRecordException {
 		RedPackGiveRecord giveRecord = redPackGiveRecordMapper.selectByPrimaryKey(id);
 		if (giveRecord == null || giveRecord.getState() != RedPackGiveRecord.STATE_INIT)
 			throw new RedPackGiveRecordException(1, "璧犻�佽褰曞け鏁堟垨宸茶棰嗗彇");
-	
+
 		Date now = new Date();
 		Date endTime = giveRecord.getEndTime();
 		if (endTime != null && endTime.getTime() < now.getTime())
 			throw new RedPackGiveRecordException(1, "绾㈠寘宸插け鏁堜簡");
-		
+
 		giveRecord.setReceiveUid(uid);
 		giveRecord.setReceiveTime(now);
 		giveRecord.setState(RedPackGiveRecord.STATE_RECEIVE);
 		// 棰嗗彇浜哄鍔犵孩鍖�
 		try {
-			redPackBalanceService.addRedPack(uid, giveRecord.getAmount(), RedPackDetailFactory.createGiveOthersReceive(giveRecord));
+			redPackBalanceService.addRedPack(uid, giveRecord.getAmount(),
+					RedPackDetailFactory.createGiveOthersReceive(giveRecord));
 		} catch (Exception e) {
 			throw new RedPackGiveRecordException(1, "绾㈠寘棰嗗彇澶辫触");
-		}		
-		
+		}
+
 		// 鏇存柊璧犻�佽褰�
 		redPackGiveRecordMapper.updateByPrimaryKey(giveRecord);
-		
+
 		try {
 			String identifyCode = StringUtil.Md5(RedPackDetailTypeEnum.giveOthers.name() + ":" + giveRecord.getId());
 			RedPackDetail redPackDetail = redPackDetailService.getByIdentifyCode(identifyCode);
-			
-			RedPackDetail updateDetail = RedPackDetailFactory.createGiveOthersSucceed(redPackDetail.getId(), giveRecord);
+
+			RedPackDetail updateDetail = RedPackDetailFactory.createGiveOthersSucceed(redPackDetail.getId(),
+					giveRecord);
 			redPackDetailService.updateByPrimaryKeySelective(updateDetail);
 		} catch (Exception e) {
-			throw new RedPackGiveRecordException(1,"鏇存柊鎻愮幇鏄庣粏鍑洪敊");
+			throw new RedPackGiveRecordException(1, "鏇存柊鎻愮幇鏄庣粏鍑洪敊");
 		}
 		return giveRecord;
 	}
 
-	
 }

--
Gitblit v1.8.0