From 8cb7ec4a35a38ae91d0eed17cde711e81d2b2bbf Mon Sep 17 00:00:00 2001
From: yujian <yujian>
Date: 星期二, 14 五月 2019 11:37:49 +0800
Subject: [PATCH] 合并

---
 fanli/src/main/java/com/yeshi/fanli/controller/client/UserCouponController.java |  443 +++++++++++++++++++++++-------------------------------
 1 files changed, 188 insertions(+), 255 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/UserCouponController.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/UserCouponController.java
index 73c27c9..3c5ac36 100644
--- a/fanli/src/main/java/com/yeshi/fanli/controller/client/UserCouponController.java
+++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/UserCouponController.java
@@ -4,6 +4,7 @@
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 import javax.annotation.Resource;
 
@@ -17,19 +18,18 @@
 import com.yeshi.fanli.entity.bus.homemodule.SwiperPicture;
 import com.yeshi.fanli.entity.bus.user.DeviceLotteryRecord;
 import com.yeshi.fanli.entity.bus.user.UserInfoExtra;
-import com.yeshi.fanli.entity.bus.user.UserSystemCoupon;
+import com.yeshi.fanli.entity.bus.user.UserLotteryRecord;
 import com.yeshi.fanli.entity.system.SystemCoupon;
-import com.yeshi.fanli.entity.system.SystemCoupon.CouponTypeEnum;
 import com.yeshi.fanli.exception.user.UserInfoExtraException;
+import com.yeshi.fanli.exception.user.UserLotteryRecordException;
 import com.yeshi.fanli.exception.user.UserSystemCouponException;
 import com.yeshi.fanli.service.inter.config.ConfigService;
 import com.yeshi.fanli.service.inter.config.SystemCouponService;
 import com.yeshi.fanli.service.inter.homemodule.SwiperPictureService;
-import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce;
-import com.yeshi.fanli.service.inter.order.CommonOrderCountService;
 import com.yeshi.fanli.service.inter.order.CommonOrderService;
 import com.yeshi.fanli.service.inter.user.DeviceLotteryRecordService;
 import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
+import com.yeshi.fanli.service.inter.user.UserLotteryRecordService;
 import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
 import com.yeshi.fanli.util.Constant;
 import com.yeshi.fanli.vo.user.UserSystemCouponRecordVO;
@@ -54,6 +54,9 @@
 	private ConfigService configService;
 
 	@Resource
+	private SystemCouponService systemCouponService;
+	
+	@Resource
 	private UserSystemCouponService UserSystemCouponService;
 
 	@Resource
@@ -66,19 +69,15 @@
 	private DeviceLotteryRecordService deviceLotteryRecordService;
 
 	@Resource
-	private SystemCouponService systemCouponService;
-
-	@Resource
 	private UserSystemCouponService userSystemCouponService;
 
 	@Resource
 	private UserInfoExtraService userInfoExtraService;
 
+	
 	@Resource
-	private CommonOrderCountService commonOrderCountService;
-
-	@Resource
-	private ThreeSaleSerivce threeSaleSerivce;
+	private UserLotteryRecordService userLotteryRecordService;
+	
 
 
 	/**
@@ -109,10 +108,20 @@
 					topPicture = listswiper.get(0).getSrc();
 				}
 			}
-
+			
+			boolean changeJump = false;
+			String version = acceptData.getVersion();
+			int tversion = Integer.parseInt(version);
+			String platform = acceptData.getPlatform();
+			if ("android".equalsIgnoreCase(platform) && tversion > 34) {
+				changeJump = true;
+			} else if (tversion > 44){
+				changeJump = true;
+			}
+			
 			long count = 0;
 			List<UserSystemCouponVO> resultList = UserSystemCouponService
-					.getUserCouponVOList((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, uid);
+					.getUserCouponVOList((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, uid, changeJump);
 
 			if (resultList != null && resultList.size() > 0) {
 				count = UserSystemCouponService.countUserCouponList(uid);
@@ -358,63 +367,45 @@
 	@RequestMapping(value = "getLotteryCount")
 	public void getLotteryCount(String callback, AcceptData acceptData, Long uid, PrintWriter out) {
 		try {
-			// 榛樿鏈�澶ф娊濂栨鏁�
-			int count = 5;
-
-			if (uid == null || uid == 0) { // 鏈櫥褰�
-				int platformType = 0;
-				String platform = acceptData.getPlatform();
-				if ("android".equals(platform)) {
-					platformType = 1;
-				} else if ("ios".equals(platform)) {
-					platformType = 2;
-				} else {
-					JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("骞冲彴鏈夎"));
-					return;
-				}
-
-				String device = acceptData.getDevice();
-				if (device == null || device.trim().length() == 0) {
-					JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璁惧涓嶅瓨鍦�"));
-					return;
-				}
-
-				List<DeviceLotteryRecord> list = deviceLotteryRecordService.listByPlatformAndDevice(platformType,
-						device);
-				if (list != null && list.size() > 0) {
-					count = count - list.size();
-				}
-
-			} else { // 宸茬櫥褰�
-				UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
-				if (userInfoExtra == null) {
-					JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鐢ㄦ埛淇℃伅涓嶅瓨鍦�"));
-					return;
-				}
-
-				Integer lotteryNewbies = userInfoExtra.getLotteryNewbies();
-				if (lotteryNewbies == null) { // 鏈娊杩�
-					// 鏄惁鏈夎繃璁㈠崟锛氳繑鍒┿�佸垎浜鍗�
-					boolean hasOrder = commonOrderCountService.hasRebateAndShareOrder(uid);
-					if (hasOrder) {
-						count = 0; // 涓嶇畻鏂扮敤鎴�
-					}
-					userInfoExtra.setLotteryNewbies(count);
-					userInfoExtraService.saveUserInfoExtra(userInfoExtra);
-				} else {
-					count = lotteryNewbies; // 鍓╀綑娆℃暟
-				}
+			// 1銆佸凡鐧诲綍绯荤粺
+			if (uid != null) {
+				JSONObject data = userLotteryRecordService.getLotteryCountNewbies(uid);
+				JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
+				return;
 			}
 
+			// 2銆佹湭鐧诲綍绯荤粺 - 璁板綍璁惧
+			int platformType = 0;
+			String platform = acceptData.getPlatform();
+			if ("android".equals(platform)) {
+				platformType = 1;
+			} else if ("ios".equals(platform)) {
+				platformType = 2;
+			} else {
+				JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("骞冲彴鏈夎"));
+				return;
+			}
+
+			String device = acceptData.getDevice();
+			if (device == null || device.trim().length() == 0) {
+				JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璁惧涓嶅瓨鍦�"));
+				return;
+			}
+
+			List<DeviceLotteryRecord> list = deviceLotteryRecordService.listByPlatformAndDevice(platformType, device);
+			int count = UserLotteryRecord.COUNT_NEWBIES;
+			if (list != null && list.size() > 0) {
+				count = count - list.size();
+			}
 			// 鎶藉瑙勫垯
 			String lotteryRule = configService.get("lottery_rule_newbies");
-
+			
 			JSONObject data = new JSONObject();
 			data.put("count", count);
 			data.put("rule", lotteryRule);
-
 			JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
-
+		} catch (UserLotteryRecordException e) {
+			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
 		} catch (Exception e) {
 			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鎿嶄綔澶辫触"));
 			e.printStackTrace();
@@ -423,7 +414,6 @@
 
 	/**
 	 * 鑾峰彇鎶藉缁撴灉
-	 * 
 	 * @param callback
 	 * @param acceptData
 	 * @param uid
@@ -433,214 +423,157 @@
 	public void getLotteryResult(String callback, AcceptData acceptData, Long uid, PrintWriter out) {
 
 		try {
-			// 鍓╀綑鎶藉娆℃暟
-			int count = 0;
-			// 鏈鎶戒腑鐨勫鍝�
-			String prize = null;
+			// 1銆佸凡鐧诲綍鐢ㄦ埛鎶藉
+			if (uid != null) {
+				Map<String, Object> map = userLotteryRecordService.executeLotteryNewbies(uid);
+				JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(map));
+				return;
+			} 
 			
-			// 宸蹭娇鐢ㄦ娊濂栨鏁�
-			int countUsed = 0;
-			// 宸叉嫢鏈夊鍝佹暟閲�
-			int countPrize = 0;
-			// 宸叉湁鍒哥被鍨�
-			String couponType = null;
-
-			if (uid == null || uid == 0) { // 鏈櫥褰�
-				int platformType = 0;
-				String platform = acceptData.getPlatform();
-				if ("android".equals(platform)) {
-					platformType = 1;
-				} else if ("ios".equals(platform)) {
-					platformType = 2;
-				} else {
-					JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("骞冲彴鏈夎"));
-					return;
-				}
-
-				String device = acceptData.getDevice();
-				if (device == null || device.trim().length() == 0) {
-					JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璁惧涓嶅瓨鍦�"));
-					return;
-				}
-
-				List<DeviceLotteryRecord> list = deviceLotteryRecordService.listByPlatformAndDevice(platformType,
-						device);
-				if (list != null && list.size() >= Constant.MAX_COUNT_LOTTERY_NEWBIES) { // 鏃犳娊濂栨満浼�
-					JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(2, "鎶藉娆℃暟涓嶈冻"));
-					return;
-				} 
-				
-				Long couponId = null;
-				
-				if (list == null || list.size() == 0) { // 鎷ユ湁鎶藉鏈轰細
-					count = Constant.MAX_COUNT_LOTTERY_NEWBIES - 1;
-				} else {
-					
-					for (DeviceLotteryRecord deviceLotteryRecord : list) {
-						Long systemCouponId = deviceLotteryRecord.getSystemCouponId();
-						if (systemCouponId != null) {
-							countPrize++;
-							couponId = systemCouponId;
-						}
-					}
-					count = Constant.MAX_COUNT_LOTTERY_NEWBIES - 1 - list.size();
-				}
-				
-				// 濂栧搧灏忎簬2鏃舵墠鎶藉
-				if (countPrize < 2) {
-					if (couponId != null) {
-						SystemCoupon coupon = systemCouponService.selectByPrimaryKey(couponId);
-						// 宸叉湁鍒�
-						couponType = coupon.getType().name();
-					}
-					// 濂栧搧
-					prize = getLotteryPrize(Constant.MAX_COUNT_LOTTERY_NEWBIES, countPrize, list.size(), couponType);
-				}
-				
-				// 鎶戒腑
-				Long newCouponId = null;
-				if (prize != null && prize.trim().length() > 0) {
-					// 宸插瓨鍦ㄦ鍒�
-					if (prize.equals(couponType)) {
-						prize = null;
-					} else {
-						SystemCoupon coupon = systemCouponService.getCouponByType(prize);
-						if (coupon != null) {
-							newCouponId = coupon.getId();
-						}
-					}
-				}
-
-				// 鎻掑叆璁板綍
-				DeviceLotteryRecord record = new DeviceLotteryRecord();
-				record.setDevice(device);
-				record.setPlatform(platformType);
-				record.setSystemCouponId(newCouponId);
-				record.setCreateTime(new Date());
-				deviceLotteryRecordService.insertSelective(record);
-
-			} else { // 宸茬櫥褰�
-				
-				UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
-				if (userInfoExtra == null) {
-					JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("淇℃伅涓嶆纭�"));
-					return;
-				}
-
-				// 鍓╀綑鎶藉娆℃暟
-				Integer lotteryNewbies = userInfoExtra.getLotteryNewbies();
-				if (lotteryNewbies == null || lotteryNewbies < 1) { // 娆℃暟宸茬敤鍏�
-					JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(2, "鎶藉娆℃暟涓嶈冻"));
-					return;
-				}  
-				
-				// 鍓╀綑娆℃暟
-				count = lotteryNewbies - 1; 
-				// 宸蹭娇鐢ㄦ鏁�
-				countUsed = Constant.MAX_COUNT_LOTTERY_NEWBIES - lotteryNewbies;
-				
-
-				// 宸叉娊涓殑濂栧搧
-				List<UserSystemCoupon> list = userSystemCouponService.getUserCouponBySource(uid,
-						UserSystemCoupon.SOURCE_CHOUJIANG);
-				
-				if (list == null || list.size() == 0) {
-					// 鎶藉
-					prize = getLotteryPrize(Constant.MAX_COUNT_LOTTERY_NEWBIES, countPrize , countUsed, couponType);
-					
-				} else if (list.size() == 1) {
-					UserSystemCoupon userSystemCoupon = list.get(0);
-					
-					SystemCoupon systemCoupon = userSystemCoupon.getSystemCoupon();
-					if (systemCoupon != null) {
-						SystemCoupon coupon = systemCouponService.selectByPrimaryKey(systemCoupon.getId());
-						// 宸叉湁鍒�
-						couponType = coupon.getType().name();
-					}
-					
-					// 鎷ユ湁濂栧搧鏁伴噺
-					countPrize = 1;
-					
-					// 鎶藉
-					prize = getLotteryPrize(Constant.MAX_COUNT_LOTTERY_NEWBIES, countPrize, countUsed, couponType);
-				}
-
-				// 鎶戒腑
-				if (prize != null && prize.trim().length() > 0) {
-					if (prize.equals(couponType)) {
-						// 宸叉湁姝ゅ埜
-						prize = null;
-					} else {
-						// 鎻掑叆鍒镐俊鎭�
-						userSystemCouponService.insertUserCoupon(uid, prize, UserSystemCoupon.SOURCE_CHOUJIANG);
-					}
-				}
-				
-				// 鍓╀綑娆℃暟
-				userInfoExtra.setLotteryNewbies(count);
-				userInfoExtraService.saveUserInfoExtra(userInfoExtra);
+			// 2銆佹湭鐧诲綍鐢ㄦ埛鎶藉
+			int platformType = 0;
+			String platform = acceptData.getPlatform();
+			if ("android".equals(platform)) {
+				platformType = 1;
+			} else if ("ios".equals(platform)) {
+				platformType = 2;
+			} else {
+				JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("骞冲彴鏈夎"));
+				return;
+			}
+			
+			String device = acceptData.getDevice();
+			if (device == null || device.trim().length() == 0) {
+				JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璁惧涓嶅瓨鍦�"));
+				return;
 			}
 
-			if (prize == null || prize.trim().length() == 0) {
-				prize = "NoPrize";
-			}
-
-			JSONObject data = new JSONObject();
-			data.put("count", count);
-			data.put("result", prize);
-
+			List<DeviceLotteryRecord> list = deviceLotteryRecordService.listByPlatformAndDevice(platformType, device);
+			if (list != null && list.size() >= UserLotteryRecord.COUNT_NEWBIES) {
+				JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(2, "鎶藉娆℃暟涓嶈冻"));
+				return;
+			} 
+			// 璁惧鎶藉
+			JSONObject data = getDevicePrize(list, device, platformType);
 			JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
-
+		} catch (UserLotteryRecordException e) {
+			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
 		} catch (Exception e) {
 			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鎶藉澶辫触"));
 			e.printStackTrace();
 		}
 	}
+	
 
 	/**
-	 * 濂栧搧鎶藉彇
-	 * 
-	 * @param maxCount 鏈�澶ф鏁�
-	 * @param hasPrize 鎷ユ湁濂栧搧鏁伴噺
-	 * @param record   宸叉娊娆℃暟
-	 * @param couponId 鍒竔d
+	 * 璁惧淇℃伅鎶藉-鏈櫥褰�
+	 * @param list
+	 * @param device
+	 * @param platformType
 	 * @return
 	 */
-	public String getLotteryPrize(int maxCount, int countPrize, int record, String couponType) {
-
-		String prize = null;
-		String freeCoupon = CouponTypeEnum.welfareFreeCoupon.name(); // 绂忓埄鍏嶈垂鍒�
-		String rebateCoupon = CouponTypeEnum.rebatePercentCoupon.name(); // 濂栧姳鍒�
-
-		if (countPrize == 1 && record == maxCount - 1) {
-			// 鏈�鍚庝竴娆★細 鍙敹鍒颁竴涓鍝�
-			if (rebateCoupon.equals(couponType)) {
-				prize = freeCoupon; // 绂忓埄鍏嶈垂鍒�
-			} else {
-				prize = rebateCoupon;  // 濂栧姳鍒�
-			}
-
-		} else if (countPrize == 0 && record == maxCount - 2) {
-			// 鍓�3娆℃病鏈夊鍔辨椂銆佸悗闈袱娆″繀涓�
-			long result = (1 + Math.round(Math.random() * (9)));
-			if (result <= 5) {
-				prize = freeCoupon; // 绂忓埄鍏嶈垂鍒�
-			} else {
-				prize = rebateCoupon; // 濂栧姳鍒�
-			}
-			
-		} else { // 澶т簬3娆℃満浼�
-
-			if (countPrize < 2) { // 涓嶈冻涓や釜濂栧搧
-				long result = (1 + Math.round(Math.random() * (9)));
-				if (result <= 3) {
-					prize = freeCoupon; // 绂忓埄鍏嶈垂鍒�
-				} else if (result <= 6) {
-					prize = rebateCoupon; // 濂栧姳鍒�
+	public JSONObject getDevicePrize(List<DeviceLotteryRecord> list, String device, int platformType) {
+		int count = 0;
+		int countPrize = 0;
+		Long couponId = null;
+		
+		if (list == null || list.size() == 0) { // 鎷ユ湁鎶藉鏈轰細
+			count = UserLotteryRecord.COUNT_NEWBIES;
+		} else {
+			for (DeviceLotteryRecord deviceLotteryRecord : list) {
+				Long systemCouponId = deviceLotteryRecord.getSystemCouponId();
+				if (systemCouponId != null) {
+					countPrize++;
+					couponId = systemCouponId;
 				}
 			}
+			count = UserLotteryRecord.COUNT_NEWBIES - list.size();
 		}
-		return prize;
+		
+		
+		String prize = null;
+		String couponType = null;
+		if (countPrize == 0) {
+			prize = userLotteryRecordService.getLotteryPrizeNewbies(count, countPrize, null);
+		} else if (countPrize == 1) {
+			if (couponId != null) {
+				SystemCoupon coupon = systemCouponService.selectByPrimaryKey(couponId);
+				couponType = coupon.getType().name();
+			}
+			
+			if(couponType != null && couponType.trim().length() > 0) {
+				prize = userLotteryRecordService.getLotteryPrizeNewbies(count, countPrize, couponType);
+			}
+		}
+		
+		Long newCouponId = null;
+		if (prize == null || prize.trim().length() == 0) {
+			prize = "NoPrize";
+		} else if (prize.equals(couponType)) {
+			// 宸插瓨鍦ㄦ鍒�
+			prize = "NoPrize";
+		} else { 
+			SystemCoupon coupon = systemCouponService.getCouponByType(prize);
+			if (coupon != null) {
+				newCouponId = coupon.getId();
+			}
+		}
+		
+		count --;
+		
+		// 鎻掑叆璁板綍
+		DeviceLotteryRecord record = new DeviceLotteryRecord();
+		record.setDevice(device);
+		record.setPlatform(platformType);
+		record.setSystemCouponId(newCouponId);
+		record.setCreateTime(new Date());
+		deviceLotteryRecordService.insertSelective(record);
+
+		JSONObject data = new JSONObject();
+		data.put("count", count);
+		data.put("result", prize);
+		
+		return data;
+	}
+
+	
+	/**
+	 * 鑾峰彇鎶藉娆℃暟- 澶╁ぉ鎶藉鍔卞埜
+	 * 
+	 * @param callback
+	 * @param acceptData
+	 * @param uid
+	 * @param out
+	 */
+	@RequestMapping(value = "getDailyCount")
+	public void getDailyCount(String callback, AcceptData acceptData, Long uid, PrintWriter out) {
+		try {
+			JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(userLotteryRecordService.getLotteryCountDaily(uid)));
+		} catch (UserLotteryRecordException e) {
+			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getCode(),e.getMsg()));
+		} catch (Exception e) {
+			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("淇℃伅鑾峰彇澶辫触"));
+			e.printStackTrace();
+		}
+	}
+
+	/**
+	 * 鑾峰彇鎶藉缁撴灉 - 澶╁ぉ鎶藉鍔卞埜`
+	 * @param callback
+	 * @param acceptData
+	 * @param uid
+	 * @param out
+	 */
+	@RequestMapping(value = "getDailyResult")
+	public void getDailyResult(String callback, AcceptData acceptData, Long uid, PrintWriter out) {
+		try {
+			JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(userLotteryRecordService.executeLotteryDaily(uid)));
+		} catch (UserLotteryRecordException e) {
+			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getCode(),e.getMsg()));
+		} catch (Exception e) {
+			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鎶藉澶辫触"));
+			e.printStackTrace();
+		}
 	}
 
 }

--
Gitblit v1.8.0