ActivityController.java 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package com.xuekairui.activity.controller;
  2. import com.xuekairui.activity.dto.ActivityCheckinCycleStatusResponse;
  3. import com.xuekairui.activity.dto.ActivityInviteStatusResponse;
  4. import com.xuekairui.activity.dto.ActivityLotteryResultResponse;
  5. import com.xuekairui.activity.dto.ActivityLotteryStatusResponse;
  6. import com.xuekairui.activity.entity.ActivityLotteryRecord;
  7. import com.xuekairui.activity.service.ActivityCheckinCycleService;
  8. import com.xuekairui.activity.service.ActivityInviteService;
  9. import com.xuekairui.activity.service.ActivityLotteryService;
  10. import com.xuekairui.common.Result;
  11. import jakarta.servlet.http.HttpServletRequest;
  12. import lombok.RequiredArgsConstructor;
  13. import org.springframework.web.bind.annotation.*;
  14. import java.util.List;
  15. /**
  16. * 活动接口(用户端)
  17. * <p>
  18. * 统一暴露邀请有礼、签到送会员、比价抽奖三类活动的用户端能力。
  19. */
  20. @RestController
  21. @RequestMapping("/api/activity")
  22. @RequiredArgsConstructor
  23. public class ActivityController {
  24. private final ActivityInviteService activityInviteService;
  25. private final ActivityCheckinCycleService activityCheckinCycleService;
  26. private final ActivityLotteryService activityLotteryService;
  27. // ========== 邀请有礼 ==========
  28. /**
  29. * 邀请有礼活动状态(含邀请人已获奖励次数、剩余次数)
  30. * GET /api/activity/invite/status
  31. */
  32. @GetMapping("/invite/status")
  33. public Result<ActivityInviteStatusResponse> inviteStatus(HttpServletRequest request) {
  34. Long userId = (Long) request.getAttribute("userId");
  35. return Result.success(activityInviteService.getStatus(userId));
  36. }
  37. // ========== 签到送会员 ==========
  38. /**
  39. * 签到送会员周期状态(当前周期签到天数、是否达标、累计领取次数、剩余次数)
  40. * GET /api/activity/checkin-cycle/status
  41. */
  42. @GetMapping("/checkin-cycle/status")
  43. public Result<ActivityCheckinCycleStatusResponse> checkinCycleStatus(HttpServletRequest request) {
  44. Long userId = (Long) request.getAttribute("userId");
  45. return Result.success(activityCheckinCycleService.getStatus(userId));
  46. }
  47. // ========== 比价抽奖 ==========
  48. /**
  49. * 比价抽奖活动状态(今日可用机会、资格)
  50. * GET /api/activity/lottery/status
  51. */
  52. @GetMapping("/lottery/status")
  53. public Result<ActivityLotteryStatusResponse> lotteryStatus(HttpServletRequest request) {
  54. Long userId = (Long) request.getAttribute("userId");
  55. return Result.success(activityLotteryService.getStatus(userId));
  56. }
  57. /**
  58. * 执行抽奖
  59. * POST /api/activity/lottery/draw
  60. */
  61. @PostMapping("/lottery/draw")
  62. public Result<ActivityLotteryResultResponse> draw(HttpServletRequest request) {
  63. Long userId = (Long) request.getAttribute("userId");
  64. return Result.success(activityLotteryService.draw(userId));
  65. }
  66. /**
  67. * 我的抽奖记录
  68. * GET /api/activity/lottery/records?limit=20
  69. */
  70. @GetMapping("/lottery/records")
  71. public Result<List<ActivityLotteryRecord>> lotteryRecords(HttpServletRequest request,
  72. @RequestParam(required = false) Integer limit) {
  73. Long userId = (Long) request.getAttribute("userId");
  74. return Result.success(activityLotteryService.listMyRecords(userId, limit));
  75. }
  76. }