package com.xuekairui.activity.controller; import com.xuekairui.activity.dto.ActivityCheckinCycleStatusResponse; import com.xuekairui.activity.dto.ActivityInviteStatusResponse; import com.xuekairui.activity.dto.ActivityLotteryResultResponse; import com.xuekairui.activity.dto.ActivityLotteryStatusResponse; import com.xuekairui.activity.entity.ActivityLotteryRecord; import com.xuekairui.activity.service.ActivityCheckinCycleService; import com.xuekairui.activity.service.ActivityInviteService; import com.xuekairui.activity.service.ActivityLotteryService; import com.xuekairui.common.Result; import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; import java.util.List; /** * 活动接口(用户端) *

* 统一暴露邀请有礼、签到送会员、比价抽奖三类活动的用户端能力。 */ @RestController @RequestMapping("/api/activity") @RequiredArgsConstructor public class ActivityController { private final ActivityInviteService activityInviteService; private final ActivityCheckinCycleService activityCheckinCycleService; private final ActivityLotteryService activityLotteryService; // ========== 邀请有礼 ========== /** * 邀请有礼活动状态(含邀请人已获奖励次数、剩余次数) * GET /api/activity/invite/status */ @GetMapping("/invite/status") public Result inviteStatus(HttpServletRequest request) { Long userId = (Long) request.getAttribute("userId"); return Result.success(activityInviteService.getStatus(userId)); } // ========== 签到送会员 ========== /** * 签到送会员周期状态(当前周期签到天数、是否达标、累计领取次数、剩余次数) * GET /api/activity/checkin-cycle/status */ @GetMapping("/checkin-cycle/status") public Result checkinCycleStatus(HttpServletRequest request) { Long userId = (Long) request.getAttribute("userId"); return Result.success(activityCheckinCycleService.getStatus(userId)); } // ========== 比价抽奖 ========== /** * 比价抽奖活动状态(今日可用机会、资格) * GET /api/activity/lottery/status */ @GetMapping("/lottery/status") public Result lotteryStatus(HttpServletRequest request) { Long userId = (Long) request.getAttribute("userId"); return Result.success(activityLotteryService.getStatus(userId)); } /** * 执行抽奖 * POST /api/activity/lottery/draw */ @PostMapping("/lottery/draw") public Result draw(HttpServletRequest request) { Long userId = (Long) request.getAttribute("userId"); return Result.success(activityLotteryService.draw(userId)); } /** * 我的抽奖记录 * GET /api/activity/lottery/records?limit=20 */ @GetMapping("/lottery/records") public Result> lotteryRecords(HttpServletRequest request, @RequestParam(required = false) Integer limit) { Long userId = (Long) request.getAttribute("userId"); return Result.success(activityLotteryService.listMyRecords(userId, limit)); } }