| | |
| | | public R<XpActivity> firstEnter(HttpServletRequest request) { |
| | | String uid = request.getHeader("XP-Uid"); |
| | | ValueOperations<String, String> ops = redisTemplate.opsForValue(); |
| | | XpActivity activity = service.activiting(Long.valueOf(uid)); |
| | | if (activity != null) { |
| | | List<XpAppUserCoupon> couponList = appUserCouponClient.getXpAppUserCoupon(activity.getId()).getData(); |
| | | Set<Long> longSet = couponList.stream().map(XpAppUserCoupon::getCouponId).collect(Collectors.toSet()); |
| | | if (longSet.isEmpty()) { |
| | | return R.ok(); |
| | | } |
| | | List<XpCoupon> xpCoupons1 = xpCouponService.listByIds(longSet); |
| | | List<CouponVo> couponVos = new ArrayList<>(); |
| | | for (XpCoupon xpCoupon : xpCoupons1) { |
| | | XpAppUserCoupon xpAppUserCoupon = couponList.stream().filter(s -> s.getCouponId().equals(xpCoupon.getId())).findFirst().get(); |
| | | CouponVo vo = new CouponVo(); |
| | | vo.setId(xpCoupon.getId()); |
| | | vo.setConditionalAmount(xpCoupon.getConditionalAmount()); |
| | | vo.setAmount(xpCoupon.getAmount()); |
| | | vo.setCouponType(xpCoupon.getCouponType()); |
| | | vo.setCouponName(xpCoupon.getCouponName()); |
| | | vo.setCouponDesc(xpCoupon.getCouponDescription()); |
| | | vo.setEndTime(xpAppUserCoupon.getExpirationTime().toString()); |
| | | long count = couponList.stream().filter(s -> s.getCouponId().equals(xpCoupon.getId())).count(); |
| | | vo.setQuantity(count); |
| | | couponVos.add(vo); |
| | | } |
| | | List<XpActivity> activityList = service.activiting(Long.valueOf(uid)); |
| | | for (XpActivity activity : activityList) { |
| | | Duration duration = Duration.between(LocalDateTime.now(), activity.getEndTime()); |
| | | Boolean isFirst = ops.setIfAbsent(CacheConstants.firstEnterActivity(String.valueOf(activity.getId()), uid), "1", duration); |
| | | activity.setIsFirst(isFirst); |
| | | activity.setCoupons(couponVos); |
| | | if(isFirst){ |
| | | List<XpAppUserCoupon> couponList = appUserCouponClient.getXpAppUserCoupon(activity.getId()).getData(); |
| | | Set<Long> longSet = couponList.stream().map(XpAppUserCoupon::getCouponId).collect(Collectors.toSet()); |
| | | if (longSet.isEmpty()) { |
| | | return R.ok(); |
| | | } |
| | | List<XpCoupon> xpCoupons1 = xpCouponService.listByIds(longSet); |
| | | List<CouponVo> couponVos = new ArrayList<>(); |
| | | for (XpCoupon xpCoupon : xpCoupons1) { |
| | | XpAppUserCoupon xpAppUserCoupon = couponList.stream().filter(s -> s.getCouponId().equals(xpCoupon.getId())).findFirst().get(); |
| | | CouponVo vo = new CouponVo(); |
| | | vo.setId(xpCoupon.getId()); |
| | | vo.setConditionalAmount(xpCoupon.getConditionalAmount()); |
| | | vo.setAmount(xpCoupon.getAmount()); |
| | | vo.setCouponType(xpCoupon.getCouponType()); |
| | | vo.setCouponName(xpCoupon.getCouponName()); |
| | | vo.setCouponDesc(xpCoupon.getCouponDescription()); |
| | | vo.setEndTime(xpAppUserCoupon.getExpirationTime().toString()); |
| | | long count = couponList.stream().filter(s -> s.getCouponId().equals(xpCoupon.getId())).count(); |
| | | vo.setQuantity(count); |
| | | couponVos.add(vo); |
| | | } |
| | | |
| | | activity.setIsFirst(isFirst); |
| | | activity.setCoupons(couponVos); |
| | | return R.ok(activity); |
| | | } |
| | | } |
| | | return R.ok(activity); |
| | | return R.ok(); |
| | | } |
| | | |
| | | |