From b2901a0793cfe3a1eb04318c1f8786c988e83108 Mon Sep 17 00:00:00 2001
From: yujian <yujian@123.com>
Date: 星期五, 16 八月 2019 14:28:14 +0800
Subject: [PATCH] 的

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java |   82 +++++++++++++++++++++++++++++++---------
 1 files changed, 63 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..d3a8fd7 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,30 +1873,66 @@
 		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);
+					
+					TokenRecord tokenRecord = new TokenRecord();
+					tokenRecord.setUid(uid);
+					tokenRecord.setIdentify(id+"");
+					tokenRecord.setType(tokenTypeEnum);
+					tokenRecord.setStartTime(nowDate);
+					tokenRecord.setEndTime(DateUtil.plusDayDate(3, nowDate));
+					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护鐢熸垚澶辫触");
+			
+			// 鎻掑叆璧犻�佽褰�
+			UserSystemCouponGiveRecord giveRecord = new UserSystemCouponGiveRecord();
+			giveRecord.setCouponId(id);
+			giveRecord.setGiveUid(uid);
+			giveRecord.setGiveTime(nowDate);
+			userSystemCouponGiveRecordService.insertSelective(giveRecord);
+		}
 		
-		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护鐢熸垚澶辫触");
 
 		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;
 	}

--
Gitblit v1.8.0