From 0efda3a0ac631642dfe879487d7b93415363bbd4 Mon Sep 17 00:00:00 2001
From: yujian <yujian>
Date: 星期一, 13 五月 2019 11:41:12 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master_develop
---
fanli/src/main/java/com/yeshi/fanli/controller/client/UserCouponController.java | 440 +++++++++++++++++++++++-------------------------------
1 files changed, 188 insertions(+), 252 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 d90dc8e..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,211 +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, 0, 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();
- }
-
- // 鎶藉
- prize = getLotteryPrize(Constant.MAX_COUNT_LOTTERY_NEWBIES, 0, 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