DrugSearchController.java 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package com.xuekairui.user.controller;
  2. import com.xuekairui.common.Result;
  3. import com.xuekairui.user.dto.SearchQueryRequest;
  4. import com.xuekairui.user.dto.SearchResultResponse;
  5. import com.xuekairui.user.service.DrugSearchService;
  6. import com.xuekairui.user.service.MockDrugPriceService;
  7. import jakarta.servlet.http.HttpServletRequest;
  8. import jakarta.validation.Valid;
  9. import lombok.RequiredArgsConstructor;
  10. import lombok.extern.slf4j.Slf4j;
  11. import org.springframework.web.bind.annotation.*;
  12. import java.util.List;
  13. /**
  14. * 药品搜索控制器(比价核心)
  15. */
  16. @Slf4j
  17. @RestController
  18. @RequestMapping("/api/search")
  19. @RequiredArgsConstructor
  20. public class DrugSearchController {
  21. private final DrugSearchService drugSearchService;
  22. private final MockDrugPriceService mockDrugPriceService;
  23. /**
  24. * 药品搜索比价
  25. * 消耗 1 次爬虫配额,返回各平台报价
  26. */
  27. @PostMapping("/query")
  28. public Result<SearchResultResponse> search(
  29. HttpServletRequest request,
  30. @Valid @RequestBody SearchQueryRequest body) {
  31. Long userId = (Long) request.getAttribute("userId");
  32. SearchResultResponse result = drugSearchService.search(
  33. userId, body.getKeyword(), body.getPlatforms());
  34. return Result.success(result);
  35. }
  36. /**
  37. * 获取搜索建议(热门药品列表,无需认证)
  38. */
  39. @GetMapping("/suggestions")
  40. public Result<List<String>> suggestions() {
  41. return Result.success(mockDrugPriceService.getSuggestions());
  42. }
  43. }