From 651a15c78f668bef3859d9ed1bb7ad0b669d3600 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期五, 03 七月 2020 17:52:07 +0800 Subject: [PATCH] 多APP优化 --- fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserCouponController.java | 387 +++++++++++++++++++++---------------------------------- 1 files changed, 147 insertions(+), 240 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserCouponController.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserCouponController.java index 58f80f4..7c8dd1f 100644 --- a/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserCouponController.java +++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserCouponController.java @@ -1,8 +1,8 @@ package com.yeshi.fanli.controller.client.v1; import java.io.PrintWriter; +import java.math.BigDecimal; import java.util.ArrayList; -import java.util.Date; import java.util.List; import java.util.Map; @@ -14,13 +14,13 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.yeshi.utils.JsonUtil; +import com.yeshi.fanli.dto.pdd.PDDGoodsDetail; 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.UserLotteryRecordException; +import com.yeshi.fanli.entity.jd.JDGoods; +import com.yeshi.fanli.entity.system.ConfigKeyEnum; +import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; +import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; import com.yeshi.fanli.exception.user.UserSystemCouponException; import com.yeshi.fanli.service.inter.config.ConfigService; import com.yeshi.fanli.service.inter.config.SystemCouponService; @@ -28,10 +28,18 @@ 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.service.inter.user.invite.UserInviteService; import com.yeshi.fanli.service.inter.user.vip.UserVIPInfoService; import com.yeshi.fanli.util.Constant; +import com.yeshi.fanli.util.RedisManager; +import com.yeshi.fanli.util.StringUtil; +import com.yeshi.fanli.util.cache.JDGoodsCacheUtil; +import com.yeshi.fanli.util.cache.PinDuoDuoCacheUtil; +import com.yeshi.fanli.util.jd.JDUtil; +import com.yeshi.fanli.util.pinduoduo.PinDuoDuoUtil; +import com.yeshi.fanli.util.taobao.TaoBaoUtil; +import com.yeshi.fanli.vo.homemodule.BannerVO; import com.yeshi.fanli.vo.user.UserSystemCouponRecordVO; import com.yeshi.fanli.vo.user.UserSystemCouponVO; @@ -74,13 +82,25 @@ @Resource private UserInfoExtraService userInfoExtraService; - - @Resource - private UserLotteryRecordService userLotteryRecordService; - @Resource private UserVIPInfoService userVIPInfoService; - + + @Resource + private UserInviteService userInviteService; + + + @Resource + private RedisManager redisManager; + + @Resource + private JDGoodsCacheUtil jdGoodsCacheUtil; + + @Resource + private PinDuoDuoCacheUtil pinDuoDuoCacheUtil; + + + + /** * 鐢ㄦ埛鍒稿垪琛ㄦ煡璇� * @@ -104,7 +124,7 @@ // 绂忓埄涓績鍥剧墖 String topPicture = null; if (page == 1) { - List<SwiperPicture> listswiper = swiperPictureService.getByBannerCard("welfare_top"); + List<BannerVO> listswiper = swiperPictureService.getByBannerCardAndVersion("welfare_top",acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion()),acceptData.getSystem()); if (listswiper != null && listswiper.size() > 0) { topPicture = listswiper.get(0).getSrc(); } @@ -178,23 +198,20 @@ try { 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("content", configService.getValue(ConfigKeyEnum.freeCouponTip.getKey(),acceptData.getSystem())); dataTip.put("fontColor", "#F14242"); JSONObject data = new JSONObject(); - data.put("helpLink", configService.get("free_coupon_help")); + data.put("helpLink", configService.getValue(ConfigKeyEnum.freeCouponHelp.getKey(),acceptData.getSystem())); 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) { @@ -203,11 +220,13 @@ } } + + + /** * 鍏嶅崟鍒镐娇鐢ㄨ褰� 浠ュ強鐘舵�佷慨鏀� * * @param acceptData - * @param page * @param uid * @param out */ @@ -257,7 +276,7 @@ } JSONObject data = new JSONObject(); - data.put("helpLink", configService.get("reward_coupon_help")); + data.put("helpLink", configService.getValue(ConfigKeyEnum.rewardCouponHelp.getKey(),acceptData.getSystem())); data.put("count", resultList.size()); data.put("result_list", JsonUtil.getApiCommonGson().toJson(resultList)); @@ -279,31 +298,30 @@ * @param uid * @param out */ - @RequestMapping(value = "useRewardCoupon", method = RequestMethod.POST) - public void useRewardCoupon(AcceptData acceptData, Long uid, Long cid, String orderNo, Integer goodsType, PrintWriter out) { - + @RequestMapping(value = "useRewardCoupon") + public void useRewardCoupon(String callback, AcceptData acceptData, Long uid, Long cid, String orderNo, Integer goodsType, PrintWriter out) { if (uid == null) { - out.print(JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�")); - return; - } - - if (userVIPInfoService.isVIP(uid)) { - out.print(JsonUtil.loadFalseResult("瓒呯骇浼氬憳涓嶅彲浣跨敤濂栧姳鍒�")); + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�")); return; } + // 褰撳墠鐢ㄦ埛鏄惁VIP + boolean vip = userInviteService.verifyVIP(uid); + if (vip) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("浼氬憳涓嶅彲浣跨敤濂栧姳鍒�")); + return; + } if (goodsType == null || goodsType > 3 || goodsType < 1) { goodsType = Constant.SOURCE_TYPE_TAOBAO; } - try { UserSystemCouponService.useOrderCoupon(uid, cid, orderNo, goodsType, acceptData); JSONObject data = commonOrderService.getRewardJumpInfo(orderNo, goodsType); - out.print(JsonUtil.loadTrueResult(data)); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); } catch (UserSystemCouponException e) { - out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg())); + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getCode(), e.getMsg())); } catch (Exception e) { - out.print(JsonUtil.loadFalseResult(1, "浣跨敤澶辫触")); + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "浣跨敤澶辫触")); e.printStackTrace(); } } @@ -359,225 +377,114 @@ 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 + * 鏌ヨ鍏嶅崟鍒� + * @param acceptData + * @param uid + * @param auctionId + * @param out */ - public JSONObject getDevicePrize(List<DeviceLotteryRecord> list, String device, int platformType) { - int count = 0; - int countPrize = 0; - Long couponId = null; + @RequestMapping(value = "getFreeCouponList", method = RequestMethod.POST) + public void getFreeCouponList(AcceptData acceptData, Long uid, String goodsId, Integer goodsType, PrintWriter out) { + if (uid == null) { + out.print(JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�")); + return; + } + + if (goodsType == null || StringUtil.isNullOrEmpty(goodsId)) { + out.print(JsonUtil.loadFalseResult("鍙傛暟涓嶅畬鏁�")); + return; + } - 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; + List<UserSystemCouponVO> list = UserSystemCouponService.getFreeCouponList(uid); + if (list == null) + list = new ArrayList<>(); + + + if (list.size() > 0) { + boolean state = false; + BigDecimal priceLimit = BigDecimal.valueOf(9.9); + switch(goodsType) { + case Constant.SOURCE_TYPE_TAOBAO: + state = checkCanUsedTB(Long.parseLong(goodsId), priceLimit); + break; + case Constant.SOURCE_TYPE_JD: + state = checkCanUsedTB(Long.parseLong(goodsId), priceLimit); + break; + case Constant.SOURCE_TYPE_PDD: + state = checkCanUsedTB(Long.parseLong(goodsId), priceLimit); + break; + default: + break; + } + + // 涓嶈兘浣跨敤 + if (!state) { + for (UserSystemCouponVO userCouponVO : list) { + userCouponVO.setState(0); + userCouponVO.setCouponPicture(userCouponVO.getCouponPictureInvalid()); + Map<String, Object> map = userCouponVO.getRemainDays(); + if (map != null) { + map.put("fontColor", "#CCCCCC"); + } + userCouponVO.setRemainDays(map); } - } - 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); + JSONObject dataTip = new JSONObject(); + dataTip.put("content", configService.getValue(ConfigKeyEnum.freeCouponTip.getKey(),acceptData.getSystem())); + dataTip.put("fontColor", "#F14242"); - return data; + JSONObject data = new JSONObject(); + data.put("helpLink", configService.getValue(ConfigKeyEnum.freeCouponHelp.getKey(),acceptData.getSystem())); + data.put("tip", dataTip); + data.put("count", list.size()); + data.put("list", JsonUtil.getApiCommonGson().toJson(list)); + out.print(JsonUtil.loadTrueResult(data)); + } + + + + private boolean checkCanUsedTB(Long goodsId, BigDecimal priceLimit) { + try { + TaoBaoGoodsBrief goods = redisManager.getTaoBaoGoodsBrief(goodsId); + if (goods == null) + return false; + + BigDecimal quanPrice = TaoBaoUtil.getAfterUseCouplePrice(goods); + if (quanPrice.compareTo(priceLimit) <= 0) + return true; + } catch (TaobaoGoodsDownException e) { + e.printStackTrace(); + } + return false; } - /** - * 鑾峰彇鎶藉娆℃暟- 澶╁ぉ鎶藉鍔卞埜 - * - * @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(); - } + private boolean checkCanUsedJD(Long goodsId, BigDecimal priceLimit) { + JDGoods goods = jdGoodsCacheUtil.getGoodsInfo(goodsId); + if (goods == null) + return false; + BigDecimal quanPrice = JDUtil.getQuanPrice(goods); + if (quanPrice.compareTo(priceLimit) <= 0) + return true; + + return false; } - - /** - * 鑾峰彇鎶藉缁撴灉 - 澶╁ぉ鎶藉鍔卞埜` - * @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(); - } + + private boolean checkCanUsedPDD(Long goodsId, BigDecimal priceLimit) { + PDDGoodsDetail goods = pinDuoDuoCacheUtil.getGoodsInfo(goodsId); + if (goods == null) + return false; + BigDecimal quanPrice = PinDuoDuoUtil.getQuanPrice(goods); + if (quanPrice.compareTo(priceLimit) <= 0) + return true; + + return false; } - + } -- Gitblit v1.8.0