初始化商品分页接口

This commit is contained in:
YunaiV
2020-08-04 08:12:08 +08:00
parent 5acf1ae3d4
commit f3316d14c7
24 changed files with 371 additions and 93 deletions

View File

@@ -1,7 +1,15 @@
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.SearchProductPageReqDTO;
import cn.iocoder.mall.searchservice.rpc.product.dto.SearchProductRespDTO;
/**
* 商品搜索 RPC 接口
*/
public interface SearchProductRpc {
CommonResult<PageResult<SearchProductRespDTO>> pageSearchProduct(SearchProductPageReqDTO pageQueryReqDTO);
}

View File

@@ -0,0 +1,35 @@
package cn.iocoder.mall.searchservice.rpc.product.dto;
import cn.iocoder.common.framework.vo.PageParam;
import cn.iocoder.common.framework.vo.SortingField;
import cn.iocoder.mall.searchservice.enums.product.SearchProductPageQuerySortFieldEnum;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.List;
/**
* 商品检索分页查询 Request DTO
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class SearchProductPageReqDTO extends PageParam {
/**
* 分类编号
*/
private Integer cid;
/**
* 关键字
*/
private String keyword;
/**
* 排序字段数组
*
* 可支持排序的字段,见 {@link SearchProductPageQuerySortFieldEnum}
*/
private List<SortingField> sorts;
}

View File

@@ -0,0 +1,85 @@
package cn.iocoder.mall.searchservice.rpc.product.dto;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
/**
* 搜索商品 Response DTO
*/
@Data
@Accessors(chain = true)
public class SearchProductRespDTO {
private Integer id;
// ========== 基本信息 =========
/**
* SPU 名字
*/
private String name;
/**
* 卖点
*/
private String sellPoint;
/**
* 描述
*/
private String description;
/**
* 分类编号
*/
private Integer cid;
/**
* 分类名
*/
private String categoryName;
/**
* 商品主图地数组
*/
private List<String> picUrls;
// ========== 其他信息 =========
/**
* 是否上架商品(是否可见)。
*
* true 为已上架
* false 为已下架
*/
private Boolean visible;
/**
* 排序字段
*/
private Integer sort;
// ========== Sku 相关字段 =========
/**
* 原价格,单位:分
*/
private Integer originalPrice;
/**
* 购买价格,单位:分。
*/
private Integer buyPrice;
/**
* 库存数量
*/
private Integer quantity;
// ========== 促销活动相关字段 =========
// 目前只促销单体商品促销,目前仅限制折扣。
/**
* 促销活动编号
*/
private Integer promotionActivityId;
/**
* 促销活动标题
*/
private String promotionActivityTitle;
/**
* 促销活动类型
*/
private Integer promotionActivityType;
}

View File

@@ -4,7 +4,10 @@ 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.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.SearchProductPageQueryBO;
import cn.iocoder.mall.searchservice.service.product.bo.SearchProductSaveBO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
@@ -39,4 +42,8 @@ public interface SearchProductConvert {
.setTotal(searchPage.getTotalElements());
}
SearchProductPageQueryBO convert(SearchProductPageReqDTO bean);
PageResult<SearchProductRespDTO> convertPage(PageResult<SearchProductBO> pageResult);
}

View File

@@ -2,6 +2,7 @@ package cn.iocoder.mall.searchservice.manager.product;
import cn.iocoder.common.framework.util.CollectionUtils;
import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.common.framework.vo.PageResult;
import cn.iocoder.mall.productservice.rpc.category.ProductCategoryRpc;
import cn.iocoder.mall.productservice.rpc.category.dto.ProductCategoryRespDTO;
import cn.iocoder.mall.productservice.rpc.sku.ProductSkuRpc;
@@ -10,7 +11,10 @@ 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.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.SearchProductSaveBO;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
@@ -39,6 +43,11 @@ public class SearchProductManager {
@Autowired
private SearchProductService searchProductService;
public PageResult<SearchProductRespDTO> pageSearchProduct(SearchProductPageReqDTO pageReqDTO) {
PageResult<SearchProductBO> pageResult = searchProductService.pageSearchProduct(SearchProductConvert.INSTANCE.convert(pageReqDTO));
return SearchProductConvert.INSTANCE.convertPage(pageResult);
}
/**
* 重建所有商品的 ES 索引
*

View File

@@ -1,7 +1,24 @@
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.SearchProductPageReqDTO;
import cn.iocoder.mall.searchservice.rpc.product.dto.SearchProductRespDTO;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.factory.annotation.Autowired;
import static cn.iocoder.common.framework.vo.CommonResult.success;
@DubboService
public class SearchProductRpcImpl implements SearchProductRpc {
@Autowired
private SearchProductManager searchProductManager;
@Override
public CommonResult<PageResult<SearchProductRespDTO>> pageSearchProduct(SearchProductPageReqDTO pageQueryReqDTO) {
return success(searchProductManager.pageSearchProduct(pageQueryReqDTO));
}
}

View File

@@ -42,7 +42,7 @@ public class SearchProductService {
* @param pageQueryBO 分页查询条件
* @return 商品信息
*/
public PageResult<SearchProductBO> getSearchPage(SearchProductPageQueryBO pageQueryBO) {
public PageResult<SearchProductBO> pageSearchProduct(SearchProductPageQueryBO pageQueryBO) {
checkSortFieldInvalid(pageQueryBO.getSorts());
// 执行查询
Page<ESProductDO> searchPage = productRepository.search(pageQueryBO.getCid(), pageQueryBO.getKeyword(),

View File

@@ -2,7 +2,9 @@ package cn.iocoder.mall.searchservice.service.product.bo;
import cn.iocoder.common.framework.vo.PageParam;
import cn.iocoder.common.framework.vo.SortingField;
import cn.iocoder.mall.searchservice.enums.product.SearchProductPageQuerySortFieldEnum;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.List;
@@ -11,6 +13,7 @@ import java.util.List;
* 商品检索分查询 BO
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class SearchProductPageQueryBO extends PageParam {
@@ -25,7 +28,7 @@ public class SearchProductPageQueryBO extends PageParam {
/**
* 排序字段数组
*
*
* 可支持排序的字段,见 {@link SearchProductPageQuerySortFieldEnum}
*/
private List<SortingField> sorts;