From 3672aec5bf6c2c6da4cb7ab4a8b5f314a22c5831 Mon Sep 17 00:00:00 2001
From: yujian <yujian@123.com>
Date: 星期一, 19 八月 2019 17:32:00 +0800
Subject: [PATCH] 退回淘礼金

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java |  123 ++++++++++++++++++++++++++++++++++------
 1 files changed, 104 insertions(+), 19 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 6ad928c..46b9769 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
@@ -25,6 +25,7 @@
 import com.yeshi.fanli.entity.bus.user.UserInfo;
 import com.yeshi.fanli.entity.bus.user.UserInfoExtra;
 import com.yeshi.fanli.entity.bus.user.UserSystemCoupon;
+import com.yeshi.fanli.entity.bus.user.UserSystemCouponGiveRecord;
 import com.yeshi.fanli.entity.bus.user.UserSystemCouponRecord;
 import com.yeshi.fanli.entity.common.JumpDetailV2;
 import com.yeshi.fanli.entity.money.UserMoneyDetail;
@@ -54,11 +55,13 @@
 import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
 import com.yeshi.fanli.service.inter.user.UserInfoService;
 import com.yeshi.fanli.service.inter.user.UserMoneyDetailService;
+import com.yeshi.fanli.service.inter.user.UserSystemCouponGiveRecordService;
 import com.yeshi.fanli.service.inter.user.UserSystemCouponRecordService;
 import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
 import com.yeshi.fanli.util.Constant;
 import com.yeshi.fanli.util.MoneyBigDecimalUtil;
 import com.yeshi.fanli.util.RedisManager;
+import com.yeshi.fanli.util.StringUtil;
 import com.yeshi.fanli.util.account.UserUtil;
 import com.yeshi.fanli.util.factory.UserMoneyDetailFactory;
 import com.yeshi.fanli.util.taobao.TaoBaoUtil;
@@ -81,6 +84,9 @@
 	@Resource
 	private UserSystemCouponMapper userSystemCouponMapper;
 
+	@Resource
+	private UserSystemCouponGiveRecordService userSystemCouponGiveRecordService;
+	
 	@Resource
 	private ConfigService configService;
 
@@ -192,8 +198,8 @@
 		}
 
 		SystemCoupon coupon = null;
-		if (couponType.equals(CouponTypeEnum.welfareFreeCoupon.name())) {
-			// 绂忓埄鍏嶅崟鍒�
+		if (couponType.equals(CouponTypeEnum.welfareFreeCoupon.name()) || couponType.equals(CouponTypeEnum.freeCoupon.name())) {
+			// 鍏嶅崟鍒�
 			coupon = systemCouponService.getCouponByType(couponType);
 		} else if (couponType.equals(CouponTypeEnum.rebatePercentCoupon.name())) {
 			// 闅忔満濂栧姳鍒�
@@ -213,6 +219,8 @@
 			if (countSuccess == 0) {
 				stateActivated = 0;
 			}
+		} else if (coupon.getType() == CouponTypeEnum.freeCoupon) {
+			stateActivated = 0;
 		}
 
 		// 缁撴潫鏃ユ湡
@@ -1865,32 +1873,109 @@
 		if (type != CouponTypeEnum.freeCouponGive && type != CouponTypeEnum.rebatePercentCoupon )
 			throw new UserSystemCouponException(1, "璇ュ埜涓嶆敮鎸佽禒閫�");
 		
+		TokenTypeEnum tokenTypeEnum = null;
+		if (type == CouponTypeEnum.freeCouponGive) {
+			tokenTypeEnum = TokenTypeEnum.freeCoupon;
+		} else if (type == CouponTypeEnum.rebatePercentCoupon){
+			tokenTypeEnum = TokenTypeEnum.rebatePercentCoupon;
+		} else {
+			throw new UserSystemCouponException(1, "璇ュ埜涓嶆敮鎸佽禒閫�");
+		}
 		
-		Date startTime = new Date();
-		Date endTime = DateUtil.plusDayDate(3, new Date());
+		String token = null;
+		Date nowDate = new Date();
+		TokenRecord record = tokenRecordService.getNearByTypeAndIdentify(tokenTypeEnum.name(), id+"");
+		if (record != null && record.getEndTime().getTime() > nowDate.getTime()) {
+			token = record.getToken();
+		} else {
+			for (int i = 0; i < 5; i++) {
+				try {
+					// TODO 鍙d护鐢熸垚瑙勫垯寰呭畾
+					long num = 10000 + (long) (Math.random() * 10000);
+					token = UserUtil.getInviteCode(num);
+					
+					String endDay = DateUtil.plusDay(Constant.TOKEN_DAYS - 1,nowDate);
+					SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+					Date endTime = format.parse(endDay);
+					
+					TokenRecord tokenRecord = new TokenRecord();
+					tokenRecord.setUid(uid);
+					tokenRecord.setIdentify(id+"");
+					tokenRecord.setType(tokenTypeEnum);
+					tokenRecord.setStartTime(nowDate);
+					tokenRecord.setEndTime(endTime);
+					tokenRecord.setToken(token);
+					tokenRecord.setState(0);
+					tokenRecordService.insertSelective(tokenRecord);
+				} catch (Exception e) {
+					LogHelper.errorDetailInfo(e);
+					token = null;
+				}
+				
+				if(!StringUtil.isNullOrEmpty(token)) {
+					break;
+				}
+			}
+			
+			if(StringUtil.isNullOrEmpty(token))
+				throw new UserSystemCouponException(1, "鍙d护鐢熸垚澶辫触");
+			
+			// 鎻掑叆璧犻�佽褰�
+			try {
+				String endDay = DateUtil.plusDay(Constant.GIVE_DAYS - 1, new Date());
+				SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+				Date endTime = format.parse(endDay);
+				
+				UserSystemCouponGiveRecord giveRecord = new UserSystemCouponGiveRecord();
+				giveRecord.setCouponId(id);
+				giveRecord.setGiveUid(uid);
+				giveRecord.setGiveTime(nowDate);
+				giveRecord.setEndTime(endTime);
+				userSystemCouponGiveRecordService.insertSelective(giveRecord);
+			} catch (Exception e) {
+				LogHelper.errorDetailInfo(e);
+				throw new UserSystemCouponException(1, "璧犻�佽褰曞垱寤哄け璐�");
+			}
+		}
 		
-		long num = 10000 + (long) (Math.random() * 10000);
-		String token = UserUtil.getInviteCode(num);
-		
-		TokenRecord tokenRecord = new TokenRecord();
-		tokenRecord.setUid(uid);
-		tokenRecord.setIdentify(id+"");
-		tokenRecord.setType(TokenTypeEnum.coupon);
-		tokenRecord.setEndTime(endTime);
-		tokenRecord.setStartTime(startTime);
-		tokenRecord.setToken(token);
-		tokenRecord.setState(state);
-		tokenRecordService.insertSelective(tokenRecord);
-		
+		if(StringUtil.isNullOrEmpty(token))
+			throw new UserSystemCouponException(1, "鍙d护鐢熸垚澶辫触");
 
+		userSystemCoupon.setState(UserSystemCoupon.STATE_IN_USE);
+		userSystemCoupon.setGive(true);
+		userSystemCouponMapper.updateByPrimaryKeySelective(userSystemCoupon);
+		
 		String tips = "閫佺粰浣犱竴寮犺繑鍒╁鍔卞埜蹇幓棰嗗彇鍚э紝澶嶅埗鏈潯娑堟伅[&%s&]锛屾墦寮�[杩斿埄鍒竇App棰嗗彇锛屼娇鐢ㄥ悗鍙杩斿埄鍔犲�嶃�俓r\n" 
 				+"----------------------------\r\n" 
-				+ "涓嬭浇[杩斿埄鍒竇App閾炬帴:http://t.cn/2H7AXAH\r\n"
+				+ "涓嬭浇[杩斿埄鍒竇App閾炬帴:%s\r\n"
 				+ "PS锛氬彛浠ゅ皢浼�24灏忔椂鍐呭け鏁堬紝璇峰強鏃堕鍙栥��";
 		
-		tips = String.format(tips, token);
+		tips = String.format(tips, token, configService.get("app_down_link"));
 		
 		return tips;
 	}
 
+	
+	@Override
+	public void updateGiveRecord(Long uid, Long id, String couponType) {
+		Date date = new Date();
+		// 鏇存柊鍒哥姸鎬侊細宸蹭娇鐢�
+		UserSystemCoupon userCoupon = new UserSystemCoupon();
+		userCoupon.setId(id);
+		userCoupon.setState(UserSystemCoupon.STATE_END_USE);
+		userCoupon.setUseTime(date);
+		userCoupon.setUpdateTime(date);
+		userSystemCouponMapper.updateByPrimaryKeySelective(userCoupon);
+
+		// 鎻掑叆浣跨敤鍒歌褰�
+		UserSystemCouponRecord couponRecord = new UserSystemCouponRecord();
+		couponRecord.setState(UserSystemCouponRecord.STATE_SUCCESS);
+		couponRecord.setUserSystemCoupon(userCoupon);
+		couponRecord.setCouponType(couponType);
+		couponRecord.setCreateTime(date);
+		couponRecord.setUpdateTime(date);
+		userSystemCouponRecordService.insertSelective(couponRecord);
+	}
+	
+	
 }

--
Gitblit v1.8.0