RecommendationController.java 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package com.etotem.cfc.controller.ai;
  2. import com.etotem.cfc.common.Result;
  3. import com.etotem.cfc.dto.RecommendationQuery;
  4. import com.etotem.cfc.dto.RecommendationResult;
  5. import com.etotem.cfc.service.RecommendationService;
  6. import io.swagger.v3.oas.annotations.Operation;
  7. import io.swagger.v3.oas.annotations.tags.Tag;
  8. import org.springframework.web.bind.annotation.PathVariable;
  9. import org.springframework.web.bind.annotation.PostMapping;
  10. import org.springframework.web.bind.annotation.RequestBody;
  11. import org.springframework.web.bind.annotation.RequestMapping;
  12. import org.springframework.web.bind.annotation.RestController;
  13. import javax.annotation.Resource;
  14. import javax.servlet.http.HttpServletRequest;
  15. import java.util.List;
  16. import java.util.Map;
  17. @Tag(name = "营养推荐", description = "精准营养推荐搜索")
  18. @RestController
  19. @RequestMapping("/api/recommend")
  20. public class RecommendationController {
  21. @Resource
  22. private RecommendationService recommendationService;
  23. @Operation(summary = "按营养标签搜索推荐内容")
  24. @PostMapping("/search")
  25. public Result<List<RecommendationResult>> search(
  26. @RequestBody RecommendationQuery query) {
  27. List<RecommendationResult> results = recommendationService.search(query);
  28. return Result.success(results);
  29. }
  30. @Operation(summary = "按维度获取匹配商品")
  31. @PostMapping("/dimension-products")
  32. public Result<List<RecommendationResult>> dimensionProducts(
  33. @RequestBody Map<String, Object> params) {
  34. String dimensionCode = (String) params.get("dimensionCode");
  35. Long familyId = params.get("familyId") != null ? ((Number) params.get("familyId")).longValue() : null;
  36. Integer limit = params.get("limit") != null ? ((Number) params.get("limit")).intValue() : null;
  37. List<RecommendationResult> results = recommendationService.getDimensionProducts(dimensionCode, familyId, limit);
  38. return Result.success(results);
  39. }
  40. @Operation(summary = "获取用户复购提醒列表")
  41. @PostMapping("/repurchase-reminders")
  42. public Result<List<RecommendationResult>> repurchaseReminders(
  43. HttpServletRequest request) {
  44. Long userId = (Long) request.getAttribute("userId");
  45. List<RecommendationResult> results = recommendationService.getRepurchaseReminders(userId);
  46. return Result.success(results);
  47. }
  48. @Operation(summary = "标记复购提醒已点击")
  49. @PostMapping("/repurchase-reminder/{id}/click")
  50. public Result<?> clickRepurchaseReminder(
  51. @PathVariable Long id) {
  52. recommendationService.markRepurchaseClicked(id);
  53. return Result.success(null);
  54. }
  55. }