完成的商品搜索和条件功能

This commit is contained in:
YunaiV
2020-08-04 19:42:54 +08:00
parent f3316d14c7
commit b83262af5f
240 changed files with 246 additions and 859 deletions

View File

@@ -16,4 +16,8 @@ public enum SearchProductConditionFieldEnum {
this.field = field;
}
public String getField() {
return field;
}
}

View File

@@ -2,6 +2,8 @@ package cn.iocoder.mall.searchservice.rpc.product;
import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.common.framework.vo.PageResult;
import cn.iocoder.mall.searchservice.rpc.product.dto.SearchProductConditionReqDTO;
import cn.iocoder.mall.searchservice.rpc.product.dto.SearchProductConditionRespDTO;
import cn.iocoder.mall.searchservice.rpc.product.dto.SearchProductPageReqDTO;
import cn.iocoder.mall.searchservice.rpc.product.dto.SearchProductRespDTO;
@@ -10,6 +12,20 @@ import cn.iocoder.mall.searchservice.rpc.product.dto.SearchProductRespDTO;
*/
public interface SearchProductRpc {
CommonResult<PageResult<SearchProductRespDTO>> pageSearchProduct(SearchProductPageReqDTO pageQueryReqDTO);
/**
* 获得商品搜索分页
*
* @param pageReqDTO 分页请求 DTO
* @return 商品搜索分页结果
*/
CommonResult<PageResult<SearchProductRespDTO>> pageSearchProduct(SearchProductPageReqDTO pageReqDTO);
/**
* 获得商品搜索条件
*
* @param conditionReqDTO 搜索条件 DTO
* @return 搜索条件
*/
CommonResult<SearchProductConditionRespDTO> getSearchProductCondition(SearchProductConditionReqDTO conditionReqDTO);
}

View File

@@ -0,0 +1,28 @@
package cn.iocoder.mall.searchservice.rpc.product.dto;
import cn.iocoder.mall.searchservice.enums.product.SearchProductConditionFieldEnum;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Collection;
/**
* 商品搜索条件 Request DTO
*/
@Data
@Accessors(chain = true)
public class SearchProductConditionReqDTO implements Serializable {
/**
* 关键字
*/
private String keyword;
/**
* 需要返回的搜索条件
*
* 可选择的条件,见 {@link SearchProductConditionFieldEnum} 枚举类
*/
private Collection<String> fields;
}

View File

@@ -0,0 +1,21 @@
package cn.iocoder.mall.searchservice.rpc.product.dto;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.List;
/**
* 商品搜索条件 Response DTO
*/
@Data
@Accessors(chain = true)
public class SearchProductConditionRespDTO implements Serializable {
/**
* 商品分类数组
*/
private List<Integer> cids;
}

View File

@@ -3,6 +3,7 @@ package cn.iocoder.mall.searchservice.rpc.product.dto;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.List;
/**
@@ -10,7 +11,7 @@ import java.util.List;
*/
@Data
@Accessors(chain = true)
public class SearchProductRespDTO {
public class SearchProductRespDTO implements Serializable {
private Integer id;

View File

@@ -4,9 +4,11 @@ import cn.iocoder.common.framework.vo.PageResult;
import cn.iocoder.mall.productservice.rpc.category.dto.ProductCategoryRespDTO;
import cn.iocoder.mall.productservice.rpc.spu.dto.ProductSpuRespDTO;
import cn.iocoder.mall.searchservice.dal.es.dataobject.ESProductDO;
import cn.iocoder.mall.searchservice.rpc.product.dto.SearchProductConditionRespDTO;
import cn.iocoder.mall.searchservice.rpc.product.dto.SearchProductPageReqDTO;
import cn.iocoder.mall.searchservice.rpc.product.dto.SearchProductRespDTO;
import cn.iocoder.mall.searchservice.service.product.bo.SearchProductBO;
import cn.iocoder.mall.searchservice.service.product.bo.SearchProductConditionBO;
import cn.iocoder.mall.searchservice.service.product.bo.SearchProductPageQueryBO;
import cn.iocoder.mall.searchservice.service.product.bo.SearchProductSaveBO;
import org.mapstruct.Mapper;
@@ -37,13 +39,15 @@ public interface SearchProductConvert {
List<SearchProductBO> convertList(List<ESProductDO> list);
default PageResult<SearchProductBO> convertPage(Page<ESProductDO> searchPage) {
return new PageResult<SearchProductBO>().setList(convertList(searchPage.getContent()))
.setTotal(searchPage.getTotalElements());
default PageResult<SearchProductBO> convertPage(Page<ESProductDO> page) {
return new PageResult<SearchProductBO>().setList(convertList(page.getContent()))
.setTotal(page.getTotalElements());
}
SearchProductPageQueryBO convert(SearchProductPageReqDTO bean);
PageResult<SearchProductRespDTO> convertPage(PageResult<SearchProductBO> pageResult);
PageResult<SearchProductRespDTO> convertPage(PageResult<SearchProductBO> page);
SearchProductConditionRespDTO convert(SearchProductConditionBO bean);
}

View File

@@ -11,10 +11,13 @@ import cn.iocoder.mall.productservice.rpc.sku.dto.ProductSkuRespDTO;
import cn.iocoder.mall.productservice.rpc.spu.ProductSpuRpc;
import cn.iocoder.mall.productservice.rpc.spu.dto.ProductSpuRespDTO;
import cn.iocoder.mall.searchservice.convert.product.SearchProductConvert;
import cn.iocoder.mall.searchservice.rpc.product.dto.SearchProductConditionReqDTO;
import cn.iocoder.mall.searchservice.rpc.product.dto.SearchProductConditionRespDTO;
import cn.iocoder.mall.searchservice.rpc.product.dto.SearchProductPageReqDTO;
import cn.iocoder.mall.searchservice.rpc.product.dto.SearchProductRespDTO;
import cn.iocoder.mall.searchservice.service.product.SearchProductService;
import cn.iocoder.mall.searchservice.service.product.bo.SearchProductBO;
import cn.iocoder.mall.searchservice.service.product.bo.SearchProductConditionBO;
import cn.iocoder.mall.searchservice.service.product.bo.SearchProductSaveBO;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
@@ -48,6 +51,12 @@ public class SearchProductManager {
return SearchProductConvert.INSTANCE.convertPage(pageResult);
}
public SearchProductConditionRespDTO getSearchProductCondition(SearchProductConditionReqDTO conditionReqDTO) {
SearchProductConditionBO conditionBO =
searchProductService.getSearchProductCondition(conditionReqDTO.getKeyword(), conditionReqDTO.getFields());
return SearchProductConvert.INSTANCE.convert(conditionBO);
}
/**
* 重建所有商品的 ES 索引
*

View File

@@ -3,6 +3,8 @@ package cn.iocoder.mall.searchservice.rpc.product;
import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.common.framework.vo.PageResult;
import cn.iocoder.mall.searchservice.manager.product.SearchProductManager;
import cn.iocoder.mall.searchservice.rpc.product.dto.SearchProductConditionReqDTO;
import cn.iocoder.mall.searchservice.rpc.product.dto.SearchProductConditionRespDTO;
import cn.iocoder.mall.searchservice.rpc.product.dto.SearchProductPageReqDTO;
import cn.iocoder.mall.searchservice.rpc.product.dto.SearchProductRespDTO;
import org.apache.dubbo.config.annotation.DubboService;
@@ -17,8 +19,13 @@ public class SearchProductRpcImpl implements SearchProductRpc {
private SearchProductManager searchProductManager;
@Override
public CommonResult<PageResult<SearchProductRespDTO>> pageSearchProduct(SearchProductPageReqDTO pageQueryReqDTO) {
return success(searchProductManager.pageSearchProduct(pageQueryReqDTO));
public CommonResult<PageResult<SearchProductRespDTO>> pageSearchProduct(SearchProductPageReqDTO pageReqDTO) {
return success(searchProductManager.pageSearchProduct(pageReqDTO));
}
@Override
public CommonResult<SearchProductConditionRespDTO> getSearchProductCondition(SearchProductConditionReqDTO conditionReqDTO) {
return success(searchProductManager.getSearchProductCondition(conditionReqDTO));
}
}