package com.xuekairui.user.controller; import com.xuekairui.common.Result; import com.xuekairui.user.dto.SearchQueryRequest; import com.xuekairui.user.dto.SearchResultResponse; import com.xuekairui.user.service.DrugSearchService; import com.xuekairui.user.service.MockDrugPriceService; import jakarta.servlet.http.HttpServletRequest; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import java.util.List; /** * 药品搜索控制器(比价核心) */ @Slf4j @RestController @RequestMapping("/api/search") @RequiredArgsConstructor public class DrugSearchController { private final DrugSearchService drugSearchService; private final MockDrugPriceService mockDrugPriceService; /** * 药品搜索比价 * 消耗 1 次爬虫配额,返回各平台报价 */ @PostMapping("/query") public Result search( HttpServletRequest request, @Valid @RequestBody SearchQueryRequest body) { Long userId = (Long) request.getAttribute("userId"); SearchResultResponse result = drugSearchService.search( userId, body.getKeyword(), body.getPlatforms()); return Result.success(result); } /** * 获取搜索建议(热门药品列表,无需认证) */ @GetMapping("/suggestions") public Result> suggestions() { return Result.success(mockDrugPriceService.getSuggestions()); } }