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