From ed9e2fdb519f36c743a10f0a1de48ad5f87604d6 Mon Sep 17 00:00:00 2001
From: yujian <yujian>
Date: 星期三, 27 二月 2019 16:05:28 +0800
Subject: [PATCH] 券状态更新

---
 fanli/src/main/java/com/yeshi/fanli/controller/client/UserCouponController.java |   97 +++++++++++++++++++++++++++++++++---------------
 1 files changed, 66 insertions(+), 31 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 51f8969..241e5ab 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
@@ -1,17 +1,16 @@
 package com.yeshi.fanli.controller.client;
 
 import java.io.PrintWriter;
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
 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;
-import org.yeshi.utils.DateUtil;
 import org.yeshi.utils.JsonUtil;
 
 import com.yeshi.fanli.entity.accept.AcceptData;
@@ -21,10 +20,12 @@
 import com.yeshi.fanli.entity.bus.user.UserSystemCoupon;
 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.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;
@@ -44,6 +45,9 @@
 @Controller
 @RequestMapping("api/v1/user/coupon")
 public class UserCouponController {
+
+	@Resource(name = "taskExecutor")
+	private TaskExecutor executor;
 
 	@Resource
 	private ConfigService configService;
@@ -72,6 +76,8 @@
 	@Resource
 	private CommonOrderCountService commonOrderCountService;
 
+	@Resource
+	private ThreeSaleSerivce threeSaleSerivce;
 	
 	// 鏈�澶ф娊濂栨鏁�
 	private static int MAX_COUNT = 5;
@@ -120,6 +126,26 @@
 			data.put("result_list", JsonUtil.getApiCommonGson().toJson(resultList));
 
 			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()));
@@ -368,6 +394,7 @@
 			// 濂栧搧
 			int count = 0;
 			String prize = "";
+			String hasPrize = "";
 			Long couponId = null;
 			
 			if (uid == null) { // 鏈櫥褰�
@@ -387,7 +414,7 @@
 					JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璁惧涓嶅瓨鍦�"));
 					return;
 				}
-				int hasPrize = 0;
+				int countPrize = 0;
 				
 				List<DeviceLotteryRecord> list = deviceLotteryRecordService.listByPlatformAndDevice(platformType,
 						device);
@@ -395,25 +422,40 @@
 					JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(2, "鎶藉娆℃暟涓嶈冻"));
 					return;
 				} else if (list != null && list.size() < MAX_COUNT) { // 鎷ユ湁鎶藉鏈轰細
+					
 					for (DeviceLotteryRecord deviceLotteryRecord : list) {
 						Long systemCouponId = deviceLotteryRecord.getSystemCouponId();
 						if (systemCouponId != null) {
-							hasPrize++;
+							countPrize++;
 							couponId = systemCouponId;
 						}
+						
+						if (countPrize == 1) {
+							SystemCoupon coupon = systemCouponService.selectByPrimaryKey(systemCouponId);
+							hasPrize = coupon.getType().name();
+						}
 					}
+					
+					
 					count = MAX_COUNT - 1 - list.size();
+					
+					
 				} else {
 					count = MAX_COUNT - 1;
 				}
 
 				// 濂栧搧
-				prize = getLotteryPrize(MAX_COUNT, hasPrize, list.size(), couponId);
+				prize = getLotteryPrize(MAX_COUNT, countPrize, list.size(), couponId);
 				// 鎶戒腑
 				Long newCouponId = null;
 				if (prize != null && prize.trim().length() > 0) {
-					SystemCoupon coupon= systemCouponService.getCouponByType(prize);
-					newCouponId =coupon.getId();
+					// 宸插瓨鍦ㄦ鍒�
+					if (hasPrize.equals(prize)) {
+						prize = null;
+					} else {
+						SystemCoupon coupon= systemCouponService.getCouponByType(prize);
+						newCouponId = coupon.getId();
+					}
 				}
 				
 				// 鎻掑叆璁板綍
@@ -442,34 +484,21 @@
 				List<UserSystemCoupon> list = userSystemCouponService.getUserCouponBySource(uid, UserSystemCoupon.SOURCE_CHOUJIANG);
 				if (list != null && list.size() == 1) {
 					couponId = list.get(0).getSystemCoupon().getId();
+					SystemCoupon coupon = systemCouponService.selectByPrimaryKey(couponId);
+					hasPrize = coupon.getType().name();
 				}
 				
 				// 濂栧搧
 				prize = getLotteryPrize(MAX_COUNT, list.size(), MAX_COUNT- lotteryNewbies, couponId);
 				// 鎶戒腑
 				if (prize != null && prize.trim().length() > 0) {
-					SystemCoupon coupon= systemCouponService.getCouponByType(prize);
 					
-					String endDay = DateUtil.plusDay(coupon.getExpiryDay(), new Date());
-					SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
-					Date endTime = format.parse(endDay);
-					
-					int stateActivated = 1;
-					if (coupon.getType() == CouponTypeEnum.welfareFreeCoupon) {
-						stateActivated = 0;
+					if (hasPrize.equals(prize)) {
+						prize = null;
+					} else {
+						// 鎻掑叆鍒镐俊鎭�
+						userSystemCouponService.insertUserCoupon(uid, prize, UserSystemCoupon.SOURCE_CHOUJIANG);
 					}
-					
-					UserSystemCoupon userCoupon = new UserSystemCoupon();
-					userCoupon.setUid(uid);
-					userCoupon.setSource(UserSystemCoupon.SOURCE_CHOUJIANG);
-					userCoupon.setSystemCoupon(coupon);
-					userCoupon.setState(UserSystemCoupon.STATE_CAN_USE);
-					userCoupon.setStateActivated(stateActivated);
-					userCoupon.setStartTime(new Date());
-					userCoupon.setEndTime(endTime);
-					userCoupon.setCreateTime(new Date());
-					userCoupon.setUpdateTime(new Date());
-					userSystemCouponService.insertSelective(userCoupon);
 				}
 				
 				// 鍓╀綑娆℃暟
@@ -501,13 +530,13 @@
 	 * @param couponId 鍒竔d
 	 * @return
 	 */
-	public String getLotteryPrize(int maxCount, int hasPrize, int record, Long couponId) {
+	public String getLotteryPrize(int maxCount, int countPrize, int record, Long couponId) {
 		
 		String prize = null; 
 		String freeCoupon = CouponTypeEnum.welfareFreeCoupon.name(); // 绂忓埄鍏嶈垂鍒�
 		String rebateCoupon =  CouponTypeEnum.rebatePercentCoupon.name(); // 濂栧姳鍒�
 		
-		if (hasPrize == 1 && record == maxCount - 1) {
+		if (countPrize == 1 && record == maxCount - 1) {
 			// 鏈�鍚庝竴娆★細 鍙敹鍒颁竴涓鍝�
 			SystemCoupon systemCoupon = systemCouponService.selectByPrimaryKey(couponId);
 			if (systemCoupon != null) {
@@ -521,7 +550,7 @@
 				prize = rebateCoupon; // 濂栧姳鍒�
 			}
 			
-		} else if (hasPrize == 0 && record == maxCount - 2) {
+		} else if (countPrize == 0 && record == maxCount - 2) {
 			// 鍓�3娆℃病鏈夊鍔辨椂銆佸悗闈袱娆″繀涓�
 			long result = (1 + Math.round(Math.random() * (9)));
 			if (result <= 5) {
@@ -532,7 +561,7 @@
 			
 		} else { // 澶т簬3娆℃満浼�
 
-			if (hasPrize < 2) { // 涓嶈冻涓や釜濂栧搧
+			if (countPrize < 2) { // 涓嶈冻涓や釜濂栧搧
 				long result = (1 + Math.round(Math.random() * (9)));
 				if (result <= 3) {
 					prize = freeCoupon; // 绂忓埄鍏嶈垂鍒�
@@ -545,6 +574,12 @@
 		return prize;
 	}
 	
+	
+	
+	public static void main(String[] args) {
+		long result = (1 + Math.round(Math.random() * (9)));
+		System.out.println(result);
+	}
 
 
 	/**

--
Gitblit v1.8.0