MarketController.java 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. package com.zxyj.controller;
  2. import com.zxyj.common.Result;
  3. import com.zxyj.dto.ApplyPackageDTO;
  4. import com.zxyj.entity.TaskPlanInstance;
  5. import com.zxyj.entity.TaskPlanItem;
  6. import com.zxyj.entity.TaskTemplatePackage;
  7. import com.zxyj.entity.TaskTemplateItem;
  8. import com.zxyj.service.TaskPlanService;
  9. import com.zxyj.service.TaskTemplatePackageService;
  10. import io.swagger.v3.oas.annotations.Operation;
  11. import io.swagger.v3.oas.annotations.tags.Tag;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.web.bind.annotation.*;
  14. import java.util.List;
  15. import java.util.Map;
  16. @Tag(name = "套餐市场", description = "家长浏览、购买、应用套餐等接口")
  17. @RestController
  18. @RequestMapping("/api/market")
  19. public class MarketController {
  20. @Autowired
  21. private TaskTemplatePackageService packageService;
  22. @Autowired
  23. private TaskPlanService planService;
  24. /**
  25. * 获取公开套餐列表 (市场)
  26. */
  27. @Operation(summary = "获取公开套餐列表")
  28. @PostMapping("/packages")
  29. public Result<List<TaskTemplatePackage>> getPublicPackages(@RequestBody(required = false) Map<String, Object> params) {
  30. String category = params != null && params.get("category") != null ? params.get("category").toString() : null;
  31. List<TaskTemplatePackage> packages = packageService.getPublicPackages(category);
  32. return Result.success(packages);
  33. }
  34. /**
  35. * 获取套餐详情
  36. */
  37. @Operation(summary = "获取套餐详情")
  38. @PostMapping("/packages/{id}")
  39. public Result<TaskTemplatePackage> getPackageDetail(@PathVariable Long id) {
  40. TaskTemplatePackage pkg = packageService.getPackageById(id);
  41. return Result.success(pkg);
  42. }
  43. /**
  44. * 获取套餐的任务项列表
  45. */
  46. @Operation(summary = "获取套餐任务项列表")
  47. @PostMapping("/packages/{id}/items")
  48. public Result<List<TaskTemplateItem>> getPackageItems(@PathVariable Long id) {
  49. List<TaskTemplateItem> items = packageService.getPackageItems(id);
  50. return Result.success(items);
  51. }
  52. /**
  53. * 通过分享码获取套餐
  54. */
  55. @Operation(summary = "通过分享码获取套餐")
  56. @PostMapping("/share/{code}")
  57. public Result<TaskTemplatePackage> getPackageByShareCode(@PathVariable String code) {
  58. TaskTemplatePackage pkg = packageService.getPackageByShareCode(code);
  59. if (pkg == null) {
  60. return Result.error("分享码无效");
  61. }
  62. return Result.success(pkg);
  63. }
  64. /**
  65. * 购买并应用套餐
  66. */
  67. @Operation(summary = "购买并应用套餐")
  68. @PostMapping("/packages/{id}/purchase")
  69. public Result<TaskPlanInstance> purchasePackage(
  70. @PathVariable Long id,
  71. @RequestBody ApplyPackageDTO dto,
  72. @RequestAttribute("userId") Long userId,
  73. @RequestAttribute("familyId") Long familyId) {
  74. dto.setPackageId(id);
  75. TaskPlanInstance instance = planService.applyPackage(dto, familyId);
  76. return Result.success(instance);
  77. }
  78. /**
  79. * 获取我的任务计划列表
  80. */
  81. @Operation(summary = "获取我的任务计划")
  82. @PostMapping("/plans")
  83. public Result<List<TaskPlanInstance>> getMyPlans(@RequestAttribute("familyId") Long familyId) {
  84. List<TaskPlanInstance> plans = planService.getFamilyPlans(familyId);
  85. return Result.success(plans);
  86. }
  87. /**
  88. * 获取计划详情
  89. */
  90. @Operation(summary = "获取计划详情")
  91. @PostMapping("/plans/{id}")
  92. public Result<TaskPlanInstance> getPlanDetail(@PathVariable Long id) {
  93. TaskPlanInstance plan = planService.getPlanById(id);
  94. return Result.success(plan);
  95. }
  96. /**
  97. * 获取计划的任务项
  98. */
  99. @Operation(summary = "获取计划任务项")
  100. @PostMapping("/plans/{id}/items")
  101. public Result<List<TaskPlanItem>> getPlanItems(@PathVariable Long id) {
  102. List<TaskPlanItem> items = planService.getPlanItems(id);
  103. return Result.success(items);
  104. }
  105. /**
  106. * 取消计划
  107. */
  108. @Operation(summary = "取消计划")
  109. @PostMapping("/plans/{id}/cancel")
  110. public Result<Boolean> cancelPlan(@PathVariable Long id) {
  111. boolean success = planService.cancelPlan(id);
  112. return Result.success(success);
  113. }
  114. }