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 |  407 +++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 348 insertions(+), 59 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 96a3768..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
@@ -2,11 +2,13 @@
 
 import java.io.PrintWriter;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
 import javax.annotation.Resource;
 
+import org.springframework.core.task.TaskExecutor;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
@@ -14,10 +16,20 @@
 
 import com.yeshi.fanli.entity.accept.AcceptData;
 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.UserLotteryRecord;
+import com.yeshi.fanli.entity.system.SystemCoupon;
+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.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;
@@ -27,6 +39,7 @@
 
 /**
  * 绂忓埄涓績
+ * 
  * @author Administrator
  *
  */
@@ -34,20 +47,42 @@
 @RequestMapping("api/v1/user/coupon")
 public class UserCouponController {
 
+	@Resource(name = "taskExecutor")
+	private TaskExecutor executor;
+
 	@Resource
 	private ConfigService configService;
 
 	@Resource
+	private SystemCouponService systemCouponService;
+	
+	@Resource
 	private UserSystemCouponService UserSystemCouponService;
 
 	@Resource
-	private  SwiperPictureService swiperPictureService;
-	
+	private SwiperPictureService swiperPictureService;
+
 	@Resource
 	private CommonOrderService commonOrderService;
+
+	@Resource
+	private DeviceLotteryRecordService deviceLotteryRecordService;
+
+	@Resource
+	private UserSystemCouponService userSystemCouponService;
+
+	@Resource
+	private UserInfoExtraService userInfoExtraService;
+
 	
+	@Resource
+	private UserLotteryRecordService userLotteryRecordService;
+	
+
+
 	/**
 	 * 鐢ㄦ埛鍒稿垪琛ㄦ煡璇�
+	 * 
 	 * @param acceptData
 	 * @param page
 	 * @param uid
@@ -59,31 +94,41 @@
 			out.print(JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�"));
 			return;
 		}
-		
+
 		try {
 			if (page == null || page < 1) {
 				page = 1;
 			}
-			
+
 			// 绂忓埄涓績鍥剧墖
-			String topPicture = null; 
-			if(page == 1) {
+			String topPicture = null;
+			if (page == 1) {
 				List<SwiperPicture> listswiper = swiperPictureService.getByBannerCard("welfare_top");
 				if (listswiper != null && listswiper.size() > 0) {
 					topPicture = listswiper.get(0).getSrc();
 				}
 			}
 			
-			long count = 0;
-			List<UserSystemCouponVO> resultList = UserSystemCouponService.getUserCouponVOList((page - 1) * Constant.PAGE_SIZE, 
-					Constant.PAGE_SIZE, uid );
+			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, changeJump);
+
 			if (resultList != null && resultList.size() > 0) {
 				count = UserSystemCouponService.countUserCouponList(uid);
 			} else if (resultList == null) {
 				resultList = new ArrayList<UserSystemCouponVO>();
 			}
-			
+
 			JSONObject data = new JSONObject();
 			data.put("topPicture", topPicture);
 			data.put("count", count);
@@ -91,6 +136,26 @@
 
 			out.print(JsonUtil.loadTrueResult(data));
 
+			// 鏇存柊绂忓埄涓績鏈鏁伴噺
+			if (page == 1) {
+				executor.execute(new Runnable() {
+					@Override
+					public void run() {
+						UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
+						// 鏈鍒告槸鍚﹀ぇ浜�0
+						if (userInfoExtra != null && userInfoExtra.getCouponNews() > 0) {
+							userInfoExtra.setCouponNews(0);
+							try {
+								userInfoExtraService.saveUserInfoExtra(userInfoExtra);
+							} catch (UserInfoExtraException e) {
+								e.printStackTrace();
+							}
+						}
+
+					}
+				});
+			}
+
 		} catch (UserSystemCouponException e) {
 			out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
 		} catch (Exception e) {
@@ -98,40 +163,42 @@
 			e.printStackTrace();
 		}
 	}
-	
+
 	/**
 	 * 鐢ㄦ埛濂栧姳鍒�
+	 * 
 	 * @param acceptData
 	 * @param page
 	 * @param uid
+	 * @param auctionId  鍟嗗搧id
 	 * @param out
 	 */
 	@RequestMapping(value = "getGoodsCouponList", method = RequestMethod.POST)
-	public void getGoodsCouponList(AcceptData acceptData, Long uid, PrintWriter out) {
+	public void getGoodsCouponList(AcceptData acceptData, Long uid, Long auctionId, PrintWriter out) {
 		if (uid == null) {
 			out.print(JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�"));
 			return;
 		}
-		
+
 		try {
-			List<UserSystemCouponVO> resultList = UserSystemCouponService.getGoodsCouponList(uid);
-			
-			if (resultList == null ) {
-				resultList =new ArrayList<UserSystemCouponVO>();
+			List<UserSystemCouponVO> resultList = UserSystemCouponService.getGoodsCouponList(uid, auctionId);
+
+			if (resultList == null) {
+				resultList = new ArrayList<UserSystemCouponVO>();
 			}
-			
+
 			JSONObject dataTip = new JSONObject();
 			dataTip.put("content", configService.get("free_coupon_tip"));
 			dataTip.put("fontColor", "#F14242");
-			
+
 			JSONObject data = new JSONObject();
 			data.put("helpLink", configService.get("free_coupon_help"));
 			data.put("tip", dataTip);
 			data.put("count", resultList.size());
 			data.put("result_list", JsonUtil.getApiCommonGson().toJson(resultList));
-			
+
 			out.print(JsonUtil.loadTrueResult(data));
-			
+
 		} catch (UserSystemCouponException e) {
 			out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
 		} catch (Exception e) {
@@ -139,10 +206,10 @@
 			e.printStackTrace();
 		}
 	}
-	
-	
+
 	/**
-	 *  鍏嶅崟鍒镐娇鐢ㄨ褰� 浠ュ強鐘舵�佷慨鏀�
+	 * 鍏嶅崟鍒镐娇鐢ㄨ褰� 浠ュ強鐘舵�佷慨鏀�
+	 * 
 	 * @param acceptData
 	 * @param page
 	 * @param uid
@@ -154,7 +221,7 @@
 			out.print(JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�"));
 			return;
 		}
-		
+
 		try {
 			UserSystemCouponService.useGoodsCoupon(uid, cid, goodId);
 			out.print(JsonUtil.loadTrueResult("浣跨敤鎴愬姛"));
@@ -165,10 +232,10 @@
 			e.printStackTrace();
 		}
 	}
-	
-	
+
 	/**
 	 * 鐢ㄦ埛濂栧姳鍒�
+	 * 
 	 * @param acceptData
 	 * @param page
 	 * @param uid
@@ -176,26 +243,26 @@
 	 */
 	@RequestMapping(value = "getOrderCouponList", method = RequestMethod.POST)
 	public void getOrderCouponList(AcceptData acceptData, Long uid, PrintWriter out) {
-		
+
 		if (uid == null) {
 			out.print(JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�"));
 			return;
 		}
-		
+
 		try {
 			List<UserSystemCouponVO> resultList = UserSystemCouponService.getOrderCouponList(uid);
-			
-			if (resultList == null ) {
-				resultList =new ArrayList<UserSystemCouponVO>();
+
+			if (resultList == null) {
+				resultList = new ArrayList<UserSystemCouponVO>();
 			}
-			
+
 			JSONObject data = new JSONObject();
 			data.put("helpLink", configService.get("reward_coupon_help"));
 			data.put("count", resultList.size());
 			data.put("result_list", JsonUtil.getApiCommonGson().toJson(resultList));
-			
+
 			out.print(JsonUtil.loadTrueResult(data));
-			
+
 		} catch (UserSystemCouponException e) {
 			out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
 		} catch (Exception e) {
@@ -203,10 +270,10 @@
 			e.printStackTrace();
 		}
 	}
-	
-	
+
 	/**
-	 *  鍏嶅崟鍒镐娇鐢ㄨ褰� 浠ュ強鐘舵�佷慨鏀�
+	 * 鍏嶅崟鍒镐娇鐢ㄨ褰� 浠ュ強鐘舵�佷慨鏀�
+	 * 
 	 * @param acceptData
 	 * @param page
 	 * @param uid
@@ -214,19 +281,19 @@
 	 */
 	@RequestMapping(value = "useRewardCoupon", method = RequestMethod.POST)
 	public void useRewardCoupon(AcceptData acceptData, Long uid, Long cid, String orderNo, PrintWriter out) {
-		
+
 		if (uid == null) {
 			out.print(JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�"));
 			return;
 		}
-		
+
 		try {
 			UserSystemCouponService.useOrderCoupon(uid, cid, orderNo);
-			
+
 			JSONObject data = commonOrderService.getRewardJumpInfo(orderNo);
-			
+
 			out.print(JsonUtil.loadTrueResult(data));
-			
+
 		} catch (UserSystemCouponException e) {
 			out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
 		} catch (Exception e) {
@@ -234,25 +301,26 @@
 			e.printStackTrace();
 		}
 	}
-	
+
 	/**
-	 *  璁㈠崟-濂栧姳杩涘害璇︽儏
+	 * 璁㈠崟-濂栧姳杩涘害璇︽儏
+	 * 
 	 * @param acceptData
-	 * @param orderNo 璁㈠崟鍙�
+	 * @param orderNo    璁㈠崟鍙�
 	 * @param out
 	 */
 	@RequestMapping(value = "getRewardRecord", method = RequestMethod.POST)
 	public void getRewardCounponRecord(AcceptData acceptData, String orderNo, PrintWriter out) {
-		
+
 		try {
-			
+
 			UserSystemCouponRecordVO rewardRecord = UserSystemCouponService.getRewardCouponRecord(orderNo);
-			
+
 			JSONObject data = new JSONObject();
 			data.put("rewardRecord", rewardRecord);
-			
+
 			out.print(JsonUtil.loadTrueResult(data));
-			
+
 		} catch (UserSystemCouponException e) {
 			out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
 		} catch (Exception e) {
@@ -260,25 +328,26 @@
 			e.printStackTrace();
 		}
 	}
-	
+
 	/**
-	 *  璁㈠崟-濂栧姳杩涘害璇︽儏
+	 * 璁㈠崟-濂栧姳杩涘害璇︽儏
+	 * 
 	 * @param acceptData
-	 * @param orderNo 璁㈠崟鍙�
+	 * @param orderNo    璁㈠崟鍙�
 	 * @param out
 	 */
 	@RequestMapping(value = "getFreeCounponRecord", method = RequestMethod.POST)
 	public void getFreeCounponRecord(AcceptData acceptData, String orderNo, PrintWriter out) {
-		
+
 		try {
-			
+
 			UserSystemCouponRecordVO rewardRecord = UserSystemCouponService.getFreeCouponRecord(orderNo);
-			
+
 			JSONObject data = new JSONObject();
 			data.put("frreCouponRecord", rewardRecord);
-			
+
 			out.print(JsonUtil.loadTrueResult(data));
-			
+
 		} catch (UserSystemCouponException e) {
 			out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
 		} catch (Exception e) {
@@ -286,5 +355,225 @@
 			e.printStackTrace();
 		}
 	}
+
+	/**
+	 * 鑾峰彇鎶藉娆℃暟
+	 * 
+	 * @param callback
+	 * @param acceptData
+	 * @param uid
+	 * @param out
+	 */
+	@RequestMapping(value = "getLotteryCount")
+	public void getLotteryCount(String callback, AcceptData acceptData, Long uid, PrintWriter out) {
+		try {
+			// 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();
+		}
+	}
+
+	/**
+	 * 鑾峰彇鎶藉缁撴灉
+	 * @param callback
+	 * @param acceptData
+	 * @param uid
+	 * @param out
+	 */
+	@RequestMapping(value = "getLotteryResult")
+	public void getLotteryResult(String callback, AcceptData acceptData, Long uid, PrintWriter out) {
+
+		try {
+			// 1銆佸凡鐧诲綍鐢ㄦ埛鎶藉
+			if (uid != null) {
+				Map<String, Object> map = userLotteryRecordService.executeLotteryNewbies(uid);
+				JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(map));
+				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);
+			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 list
+	 * @param device
+	 * @param platformType
+	 * @return
+	 */
+	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();
+		}
+		
+		
+		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