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/RedPackExchangeServiceImpl.java |   77 ++++++++++++++++++++++++++++++--------
 1 files changed, 60 insertions(+), 17 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackExchangeServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackExchangeServiceImpl.java
index 00dcbf9..5843a70 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackExchangeServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackExchangeServiceImpl.java
@@ -1,6 +1,7 @@
 package com.yeshi.fanli.service.impl.redpack;
 
 import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
 
@@ -9,7 +10,10 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import com.google.gson.Gson;
 import com.yeshi.fanli.dao.mybatis.redpack.RedPackExchangeMapper;
+import com.yeshi.fanli.dto.msg.MsgRedPackExchangeContentDTO;
+import com.yeshi.fanli.entity.bus.msg.MsgMoneyDetail.MsgTypeMoneyTypeEnum;
 import com.yeshi.fanli.entity.bus.user.UserInfo;
 import com.yeshi.fanli.entity.common.AdminUser;
 import com.yeshi.fanli.entity.money.UserMoneyDetail;
@@ -17,8 +21,11 @@
 import com.yeshi.fanli.entity.redpack.RedPackDetail;
 import com.yeshi.fanli.entity.redpack.RedPackDetail.RedPackDetailTypeEnum;
 import com.yeshi.fanli.entity.redpack.RedPackExchange;
+import com.yeshi.fanli.exception.redpack.RedPackBalanceException;
 import com.yeshi.fanli.exception.redpack.RedPackExchangeException;
+import com.yeshi.fanli.log.LogHelper;
 import com.yeshi.fanli.service.inter.money.UserMoneyService;
+import com.yeshi.fanli.service.inter.money.msg.UserMoneyMsgNotificationService;
 import com.yeshi.fanli.service.inter.redpack.RedPackBalanceService;
 import com.yeshi.fanli.service.inter.redpack.RedPackConfigService;
 import com.yeshi.fanli.service.inter.redpack.RedPackDetailService;
@@ -45,6 +52,9 @@
 	@Resource
 	private RedPackDetailService redPackDetailService;
 	
+	@Resource
+	private UserMoneyMsgNotificationService userMoneyMsgNotificationService;
+	
 	
 	@Override
 	public List<RedPackExchange> query(Integer start, Integer count, String key, Integer state){
@@ -57,19 +67,13 @@
 	}
 	
 	@Override
-	public List<Long> countState(long uid){
-		return redPackExchangeMapper.countState(uid);
-	}
-	
-	
-	@Override
-	public List<BigDecimal> countMoneyState(long uid){
-		return redPackExchangeMapper.countMoneyState(uid);
+	public Long countByUidAndState(long uid, Integer state) {
+		return redPackExchangeMapper.countByUidAndState(uid, state);
 	}
 	
 	@Override
-	public BigDecimal countMoneyByState(Long uid, Integer state){
-		return redPackExchangeMapper.countMoneyByState(uid, state);
+	public BigDecimal countMoneyByUidAndState(Long uid, Integer state){
+		return redPackExchangeMapper.countMoneyByUidAndState(uid, state);
 	}
 	
 	@Override
@@ -85,22 +89,33 @@
 			throw new RedPackExchangeException(1, "鍙傛暟涓嶆纭�");
 
 		String extractBanlenMin = redPackConfigService.getValueByKey("extract_banlen_min");
+	
+		BigDecimal balance = null;
+		try {
+			balance = redPackBalanceService.getBalance(uid);
+		} catch (RedPackBalanceException e1) {
+			throw new RedPackExchangeException(1, e1.getMsg());
+		}
 		
-		BigDecimal balance = redPackBalanceService.getBalance(uid);
 		if (balance == null || balance.compareTo(new BigDecimal(extractBanlenMin)) < 0)
 			throw new RedPackExchangeException(1, "浣欓涓嶈冻" + extractBanlenMin + "鍏�");
 		
 		if (balance.compareTo(amount) < 0)
 			throw new RedPackExchangeException(1, "鎻愮幇浣欓涓嶈冻");
 		
-		
 		String moneyMin = redPackConfigService.getValueByKey("extract_money_min");
 		String moneyMax = redPackConfigService.getValueByKey("extract_money_max");
 		if (amount.compareTo(new BigDecimal(moneyMin)) < 0 || amount.compareTo(new BigDecimal(moneyMax)) > 0)
 			throw new RedPackExchangeException(1, "鎻愮幇閲戦鑷冲皯" + moneyMin + "鍏冭嚦澶�" + moneyMax + "鍏�");
 		
-		Date nowDate = new Date();
 		
+		long countToday = redPackExchangeMapper.countTodayByUid(uid);
+		String extractDayMax = redPackConfigService.getValueByKey("extract_day_max");
+		if (!StringUtil.isNullOrEmpty(extractDayMax) && countToday >= Long.parseLong(extractDayMax)) 
+			throw new RedPackExchangeException(1, "浠婃棩绾㈠寘鎻愮幇娆℃暟瓒呴檺");
+		
+		
+		Date nowDate = new Date();
 		// 鎻愮幇鐢宠
 		RedPackExchange exchange = new RedPackExchange();
 		exchange.setUid(uid);
@@ -125,7 +140,7 @@
 		if (record == null) 
 			throw new RedPackExchangeException(1,"鐢宠璁板綍宸蹭笉瀛樺湪");
 
-		if (RedPackExchange.STATE_INIT == record.getState())
+		if (RedPackExchange.STATE_INIT != record.getState())
 			throw new RedPackExchangeException(1,"璇ョ敵璇峰凡琚鐞嗭紝璇峰埛鏂�");
 
 		Date nowDate = new Date();
@@ -148,13 +163,31 @@
 		// 娣诲姞璧勯噾
 		userMoneyService.addUserMoney(record.getUid(), record.getMoney(), detail);
 		
+		// 鏇存柊绾㈠寘鎻愮幇鏄庣粏
 		try {
-			String identifyCode = StringUtil.Md5(RedPackDetailTypeEnum.redExchangePass.name() + ":" + record.getId());
+			String identifyCode = StringUtil.Md5(RedPackDetailTypeEnum.redExchange.name() + ":" + record.getId());
 			RedPackDetail redPackDetail = redPackDetailService.getByIdentifyCode(identifyCode);
+			// 鍒涘缓鏄庣粏鏇存柊
 			RedPackDetail updateDetail = RedPackDetailFactory.updateExchangePass(redPackDetail.getId(), record);
 			redPackDetailService.updateByPrimaryKeySelective(updateDetail);
 		} catch (Exception e) {
+			LogHelper.errorDetailInfo(e);
 			throw new RedPackExchangeException(1,"鏇存柊鎻愮幇鏄庣粏鍑洪敊");
+		}
+		
+		try {
+			//娑堟伅
+			SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd HH:mm");
+			String beizu = "绾㈠寘鎻愮幇鎴愬姛鍚庤鍒扳�滄垜鐨�-璐︽埛浣欓鈥濅腑鏌ョ湅";
+			MsgRedPackExchangeContentDTO dto = new MsgRedPackExchangeContentDTO();
+			dto.setTitle("绾㈠寘鎻愮幇");
+			dto.setTime(sd.format(record.getCreateTime()));
+			dto.setHandle("浜哄伐瀹℃牳" + sd.format(new Date())); 
+			dto.setMoney("楼" + record.getMoney().setScale(2));		
+			dto.setBalance("楼" + redPackBalanceService.getBalance(record.getUid()));
+			userMoneyMsgNotificationService.redPackMsg(record.getUid(), MsgTypeMoneyTypeEnum.redPackExchangePass, new Gson().toJson(dto), beizu);
+		} catch (RedPackBalanceException e) {
+			throw new RedPackExchangeException(1, e.getMsg());
 		}
 	}
 	
@@ -166,7 +199,7 @@
 		if (record == null) 
 			throw new RedPackExchangeException(1,"鐢宠璁板綍宸蹭笉瀛樺湪");
 
-		if (RedPackExchange.STATE_INIT == record.getState())
+		if (RedPackExchange.STATE_INIT != record.getState())
 			throw new RedPackExchangeException(1,"璇ョ敵璇峰凡琚鐞嗭紝璇峰埛鏂�");
 		
 		record.setReason(reason);
@@ -177,10 +210,20 @@
 		
 		// 閫�鍥炵孩鍖�
 		try {
-			redPackBalanceService.addRedPack(record.getUid(), record.getMoney(), RedPackDetailFactory.createExchange(record));
+			redPackBalanceService.addRedPack(record.getUid(), record.getMoney(), RedPackDetailFactory.createExchangeReject(record));
 		} catch (Exception e) {
+			LogHelper.errorDetailInfo(e);
 			throw new RedPackExchangeException(1, "绾㈠寘閫�鍥炴椂鍑洪敊");
 		}
+		
+		//娑堟伅
+		SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd HH:mm");
+		MsgRedPackExchangeContentDTO dto = new MsgRedPackExchangeContentDTO();
+		dto.setTitle("绾㈠寘鎻愮幇");
+		dto.setReason(reason);
+		dto.setHandle(""); // TODO 澶勭悊鏂瑰紡寰呭畾
+		dto.setTime(sd.format(record.getCreateTime()));
+		userMoneyMsgNotificationService.redPackMsg(record.getUid(), MsgTypeMoneyTypeEnum.redPackExchangeReject, new Gson().toJson(dto), null);
 	}
 
 }

--
Gitblit v1.8.0