From e5faf31965fef7235ade5dc39b03384c3830d088 Mon Sep 17 00:00:00 2001
From: yujian <yujian@123.com>
Date: 星期三, 21 八月 2019 14:39:09 +0800
Subject: [PATCH] 券退回 券失效

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java |  198 +++++++++++++++++++++++++++++++------------------
 1 files changed, 124 insertions(+), 74 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 1d3dad9..63c8534 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
@@ -17,6 +17,8 @@
 import org.yeshi.utils.DateUtil;
 
 import com.yeshi.fanli.dao.mybatis.user.UserSystemCouponMapper;
+import com.yeshi.fanli.dto.msg.MsgOtherGiveContentDTO;
+import com.yeshi.fanli.entity.bus.msg.MsgOtherDetail.MsgTypeOtherTypeEnum;
 import com.yeshi.fanli.entity.bus.user.DeviceLotteryRecord;
 import com.yeshi.fanli.entity.bus.user.HongBaoV2;
 import com.yeshi.fanli.entity.bus.user.Order;
@@ -292,8 +294,6 @@
 			return null;
 		}
 
-		// 鏇存柊杩囨湡鍒�
-		updateCounponInvalid(uid);
 		// 閫�鍥炲埜
 		sendBackTimeOutCoupon(uid);
 		
@@ -555,8 +555,6 @@
 			throw new UserSystemCouponException(1, "鐢ㄦ埛鏈櫥褰�");
 		}
 
-		// 鏇存柊杩囨湡鍒�
-		updateCounponInvalid(uid);
 		// 閫�鍥炲埜
 		sendBackTimeOutCoupon(uid);
 
@@ -582,8 +580,6 @@
 			throw new UserSystemCouponException(1, "鍟嗗搧ID涓虹┖");
 		}
 
-		// 鏇存柊杩囨湡鍒�
-		updateCounponInvalid(uid);
 		// 閫�鍥炲埜
 		sendBackTimeOutCoupon(uid);
 		
@@ -1120,9 +1116,6 @@
 			return;
 		}
 
-		// 楠岃瘉鏄惁澶辨晥
-		updateCounponInvalid(uid);
-
 		// 寰呮椿绂忓埄鍏嶅崟鍒�
 		List<UserSystemCoupon> list = userSystemCouponMapper.getCouponByTypeAndNotActivated(uid, systemCoupon.getId());
 		if (list == null || list.size() == 0) {
@@ -1207,25 +1200,30 @@
 		}
 	}
 
-	@Transactional
 	@Override
-	public void updateCounponInvalid(Long uid) {
-		List<UserSystemCoupon> list = userSystemCouponMapper.getCounponNowInvalid(uid);
+	public List<UserSystemCoupon> getCounponNowInvalid(int count) {
+		return userSystemCouponMapper.getCounponNowInvalid(count);
+	}
+	
+
+	@Override
+	public void updateCounponInvalid(List<UserSystemCoupon> list) {
 		if (list == null || list.size() == 0) {
 			return;
 		}
 
 		for (UserSystemCoupon userSystemCoupon : list) {
-			// 鏇存柊鍒稿凡杩囨湡
+			UserSystemCoupon userCoupon = new UserSystemCoupon();
+			userCoupon.setUpdateTime(new Date());
 			userSystemCoupon.setState(UserSystemCoupon.STATE_OVERDUE);
 			userSystemCouponMapper.updateByPrimaryKeySelective(userSystemCoupon);
 
-			SystemCoupon systemCoupon = userSystemCoupon.getSystemCoupon();
-			if (systemCoupon == null) {
+			SystemCoupon baseCoupon = userSystemCoupon.getSystemCoupon();
+			if (baseCoupon == null) {
 				continue;
 			}
-
-			SystemCoupon baseCoupon = systemCouponService.selectByPrimaryKey(systemCoupon.getId());
+			
+			baseCoupon = systemCouponService.selectByPrimaryKey(baseCoupon.getId());
 			if (baseCoupon == null || baseCoupon.getId() == null) {
 				continue;
 			}
@@ -1238,8 +1236,11 @@
 					userOtherMsgNotificationService.freeSheetCouponAlreadyOutOfDate(userSystemCoupon);
 				} else if (baseCoupon.getType() == CouponTypeEnum.rebatePercentCoupon) {
 					userOtherMsgNotificationService.rewardCouponAlreadyOutOfDate(userSystemCoupon);
+				}else if (baseCoupon.getType() == CouponTypeEnum.freeCouponBuy) {
+					userOtherMsgNotificationService.outOfDate(userSystemCoupon, MsgTypeOtherTypeEnum.freeCouponBuy);
+				} else if (baseCoupon.getType() == CouponTypeEnum.freeCouponGive) {
+					userOtherMsgNotificationService.outOfDate(userSystemCoupon, MsgTypeOtherTypeEnum.freeCouponGive);
 				}
-
 			} catch (Exception e) {
 				try {
 					LogHelper.errorDetailInfo(e);
@@ -1254,7 +1255,7 @@
 	@Override
 	public void sendBackTimeOutCoupon(Long uid) {
 		// 瓒呰繃10鍒嗛挓   鏈鍖归厤鐨勫埜
-		List<UserSystemCouponRecord> list = userSystemCouponRecordService.getCouponByUsingTimeOut(uid,600L);
+		List<UserSystemCouponRecord> list = userSystemCouponRecordService.getCouponByUsingTimeOut(uid, 600L);
 		if (list == null || list.size() == 0) {
 			return;
 		}
@@ -1378,42 +1379,48 @@
 	 * 
 	 * @param userSystemCoupon
 	 */
-	public void sendBackCoupon(UserSystemCoupon userSystemCoupon, UserSystemCouponRecord record) throws Exception {
-
-		int expiryDay = 15;
-
-		SystemCoupon systemCoupon = userSystemCoupon.getSystemCoupon();
-		SystemCoupon coupon = systemCouponService.selectByPrimaryKey(systemCoupon.getId());
-		if (coupon != null) {
-			expiryDay = coupon.getExpiryDay();
+	public void sendBackCoupon(UserSystemCoupon userCoupon, UserSystemCouponRecord record) throws Exception {
+		if (userCoupon == null)
+			return;
+			
+		Integer state = userCoupon.getState();
+		if (state != UserSystemCoupon.STATE_IN_USE) 
+			return;
+		
+		Date now = new Date();
+		Date endTime = userCoupon.getEndTime();
+		if (endTime != null && endTime.getTime() < now.getTime()) {
+			
+			// TODO 杩囨湡
+			return;
 		}
-
-		// 缁撴潫鏃ユ湡
-		Date endTime = null;
-		try {
-			// 浠婂ぉ鍦ㄥ唴  鍑忓幓涓�澶�
-			String endDay = DateUtil.plusDay(expiryDay - 1, new Date());
-			SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
-			endTime = format.parse(endDay);
-		} catch (ParseException e) {
-			e.printStackTrace();
-		}
-		// 鐘舵�佸垵濮嬪寲
-		userSystemCoupon.setState(UserSystemCoupon.STATE_CAN_USE);
+		
+		// 閫�鍥炲埜
+		UserSystemCoupon userSystemCoupon = new UserSystemCoupon();
+		userSystemCoupon.setId(userCoupon.getId());
+		userSystemCoupon.setGive(false);
 		userSystemCoupon.setUseTime(null);
-		// 鏈夋晥鏈熸椂闂撮噸鏂板畾涔�
-		userSystemCoupon.setStartTime(new Date());
-		userSystemCoupon.setEndTime(endTime);
-
+		userSystemCoupon.setState(UserSystemCoupon.STATE_CAN_USE);
 		userSystemCoupon.setUpdateTime(new Date());
-
 		userSystemCouponMapper.updateByPrimaryKey(userSystemCoupon);
-
-		if (CouponTypeEnum.welfareFreeCoupon.name().equals(record.getCouponType())) {
-			userOtherMsgNotificationService.welfareCouponDrawBack(userSystemCoupon, record.getOrderNo());
-		} else if (CouponTypeEnum.freeCoupon.name().equals(record.getCouponType())) {
-			userOtherMsgNotificationService.freeSheetCouponDrawBack(userSystemCoupon, record.getOrderNo());
+		
+		// 浣跨敤璁板綍
+		if  (record != null) {
+			UserSystemCouponRecord useRecordUpdate = new UserSystemCouponRecord();
+			useRecordUpdate.setId(record.getId());
+			useRecordUpdate.setState(UserSystemCouponRecord.STATE_WAIT_TIME_OUT);
+			useRecordUpdate.setUpdateTime(new Date());
+			userSystemCouponRecordService.updateByPrimaryKeySelective(useRecordUpdate);
+			
+			if (CouponTypeEnum.welfareFreeCoupon.name().equals(record.getCouponType())) {
+				userOtherMsgNotificationService.welfareCouponDrawBack(userSystemCoupon, record.getOrderNo());
+			} else if (CouponTypeEnum.freeCoupon.name().equals(record.getCouponType())) {
+				userOtherMsgNotificationService.freeSheetCouponDrawBack(userSystemCoupon, record.getOrderNo());
+			} else if (CouponTypeEnum.freeCouponBuy.name().equals(record.getCouponType())) {
+				userOtherMsgNotificationService.couponDrawBack(userSystemCoupon, record.getOrderNo(), MsgTypeOtherTypeEnum.freeCouponBuy);
+			}
 		}
+		
 	}
 
 	@Override
@@ -1699,8 +1706,6 @@
 	@Override
 	public List<UserSystemCouponVO> getCouponList(long start, int count, Long uid)
 			throws UserSystemCouponException, Exception {
-		// 鏇存柊杩囨湡鍒�
-		updateCounponInvalid(uid);
 		// 閫�鍥炲埜
 		sendBackTimeOutCoupon(uid);
 
@@ -1975,29 +1980,74 @@
 
 	
 	@Override
-	public void sendBackGive(Long id) {
-		UserSystemCoupon userSystemCoupon = userSystemCouponMapper.selectByPrimaryKey(id);
-		if (userSystemCoupon == null)
-			return;
-		
-		Integer state = userSystemCoupon.getState();
-		if (state != UserSystemCoupon.STATE_IN_USE) 
-			return;
-		
-		Date now = new Date();
-		Date endTime = userSystemCoupon.getEndTime();
-		if (endTime != null && endTime.getTime() < now.getTime()) {
+	public void sendBackGiveCoupon(List<UserSystemCouponGiveRecord> overdueList) {
+		for (UserSystemCouponGiveRecord record: overdueList) {
+			// 鏇存柊璧犻�佽褰�
+			UserSystemCouponGiveRecord updateRecord = new UserSystemCouponGiveRecord();
+			updateRecord.setId(record.getId());
+			updateRecord.setState(UserSystemCouponGiveRecord.STATE_OVERDUE);
+			userSystemCouponGiveRecordService.updateByPrimaryKeySelective(updateRecord);
 			
-			// TODO 杩囨湡
-			return;
+			// 鏇存柊鍒镐俊鎭�
+			Long couponId = record.getCouponId();
+			if (couponId == null) {
+				continue;
+			}
+			
+			// 鍒稿垪琛�
+			UserSystemCoupon userCoupon = userSystemCouponMapper.selectByPrimaryKey(couponId);
+			if (userCoupon == null)
+				continue;
+				
+			Integer state = userCoupon.getState();
+			if (state != UserSystemCoupon.STATE_IN_USE) 
+				return;
+			
+			Date now = new Date();
+			Date endTime = userCoupon.getEndTime();
+			if (endTime != null && endTime.getTime() < now.getTime()) {
+				
+				// TODO 杩囨湡
+				continue;
+			}
+			
+			// 閫�鍥炲埜
+			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.updateByPrimaryKey(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)
+				continue;
+			
+			// 閫�鍥炴秷鎭�
+			String beiZhu = "璇峰埌鎴戠殑-绂忓埄涓績鏌ョ湅";
+			SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd HH.mm");
+			MsgOtherGiveContentDTO msgOther = new MsgOtherGiveContentDTO();
+			msgOther.setType(MsgOtherGiveContentDTO.TYEP_COUPON);
+			msgOther.setTitle("璧犻��" + systemCoupon.getName() + "閫�鍥�");
+			msgOther.setGiveType("浣犺禒閫佺殑"+ systemCoupon.getName() + "鏈鎴愬姛棰嗗彇");
+			msgOther.setGiveTime(sd.format(record.getGiveTime()));
+			msgOther.setReturnTime(sd.format(new Date()));
+			userOtherMsgNotificationService.tokenGiveMsg(record.getGiveUid(), beiZhu, msgOther);
 		}
-			
-		userSystemCoupon.setGive(false);
-		userSystemCoupon.setUseTime(null);
-		userSystemCoupon.setState(UserSystemCoupon.STATE_CAN_USE);
-		userSystemCoupon.setUpdateTime(new Date());
-		userSystemCouponMapper.updateByPrimaryKey(userSystemCoupon);
-
-		// TODO 娑堟伅
 	}
+
 }

--
Gitblit v1.8.0