liujie
2026-06-09 c96fbe6b0aeb413a17c429133ee6d81d138144b9
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpActicityController.java
@@ -14,6 +14,9 @@
import com.xiaopeng.common.core.constant.CacheConstants;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.common.log.annotation.AdminOperationLog;
import com.xiaopeng.common.log.enums.AdminBusinessType;
import com.xiaopeng.common.log.enums.AdminOperationType;
import com.xiaopeng.operation.service.*;
import com.xiaopeng.operation.service.IXpActicityCouponService;
import com.xiaopeng.operation.service.IXpActicityService;
@@ -99,35 +102,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();
    }
@@ -168,6 +175,12 @@
    @PostMapping("/v1/api/appUserCoupon/add")
    @ApiOperation(value = "添加活动", tags = {"管理后台-活动管理"}, response = XpCoupon.class)
    @AdminOperationLog(
            businessType = AdminBusinessType.ACTIVITY_MANAGEMENT,
            operationType = AdminOperationType.ADD,
            content = "添加活动",
            appendRequestData = true
    )
    public R<?> add(@RequestBody XpActivityDto dto) {
        service.save(dto);
        return R.ok();
@@ -176,6 +189,12 @@
    @PostMapping("/v1/api/appUserCoupon/{op}")
    @ApiOperation(value = "修改活动状态,release,pause,resume,stop,del", tags = {"管理后台-活动管理"}, response = XpCoupon.class)
    @AdminOperationLog(
            businessType = AdminBusinessType.ACTIVITY_MANAGEMENT,
            operationTypeExpression = "#p0 == 'release' ? T(com.xiaopeng.common.log.enums.AdminOperationType).RELEASE : (#p0 == 'del' ? T(com.xiaopeng.common.log.enums.AdminOperationType).DELETE : T(com.xiaopeng.common.log.enums.AdminOperationType).EDIT)",
            contentExpression = "'修改活动状态:' + #p0 + ',id=' + #p1",
            appendRequestData = true
    )
    public R<XpActivity> updateById(@PathVariable String op, @RequestParam Long id) {
        XpActivity activity = service.getById(id);
@@ -227,4 +246,17 @@
        }
        return R.ok(xpActicityStrategyService.getById(one.getActicityStrategyId()));
    }
    /**
     * 获取当前所有有效活动
     * @return
     */
    @GetMapping("/logan/inner/acticity/getAllEffectiveActivity")
    R<List<XpActivity>> getAllEffectiveActivity(){
        List<XpActivity> list = service.lambdaQuery().eq(XpActivity::getStatus, 2).list();
        return R.ok(list);
    }
}