From 48077e8c704216f38939cfbf1702f45d7190801d Mon Sep 17 00:00:00 2001
From: yujian <yujian@123.com>
Date: 星期二, 12 十一月 2019 15:26:39 +0800
Subject: [PATCH] Merge branch 'div' of ssh://193.112.35.168:29418/fanli-server into div

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackGiveRecordServiceImpl.java |   59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 56 insertions(+), 3 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 ba6dcc6..bcc3434 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
@@ -1,6 +1,7 @@
 package com.yeshi.fanli.service.impl.redpack;
 
 import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
 import java.util.Date;
 
 import javax.annotation.Resource;
@@ -9,13 +10,18 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.yeshi.utils.DateUtil;
 
+import com.google.gson.Gson;
 import com.yeshi.fanli.dao.mybatis.redpack.RedPackGiveRecordMapper;
+import com.yeshi.fanli.dto.msg.MsgRedPackGiveContentDTO;
+import com.yeshi.fanli.entity.bus.msg.MsgMoneyDetail.MsgTypeMoneyTypeEnum;
 import com.yeshi.fanli.entity.bus.user.TokenRecord;
 import com.yeshi.fanli.entity.bus.user.TokenRecord.TokenTypeEnum;
 import com.yeshi.fanli.entity.redpack.RedPackDetail;
 import com.yeshi.fanli.entity.redpack.RedPackDetail.RedPackDetailTypeEnum;
 import com.yeshi.fanli.entity.redpack.RedPackGiveRecord;
+import com.yeshi.fanli.exception.redpack.RedPackBalanceException;
 import com.yeshi.fanli.exception.redpack.RedPackGiveRecordException;
+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;
@@ -24,6 +30,7 @@
 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;
 
 @Service
@@ -45,6 +52,9 @@
 	@Resource
 	private RedPackDetailService redPackDetailService;
 	
+	@Resource
+	private UserMoneyMsgNotificationService userMoneyMsgNotificationService;
+	
 	
 	@Override
 	public RedPackGiveRecord selectByPrimaryKey(Long id) {
@@ -55,7 +65,44 @@
 	public void updateByPrimaryKeySelective(RedPackGiveRecord record) {
 		redPackGiveRecordMapper.updateByPrimaryKeySelective(record);
 	}
+
 	
+	@Override
+	@RequestSerializableByKeyService(key = "#id")
+	@Transactional(rollbackFor = Exception.class)
+	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");
+		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
@@ -69,7 +116,13 @@
 		if (amount.compareTo(new BigDecimal(giveMin)) < 0 || amount.compareTo(new BigDecimal(giveMax)) > 0)
 			throw new RedPackGiveRecordException(1, "璧犻�侀噾棰濊嚦灏�" + giveMin + "鍏冭嚦澶�" + giveMax + "鍏�");
 		
-		BigDecimal balance = redPackBalanceService.getBalance(uid);
+		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, "浣欓涓嶈冻");
 
@@ -104,7 +157,7 @@
 			tips = tips.replace("{APP鍚嶇О}", projectChineseName);
 		}
 		tips = tips.replace("{鍙d护}", token).replace("{涓嬭浇閾炬帴}", redPackConfigService.getValueByKey("app_down_link")).replace("{闈㈤}",
-				amount.toString());
+				amount.setScale(2).toString());
 		
 		// 鍑忓皯绾㈠寘
 		try {
@@ -128,7 +181,7 @@
 		if (endTime != null && endTime.getTime() < now.getTime())
 			throw new RedPackGiveRecordException(1, "绾㈠寘宸插け鏁堜簡");
 		
-		giveRecord.setGiveUid(uid);
+		giveRecord.setReceiveUid(uid);
 		giveRecord.setReceiveTime(now);
 		giveRecord.setState(RedPackGiveRecord.STATE_RECEIVE);
 		// 棰嗗彇浜哄鍔犵孩鍖�

--
Gitblit v1.8.0