From 01e773cf27e572b8fb83538d85f31130930d93d1 Mon Sep 17 00:00:00 2001
From: yujian <yujian@123.com>
Date: 星期四, 15 八月 2019 15:57:23 +0800
Subject: [PATCH] 券赠送

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java |   72 ++++++++++++++++++++++++++++-------
 1 files changed, 57 insertions(+), 15 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..c941999 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;
 
@@ -1865,23 +1871,59 @@
 		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(state);
+					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" 

--
Gitblit v1.8.0