From 398f41e16c0230a94d277e297eba17b5839db71c Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 20 八月 2019 18:40:13 +0800
Subject: [PATCH] 金币获取

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java |  176 ++++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 152 insertions(+), 24 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..5db76ad 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;
 		}
 
 		// 缁撴潫鏃ユ湡
@@ -1816,16 +1824,38 @@
 					jumpBtn.put("params", jumpLink);
 					jumpBtn.put("jumpDetail", jumpDetailV2Service.getByTypeCache("orderList"));
 				}
-			} else if (UserSystemCoupon.STATE_IN_USE == state) {
+			} else if (UserSystemCoupon.STATE_IN_USE == state && give) {
+				userCouponVO.setCouponEffect("璧犻�佷腑");
+				String tips = null;
 				if (CouponTypeEnum.freeCouponGive == type) {
 					userCouponVO.setState(UserSystemCoupon.STATE_GIVE_IN);
+					tips = configService.get("give_free_coupon_tips");
 				}
 				
-				if (give && CouponTypeEnum.rebatePercentCoupon == type) {
+				if (CouponTypeEnum.rebatePercentCoupon == type) {
 					userCouponVO.setState(UserSystemCoupon.STATE_GIVE_IN);
+					tips = configService.get("give_free_coupon_tips");
 				}
+				
+				if (!StringUtil.isNullOrEmpty(tips)) {
+					UserSystemCouponGiveRecord record = userSystemCouponGiveRecordService.getRecordByUidAndCouponId(uid, userCouponVO.getId());
+					if (record != null) {
+						TokenRecord tokenRecord = tokenRecordService.getNearByTypeAndIdentify(CouponTypeEnum.freeCoupon.name(), record.getId().toString());
+						if (tokenRecord != null && !StringUtil.isNullOrEmpty(tokenRecord.getToken())) {
+							String projectChineseName = Constant.systemCommonConfig.getProjectChineseName();
+							while(tips.contains("{APP鍚嶇О}")) {
+								tips = tips.replace("{APP鍚嶇О}", projectChineseName);
+							}
+							tips = tips.replace("{鍙d护}", tokenRecord.getToken()).replace("{涓嬭浇閾炬帴}", configService.get("app_down_link"));
+						}
+					}
+				} else {
+					tips = "";
+				}
+				userCouponVO.setGiveTips(tips);
+				
 			} else if (UserSystemCoupon.STATE_END_USE == state) {
-				if (CouponTypeEnum.freeCouponGive == type) {
+				if (give && CouponTypeEnum.freeCouponGive == type) {
 					userCouponVO.setState(UserSystemCoupon.STATE_GIVE_END);
 				}
 				
@@ -1865,32 +1895,130 @@
 		if (type != CouponTypeEnum.freeCouponGive && type != CouponTypeEnum.rebatePercentCoupon )
 			throw new UserSystemCouponException(1, "璇ュ埜涓嶆敮鎸佽禒閫�");
 		
+		String tips = null;
+		TokenTypeEnum tokenTypeEnum = null;
+		if (type == CouponTypeEnum.freeCouponGive) {
+			tokenTypeEnum = TokenTypeEnum.freeCoupon;
+			tips = configService.get("give_free_coupon_tips");
+		} else if (type == CouponTypeEnum.rebatePercentCoupon){
+			tokenTypeEnum = TokenTypeEnum.rebatePercentCoupon;
+			tips = configService.get("give_rebate_percent_coupon_tips");
+		} else {
+			throw new UserSystemCouponException(1, "璇ュ埜涓嶆敮鎸佽禒閫�");
+		}
 		
-		Date startTime = new Date();
-		Date endTime = DateUtil.plusDayDate(3, new Date());
+		if (StringUtil.isNullOrEmpty(tips))
+			throw new UserSystemCouponException(1, "tips鏁版嵁缂哄け");
 		
-		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);
+		// 鏄惁鏈�杩戠敓鎴愬彛浠ゆ湁鏁�
+		UserSystemCouponGiveRecord record = userSystemCouponGiveRecordService.getRecordByUidAndCouponId(uid, id);
+		if (record != null) {
+			TokenRecord tokenRecord = tokenRecordService.getNearByTypeAndIdentify(tokenTypeEnum.name(), id+"");
+			if (tokenRecord != null && !StringUtil.isNullOrEmpty(tokenRecord.getToken())) {
+				String projectChineseName = Constant.systemCommonConfig.getProjectChineseName();
+				while(tips.contains("{APP鍚嶇О}")) {
+					tips = tips.replace("{APP鍚嶇О}", projectChineseName);
+				}
+				tips = tips.replace("{鍙d护}", tokenRecord.getToken()).replace("{涓嬭浇閾炬帴}", configService.get("app_down_link"));
+				return tips;
+			}
+		}
 		
-
-		String tips = "閫佺粰浣犱竴寮犺繑鍒╁鍔卞埜蹇幓棰嗗彇鍚э紝澶嶅埗鏈潯娑堟伅[&%s&]锛屾墦寮�[杩斿埄鍒竇App棰嗗彇锛屼娇鐢ㄥ悗鍙杩斿埄鍔犲�嶃�俓r\n" 
-				+"----------------------------\r\n" 
-				+ "涓嬭浇[杩斿埄鍒竇App閾炬帴:http://t.cn/2H7AXAH\r\n"
-				+ "PS锛氬彛浠ゅ皢浼�24灏忔椂鍐呭け鏁堬紝璇峰強鏃堕鍙栥��";
 		
-		tips = String.format(tips, token);
+		Long giveRecordId = null;
+		Date nowDate = new Date();
 		
+		// 鎻掑叆璧犻�佽褰�
+		try {
+			UserSystemCouponGiveRecord giveRecord = new UserSystemCouponGiveRecord();
+			giveRecord.setCouponId(id);
+			giveRecord.setGiveUid(uid);
+			giveRecord.setGiveTime(nowDate);
+			giveRecord.setEndTime(DateUtil.plusDayDate(Constant.GIVE_DAYS, nowDate));
+			userSystemCouponGiveRecordService.insertSelective(giveRecord);
+			giveRecordId = giveRecord.getId();
+		} catch (Exception e) {
+			LogHelper.errorDetailInfo(e);
+			throw new UserSystemCouponException(1, "璧犻�佽褰曞垱寤哄け璐�");
+		}
+		
+		String token = null;
+		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(giveRecordId+"");
+				tokenRecord.setType(tokenTypeEnum);
+				tokenRecord.setStartTime(nowDate);
+				tokenRecord.setEndTime(DateUtil.plusDayDate(Constant.TOKEN_DAYS, 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护鐢熸垚澶辫触");
+			
+		userSystemCoupon.setState(UserSystemCoupon.STATE_IN_USE);
+		userSystemCoupon.setGive(true);
+		userSystemCoupon.setUpdateTime(nowDate);
+		userSystemCouponMapper.updateByPrimaryKeySelective(userSystemCoupon);
+		
+		// 鎻掑叆浣跨敤鍒歌褰�
+		UserSystemCouponRecord couponRecord = new UserSystemCouponRecord();
+		couponRecord.setState(UserSystemCouponRecord.STATE_GIVE_ON);
+		couponRecord.setUserSystemCoupon(userSystemCoupon);
+		couponRecord.setCouponType(type.name());
+		couponRecord.setCreateTime(nowDate);
+		couponRecord.setUpdateTime(nowDate);
+		userSystemCouponRecordService.insertSelective(couponRecord);
+				
+		String projectChineseName = Constant.systemCommonConfig.getProjectChineseName();
+		while(tips.contains("{APP鍚嶇О}")) {
+			tips = tips.replace("{APP鍚嶇О}", projectChineseName);
+		}
+		tips = tips.replace("{鍙d护}", token).replace("{涓嬭浇閾炬帴}", configService.get("app_down_link"));
 		return tips;
 	}
 
+	
+	@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()) {
+			
+			// TODO 杩囨湡
+			return;
+		}
+			
+		userSystemCoupon.setGive(false);
+		userSystemCoupon.setUseTime(null);
+		userSystemCoupon.setState(UserSystemCoupon.STATE_CAN_USE);
+		userSystemCoupon.setUpdateTime(new Date());
+		userSystemCouponMapper.updateByPrimaryKey(userSystemCoupon);
+
+		// TODO 娑堟伅
+	}
 }

--
Gitblit v1.8.0