From 221b5c8d0de3f6b17a00d543503a79c13b28ba12 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期三, 13 十一月 2019 16:45:57 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/div' into div

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java |  115 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 113 insertions(+), 2 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java
index 56e599c..42f0976 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java
@@ -21,6 +21,7 @@
 import org.yeshi.utils.entity.DateInfo;
 
 import com.aliyun.openservices.ons.api.Message;
+import com.aliyun.openservices.ons.api.Producer;
 import com.aliyun.openservices.ons.api.SendResult;
 import com.aliyun.openservices.ons.api.transaction.LocalTransactionExecuter;
 import com.aliyun.openservices.ons.api.transaction.TransactionProducer;
@@ -174,6 +175,11 @@
 
 	@Resource
 	private UserSystemCouponActivateService userSystemCouponActivateService;
+	
+	@Resource(name = "producer")
+	private Producer producer;
+
+	
 
 	@Override
 	public int insertSelective(UserSystemCoupon record) {
@@ -906,7 +912,8 @@
 				}, null);
 				System.out.println(result);
 			} catch (Exception e) {
-				throw new Exception();
+				e.printStackTrace();
+				throw e;
 			}
 		}
 	}
@@ -2070,7 +2077,20 @@
 		}
 		tips = tips.replace("{鍙d护}", token).replace("{涓嬭浇閾炬帴}", configService.get("app_down_link"));
 
-		return createUserCouponVOo(userSystemCoupon, systemCoupon, giveRecord, tips);
+		UserSystemCouponVO couponVO = createUserCouponVOo(userSystemCoupon, systemCoupon, giveRecord, tips);
+		
+		UserSystemCouponUseMQMsg msg = new UserSystemCouponUseMQMsg();
+		msg.setUserSystemCouponId(id);
+		msg.setCouponType(type.name());
+		Message message = new Message(MQTopicName.TOPIC_USER.name(), UserTopicTagEnum.systemCouponDrawback.name(),
+				new Gson().toJson(msg).getBytes());
+		try {
+			producer.send(message);
+		} catch (Exception e) {
+			throw new UserSystemCouponException(1, "鍒涘缓璧犻�佷俊鎭け璐�");
+		}
+		
+		return couponVO;
 	}
 
 	private UserSystemCouponVO createUserCouponVOo(UserSystemCoupon userSystemCoupon, SystemCoupon systemCoupon,
@@ -2255,9 +2275,100 @@
 		sendBackGiveCoupon(list);
 	}
 
+	
+	@Override
+	@RequestSerializableByKeyService(key = "#id")
+	@Transactional(rollbackFor = Exception.class)
+	public void sendBackByGiveId(Long couponId) {
+		if (couponId == null)
+			return;
+		
+		UserSystemCoupon userCoupon = userSystemCouponMapper.selectByPrimaryKey(couponId);
+		if (userCoupon == null)
+			return;
+		
+		Integer state = userCoupon.getState();
+		if (state != UserSystemCoupon.STATE_IN_USE)
+			return;
+		
+		UserSystemCouponGiveRecord giveRecord = userSystemCouponGiveRecordService.getByCouponId(couponId);
+		if (giveRecord == null)
+			return;
+		
+		if (giveRecord.getState() != null && giveRecord.getState() != UserSystemCouponGiveRecord.STATE_INIT) 
+			return;
+		
+		// 鏇存柊璧犻�佽褰�
+		UserSystemCouponGiveRecord updateRecord = new UserSystemCouponGiveRecord();
+		updateRecord.setId(giveRecord.getId());
+		updateRecord.setState(UserSystemCouponGiveRecord.STATE_OVERDUE);
+		userSystemCouponGiveRecordService.updateByPrimaryKeySelective(updateRecord);
+		
+		// 鍙d护澶辨晥
+		tokenRecordService.invalidByCoupon(giveRecord.getId());
+
+
+		Date now = new Date();
+		Date endTime = userCoupon.getEndTime();
+		if (endTime != null && endTime.getTime() < now.getTime()) {
+			List<UserSystemCoupon> list = new ArrayList<UserSystemCoupon>();
+			list.add(userCoupon);
+			updateCounponInvalid(list);
+			return;
+		}
+
+		// 閫�鍥炲埜
+		UserSystemCoupon userSystemCoupon = new UserSystemCoupon();
+		userSystemCoupon.setId(userCoupon.getId());
+		userSystemCoupon.setGive(false);
+		userSystemCoupon.setUseTime(null);
+		userSystemCoupon.setState(UserSystemCoupon.STATE_CAN_USE);
+		userSystemCoupon.setUpdateTime(new Date());
+		userSystemCouponMapper.updateByPrimaryKeySelective(userSystemCoupon);
+
+		// 浣跨敤璁板綍
+		UserSystemCouponRecord useRecord = userSystemCouponRecordService.getNearByUserCouponId(couponId);
+		if (useRecord != null) {
+			UserSystemCouponRecord useRecordUpdate = new UserSystemCouponRecord();
+			useRecordUpdate.setId(useRecord.getId());
+			useRecordUpdate.setState(UserSystemCouponRecord.STATE_WAIT_TIME_OUT);
+			useRecordUpdate.setUpdateTime(new Date());
+			userSystemCouponRecordService.updateByPrimaryKeySelective(useRecordUpdate);
+		}
+
+		SystemCoupon systemCoupon = userCoupon.getSystemCoupon();
+		if (systemCoupon != null)
+			systemCoupon = systemCouponService.selectByPrimaryKey(systemCoupon.getId());
+
+		if (systemCoupon == null)
+			return;
+
+		// 閫�鍥炴秷鎭�
+		String couponName = systemCoupon.getName();
+		if (CouponTypeEnum.freeCouponGive == systemCoupon.getType()) {
+			couponName = "鍏嶅崟鍒�";
+		} else if (CouponTypeEnum.rebatePercentCoupon == systemCoupon.getType()) {
+			couponName = "濂栧姳鍒�";
+		}
+
+		String beiZhu = "璇峰埌鎴戠殑-绂忓埄涓績鏌ョ湅";
+		SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd HH:mm");
+		MsgOtherGiveContentDTO msgOther = new MsgOtherGiveContentDTO();
+		msgOther.setType(MsgOtherGiveContentDTO.TYEP_COUPON);
+		msgOther.setTitle(couponName + "閫�鍥�");
+		msgOther.setGiveType("浣犺禒閫佺殑" + couponName + "鏈鎴愬姛棰嗗彇");
+		msgOther.setGiveTime(sd.format(giveRecord.getGiveTime()));
+		msgOther.setReturnTime(sd.format(new Date()));
+		userOtherMsgNotificationService.tokenGiveMsg(giveRecord.getGiveUid(), beiZhu, msgOther);
+	}
+	
+	
 	@Override
 	public void sendBackGiveCoupon(List<UserSystemCouponGiveRecord> overdueList) {
 		for (UserSystemCouponGiveRecord record : overdueList) {
+			if (record.getState() != null && record.getState() != UserSystemCouponGiveRecord.STATE_INIT) 
+				continue;
+			
 			// 鏇存柊璧犻�佽褰�
 			UserSystemCouponGiveRecord updateRecord = new UserSystemCouponGiveRecord();
 			updateRecord.setId(record.getId());

--
Gitblit v1.8.0