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