puzhibing
2026-04-30 4a9ca8e24317da12e3dd07d93128a5d74c8103b8
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpActicityController.java
@@ -99,35 +99,39 @@
    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();
    }