Search in sources :

Example 31 with Page

use of com.baomidou.mybatisplus.extension.plugins.pagination.Page in project waynboot-mall by wayn111.

the class SearchController method result.

@GetMapping("result")
public R result(SearchVO searchVO) throws IOException {
    Long memberId = MobileSecurityUtils.getUserId();
    String keyword = searchVO.getKeyword();
    Boolean filterNew = searchVO.getFilterNew();
    Boolean filterHot = searchVO.getFilterHot();
    Boolean isNew = searchVO.getIsNew();
    Boolean isHot = searchVO.getIsHot();
    Boolean isPrice = searchVO.getIsPrice();
    Boolean isSales = searchVO.getIsSales();
    String orderBy = searchVO.getOrderBy();
    SearchHistory searchHistory = new SearchHistory();
    if (memberId != null && StringUtils.isNotEmpty(keyword)) {
        searchHistory.setCreateTime(LocalDateTime.now());
        searchHistory.setUserId(memberId);
        searchHistory.setKeyword(keyword);
    }
    Page<SearchVO> page = getPage();
    // 查询包含关键字、已上架商品
    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
    BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
    MatchQueryBuilder matchFiler = QueryBuilders.matchQuery("isOnSale", true);
    MatchQueryBuilder matchQuery = QueryBuilders.matchQuery("name", keyword);
    MatchPhraseQueryBuilder matchPhraseQueryBuilder = QueryBuilders.matchPhraseQuery("keyword", keyword);
    boolQueryBuilder.filter(matchFiler).should(matchQuery).should(matchPhraseQueryBuilder).minimumShouldMatch(1);
    searchSourceBuilder.timeout(new TimeValue(10, TimeUnit.SECONDS));
    // 按是否新品排序
    if (isNew) {
        searchSourceBuilder.sort(new FieldSortBuilder("isNew").order(SortOrder.DESC));
    }
    // 按是否热品排序
    if (isHot) {
        searchSourceBuilder.sort(new FieldSortBuilder("isHot").order(SortOrder.DESC));
    }
    // 按价格高低排序
    if (isPrice) {
        searchSourceBuilder.sort(new FieldSortBuilder("retailPrice").order("asc".equals(orderBy) ? SortOrder.ASC : SortOrder.DESC));
    }
    // 按销量排序
    if (isSales) {
        searchSourceBuilder.sort(new FieldSortBuilder("sales").order(SortOrder.DESC));
    }
    // 筛选新品
    if (filterNew) {
        MatchQueryBuilder filterQuery = QueryBuilders.matchQuery("isNew", true);
        boolQueryBuilder.filter(filterQuery);
    }
    // 筛选热品
    if (filterHot) {
        MatchQueryBuilder filterQuery = QueryBuilders.matchQuery("isHot", true);
        boolQueryBuilder.filter(filterQuery);
    }
    searchSourceBuilder.query(boolQueryBuilder);
    searchSourceBuilder.from((int) (page.getCurrent() - 1) * (int) page.getSize());
    searchSourceBuilder.size((int) page.getSize());
    List<JSONObject> list = elasticDocument.search("goods", searchSourceBuilder, JSONObject.class);
    List<Integer> goodsIdList = list.stream().map(jsonObject -> (Integer) jsonObject.get("id")).collect(Collectors.toList());
    if (goodsIdList.size() == 0) {
        return R.success().add("goods", Collections.emptyList());
    }
    // 根据es中返回商品ID查询商品详情并保持es中的排序
    List<Goods> goodsList = iGoodsService.searchResult(goodsIdList);
    Map<Integer, Goods> goodsMap = goodsList.stream().collect(Collectors.toMap(goods -> Math.toIntExact(goods.getId()), o -> o));
    List<Goods> returnGoodsList = new ArrayList<>(goodsList.size());
    for (Integer goodsId : goodsIdList) {
        returnGoodsList.add(goodsMap.get(goodsId));
    }
    if (CollectionUtils.isNotEmpty(goodsList)) {
        AsyncManager.me().execute(new TimerTask() {

            @Override
            public void run() {
                searchHistory.setHasGoods(true);
                iSearchHistoryService.save(searchHistory);
            }
        });
    }
    return R.success().add("goods", returnGoodsList);
}
Also used : MatchQueryBuilder(org.elasticsearch.index.query.MatchQueryBuilder) java.util(java.util) Keyword(com.wayn.common.core.domain.shop.Keyword) SearchHistory(com.wayn.mobile.api.domain.SearchHistory) ElasticDocument(com.wayn.data.elastic.manager.ElasticDocument) LocalDateTime(java.time.LocalDateTime) Autowired(org.springframework.beans.factory.annotation.Autowired) RequestMapping(org.springframework.web.bind.annotation.RequestMapping) QueryBuilders(org.elasticsearch.index.query.QueryBuilders) StringUtils(org.apache.commons.lang3.StringUtils) CollectionUtils(org.apache.commons.collections4.CollectionUtils) NotEmpty(javax.validation.constraints.NotEmpty) BaseController(com.wayn.common.base.controller.BaseController) TimeValue(org.elasticsearch.common.unit.TimeValue) SearchSourceBuilder(org.elasticsearch.search.builder.SearchSourceBuilder) GetMapping(org.springframework.web.bind.annotation.GetMapping) IGoodsService(com.wayn.common.core.service.shop.IGoodsService) AsyncManager(com.wayn.mobile.framework.manager.thread.AsyncManager) QueryWrapper(com.baomidou.mybatisplus.core.conditions.query.QueryWrapper) SearchVO(com.wayn.common.core.domain.vo.SearchVO) IKeywordService(com.wayn.common.core.service.shop.IKeywordService) MobileSecurityUtils(com.wayn.mobile.framework.security.util.MobileSecurityUtils) R(com.wayn.common.util.R) IOException(java.io.IOException) FieldSortBuilder(org.elasticsearch.search.sort.FieldSortBuilder) RestController(org.springframework.web.bind.annotation.RestController) Collectors(java.util.stream.Collectors) Goods(com.wayn.common.core.domain.shop.Goods) TimeUnit(java.util.concurrent.TimeUnit) Page(com.baomidou.mybatisplus.extension.plugins.pagination.Page) MatchPhraseQueryBuilder(org.elasticsearch.index.query.MatchPhraseQueryBuilder) SortOrder(org.elasticsearch.search.sort.SortOrder) JSONObject(com.alibaba.fastjson.JSONObject) BoolQueryBuilder(org.elasticsearch.index.query.BoolQueryBuilder) IPage(com.baomidou.mybatisplus.core.metadata.IPage) ISearchHistoryService(com.wayn.mobile.api.service.ISearchHistoryService) MatchPhraseQueryBuilder(org.elasticsearch.index.query.MatchPhraseQueryBuilder) FieldSortBuilder(org.elasticsearch.search.sort.FieldSortBuilder) Goods(com.wayn.common.core.domain.shop.Goods) SearchSourceBuilder(org.elasticsearch.search.builder.SearchSourceBuilder) SearchVO(com.wayn.common.core.domain.vo.SearchVO) JSONObject(com.alibaba.fastjson.JSONObject) BoolQueryBuilder(org.elasticsearch.index.query.BoolQueryBuilder) MatchQueryBuilder(org.elasticsearch.index.query.MatchQueryBuilder) SearchHistory(com.wayn.mobile.api.domain.SearchHistory) TimeValue(org.elasticsearch.common.unit.TimeValue) GetMapping(org.springframework.web.bind.annotation.GetMapping)

Example 32 with Page

use of com.baomidou.mybatisplus.extension.plugins.pagination.Page in project weather-push by yangh124.

the class SchTaskServiceImpl method pageList.

@Override
public IPage<SchTaskPageDTO> pageList(PageParam pageParam) {
    IPage<SchTask> page = new Page<>(pageParam.getCurrentPage(), pageParam.getPageSize());
    page = super.page(page);
    IPage<SchTaskPageDTO> res = new Page<>();
    BeanUtil.copyProperties(page, res);
    List<SchTask> records = page.getRecords();
    List<SchTaskPageDTO> resRecords = new ArrayList<>(records.size());
    if (CollUtil.isNotEmpty(records)) {
        List<Long> taskIds = records.stream().map(SchTask::getId).collect(Collectors.toList());
        Map<Long, List<Tag>> map = getTaskTagMap(taskIds);
        for (SchTask record : records) {
            SchTaskPageDTO dto = new SchTaskPageDTO();
            BeanUtil.copyProperties(record, dto);
            Long taskId = record.getId();
            List<Tag> tagList = map.get(taskId);
            dto.setTagList(tagList);
            String taskName = record.getTaskName();
            String desc = TaskEnum.getDescByName(taskName);
            dto.setTaskName(desc);
            resRecords.add(dto);
        }
    }
    res.setRecords(resRecords);
    return res;
}
Also used : ArrayList(java.util.ArrayList) Page(com.baomidou.mybatisplus.extension.plugins.pagination.Page) IPage(com.baomidou.mybatisplus.core.metadata.IPage) SchTask(com.yh.weatherpush.entity.SchTask) ArrayList(java.util.ArrayList) List(java.util.List) TaskRelTag(com.yh.weatherpush.entity.TaskRelTag) Tag(com.yh.weatherpush.entity.Tag) SchTaskPageDTO(com.yh.weatherpush.dto.schtask.SchTaskPageDTO)

Example 33 with Page

use of com.baomidou.mybatisplus.extension.plugins.pagination.Page in project springboot-learning by lyb-geek.

the class BookServiceImpl method pageBook.

@Override
public PageResult<BookDTO> pageBook(PageQuery<BookDTO> pageQuery) {
    BookDTO bookDTO = pageQuery.getQueryParams();
    Wrapper<Book> wrapper = wrapperQueryCondition(bookDTO);
    IPage<Book> page = new Page<>(pageQuery.getPageNo(), pageQuery.getPageSize());
    IPage<Book> bookIPage = baseMapper.selectPage(page, wrapper);
    if (bookIPage != null) {
        List<BookDTO> bookDTOS = new ArrayList<>();
        if (CollectionUtils.isNotEmpty(bookIPage.getRecords())) {
            bookDTOS = BeanMapperUtils.mapList(bookIPage.getRecords(), BookDTO.class);
        }
        return PageUtil.INSTANCE.getPage(bookIPage, bookDTOS);
    }
    return null;
}
Also used : BookDTO(com.github.lybgeek.dynamic.dto.BookDTO) Book(com.github.lybgeek.dynamic.model.Book) ArrayList(java.util.ArrayList) Page(com.baomidou.mybatisplus.extension.plugins.pagination.Page) IPage(com.baomidou.mybatisplus.core.metadata.IPage)

Example 34 with Page

use of com.baomidou.mybatisplus.extension.plugins.pagination.Page in project springboot-learning by lyb-geek.

the class BookServiceImpl method pageBook.

@Override
@RedisCache(type = CacheOperateType.QUERY, cacheKeyPrefix = "pageBook", expireTime = 180)
public PageResult<BookDTO> pageBook(PageQuery<BookDTO> pageQuery) {
    log.info("pageBook走db");
    BookDTO bookDTO = pageQuery.getQueryParams();
    Wrapper<Book> wrapper = wrapperQueryCondition(bookDTO);
    IPage<Book> page = new Page<>(pageQuery.getPageNo(), pageQuery.getPageSize());
    IPage<Book> bookIPage = baseMapper.selectPage(page, wrapper);
    if (bookIPage != null) {
        List<BookDTO> bookDTOS = new ArrayList<>();
        if (CollectionUtils.isNotEmpty(bookIPage.getRecords())) {
            bookDTOS = BeanMapperUtils.mapList(bookIPage.getRecords(), BookDTO.class);
        }
        return PageUtil.INSTANCE.getPage(bookIPage, bookDTOS);
    }
    return null;
}
Also used : BookDTO(com.github.lybgeek.redis.dto.BookDTO) Book(com.github.lybgeek.redis.model.Book) ArrayList(java.util.ArrayList) Page(com.baomidou.mybatisplus.extension.plugins.pagination.Page) IPage(com.baomidou.mybatisplus.core.metadata.IPage) RedisCache(com.github.lybgeek.redis.annotation.RedisCache)

Example 35 with Page

use of com.baomidou.mybatisplus.extension.plugins.pagination.Page in project springboot-learning by lyb-geek.

the class BookServiceImpl method pageBook.

@Override
public PageResult<BookDTO> pageBook(PageQuery<BookDTO> pageQuery) {
    BookDTO bookDTO = pageQuery.getQueryParams();
    Wrapper<Book> wrapper = wrapperQueryCondition(bookDTO);
    IPage<Book> page = new Page<>(pageQuery.getPageNo(), pageQuery.getPageSize());
    IPage<Book> bookIPage = baseMapper.selectPage(page, wrapper);
    if (bookIPage != null) {
        List<BookDTO> bookDTOS = new ArrayList<>();
        if (CollectionUtils.isNotEmpty(bookIPage.getRecords())) {
            bookDTOS = BeanMapperUtils.mapList(bookIPage.getRecords(), BookDTO.class);
        }
        return PageUtil.INSTANCE.getPage(bookIPage, bookDTOS);
    }
    return null;
}
Also used : BookDTO(com.github.lybgeek.swagger.dto.BookDTO) Book(com.github.lybgeek.swagger.model.Book) ArrayList(java.util.ArrayList) Page(com.baomidou.mybatisplus.extension.plugins.pagination.Page) IPage(com.baomidou.mybatisplus.core.metadata.IPage)

Aggregations

Page (com.baomidou.mybatisplus.extension.plugins.pagination.Page)239 IPage (com.baomidou.mybatisplus.core.metadata.IPage)171 QueryWrapper (com.baomidou.mybatisplus.core.conditions.query.QueryWrapper)62 ApiOperation (io.swagger.annotations.ApiOperation)38 ArrayList (java.util.ArrayList)29 LoginUser (org.jeecg.common.system.vo.LoginUser)26 Test (org.junit.Test)24 SpringBootTest (org.springframework.boot.test.context.SpringBootTest)22 RequiresPermissions (org.apache.shiro.authz.annotation.RequiresPermissions)19 LambdaQueryWrapper (com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper)17 JSONObject (com.alibaba.fastjson.JSONObject)15 PageInfo (org.apache.dolphinscheduler.api.utils.PageInfo)13 Result (org.jeecg.common.api.vo.Result)12 User (org.apache.dolphinscheduler.dao.entity.User)11 OrderItem (com.baomidou.mybatisplus.core.metadata.OrderItem)9 java.util (java.util)9 HashMap (java.util.HashMap)9 Project (org.apache.dolphinscheduler.dao.entity.Project)9 Service (org.springframework.stereotype.Service)9 IOException (java.io.IOException)8