SearchController.java 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package com.cyksj.web.controller.search;
  2. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  3. import com.cyksj.dto.Result;
  4. import com.cyksj.enums.GatewayResponse;
  5. import com.cyksj.mapper.SearchHistoryMapper;
  6. import com.cyksj.model.entity.SearchHistory;
  7. import com.cyksj.model.views.GoodsFrontListView;
  8. import com.cyksj.model.views.InformationListView;
  9. import com.cyksj.model.views.SearchView;
  10. import com.cyksj.service.information.InformationService;
  11. import com.cyksj.web.util.StpUserUtil;
  12. import com.ejlchina.searcher.BeanSearcher;
  13. import com.ejlchina.searcher.operator.Contain;
  14. import com.ejlchina.searcher.param.Operator;
  15. import com.ejlchina.searcher.util.MapUtils;
  16. import lombok.RequiredArgsConstructor;
  17. import lombok.extern.slf4j.Slf4j;
  18. import org.springframework.web.bind.annotation.*;
  19. import javax.servlet.http.HttpServletRequest;
  20. import java.util.List;
  21. /**
  22. * @author zwhui
  23. * @date 2023/10/12 17:13
  24. */
  25. @Slf4j
  26. @RestController
  27. @RequestMapping("/applets/search")
  28. @RequiredArgsConstructor
  29. public class SearchController {
  30. private final BeanSearcher beanSearcher;
  31. private final InformationService informationService;
  32. private final SearchHistoryMapper searchHistoryMapper;
  33. private final HttpServletRequest request;
  34. /**
  35. * 查询搜索结果
  36. */
  37. @GetMapping("/get")
  38. public Result<SearchView> search(String name){
  39. Long userId = StpUserUtil.getUserIdAfterLogin();
  40. if (userId != null){
  41. SearchHistory searchHistory = new SearchHistory();
  42. searchHistory.setName(name);
  43. searchHistory.setUserId(userId);
  44. searchHistoryMapper.insert(searchHistory);
  45. }
  46. List<GoodsFrontListView> goodsList = beanSearcher.searchAll(GoodsFrontListView.class, MapUtils.flatBuilder(request.getParameterMap()).field(GoodsFrontListView::getTitle,name).op(Operator.Contain).build());
  47. List<InformationListView> informationList = informationService.getInformationByTitle(name);
  48. SearchView view = new SearchView();
  49. view.setGoodsList(goodsList);
  50. view.setInformationList(informationList);
  51. return GatewayResponse.SUCCESS.newBuilder().toResult(view);
  52. }
  53. /**
  54. * 查询搜索历史
  55. */
  56. @GetMapping("/get/searchHistory")
  57. public Result<List<SearchHistory>> getSearchHistory(){
  58. Long userId = StpUserUtil.getUserIdAfterLogin();
  59. if (userId != null){
  60. return GatewayResponse.SUCCESS.newBuilder().toResult(searchHistoryMapper.selectList(Wrappers.lambdaQuery(SearchHistory.class).eq(SearchHistory::getUserId,userId).orderByDesc(SearchHistory::getCreatedTime).last("limit 10")));
  61. }
  62. return GatewayResponse.SUCCESS.newBuilder().toResult();
  63. }
  64. /**
  65. * 删除搜索历史
  66. */
  67. @DeleteMapping("/delete/history")
  68. private Result<Void> delHistory(Long id){
  69. long userId = StpUserUtil.getLoginIdAsLong();
  70. searchHistoryMapper.delete(Wrappers.lambdaQuery(SearchHistory.class).eq(id != null,SearchHistory::getId,id).eq(SearchHistory::getUserId,userId));
  71. return GatewayResponse.SUCCESS.newBuilder().toResult();
  72. }
  73. }