- 前端:完善商品列表
- 后端:将商品模块的 Service 改成有业务异常时,抛出异常,而不是返回 CommonResult - 后端:将搜索模块的 Service 改成有业务异常时,抛出异常,而不是返回 CommonResult
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
package cn.iocoder.mall.search.biz.mq;
|
||||
|
||||
import cn.iocoder.common.framework.vo.CommonResult;
|
||||
import cn.iocoder.mall.product.api.message.ProductUpdateMessage;
|
||||
import cn.iocoder.mall.search.api.ProductSearchService;
|
||||
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
|
||||
@@ -21,8 +20,8 @@ public class PayTransactionPaySuccessConsumer implements RocketMQListener<Produc
|
||||
|
||||
@Override
|
||||
public void onMessage(ProductUpdateMessage message) {
|
||||
CommonResult<Boolean> result = productSearchService.save(message.getId());
|
||||
Assert.isTrue(result.isSuccess(), String.format("重构商品 ES 索引,必然成功。实际结果是 %s", result));
|
||||
Boolean result = productSearchService.save(message.getId());
|
||||
Assert.isTrue(result, String.format("重构商品 ES 索引,必然成功。实际结果是 %s", result));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -55,14 +55,12 @@ public class ProductSearchServiceImpl implements ProductSearchService {
|
||||
private CartService cartService;
|
||||
|
||||
@Override
|
||||
public CommonResult<Integer> rebuild() {
|
||||
public Integer rebuild() {
|
||||
// TODO 芋艿,因为目前商品比较少,所以写的很粗暴。等未来重构
|
||||
Integer lastId = null;
|
||||
int rebuildCounts = 0;
|
||||
while (true) {
|
||||
CommonResult<List<ProductSpuDetailBO>> result = productSpuService.getProductSpuDetailListForSync(lastId, REBUILD_FETCH_PER_SIZE);
|
||||
Assert.isTrue(result.isSuccess(), "获得商品列表必然成功");
|
||||
List<ProductSpuDetailBO> spus = result.getData();
|
||||
List<ProductSpuDetailBO> spus = productSpuService.getProductSpuDetailListForSync(lastId, REBUILD_FETCH_PER_SIZE);
|
||||
rebuildCounts += spus.size();
|
||||
// 存储到 ES 中
|
||||
List<ESProductDO> products = spus.stream().map(this::convert).collect(Collectors.toList());
|
||||
@@ -75,19 +73,18 @@ public class ProductSearchServiceImpl implements ProductSearchService {
|
||||
}
|
||||
}
|
||||
// 返回成功
|
||||
return CommonResult.success(rebuildCounts);
|
||||
return rebuildCounts;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<Boolean> save(Integer id) {
|
||||
public Boolean save(Integer id) {
|
||||
// 获得商品性情
|
||||
CommonResult<ProductSpuDetailBO> result = productSpuService.getProductSpuDetail(id);
|
||||
Assert.isTrue(result.isSuccess(), "获得商品详情必然成功");
|
||||
ProductSpuDetailBO result = productSpuService.getProductSpuDetail(id);
|
||||
// 存储到 ES 中
|
||||
ESProductDO product = convert(result.getData());
|
||||
ESProductDO product = convert(result);
|
||||
productRepository.save(product);
|
||||
// 返回成功
|
||||
return CommonResult.success(Boolean.TRUE);
|
||||
return true;
|
||||
}
|
||||
|
||||
@SuppressWarnings("OptionalGetWithoutIsPresent")
|
||||
@@ -102,16 +99,15 @@ public class ProductSearchServiceImpl implements ProductSearchService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<ProductPageBO> getSearchPage(ProductSearchPageDTO searchPageDTO) {
|
||||
public ProductPageBO getSearchPage(ProductSearchPageDTO searchPageDTO) {
|
||||
checkSortFieldInvalid(searchPageDTO.getSorts());
|
||||
// 执行查询
|
||||
Page<ESProductDO> searchPage = productRepository.search(searchPageDTO.getCid(), searchPageDTO.getKeyword(),
|
||||
searchPageDTO.getPageNo(), searchPageDTO.getPageSize(), searchPageDTO.getSorts());
|
||||
// 转换结果
|
||||
ProductPageBO resultPage = new ProductPageBO()
|
||||
return new ProductPageBO()
|
||||
.setList(ProductSearchConvert.INSTANCE.convert(searchPage.getContent()))
|
||||
.setTotal((int) searchPage.getTotalElements());
|
||||
return CommonResult.success(resultPage);
|
||||
}
|
||||
|
||||
private void checkSortFieldInvalid(List<SortingField> sorts) {
|
||||
@@ -123,7 +119,7 @@ public class ProductSearchServiceImpl implements ProductSearchService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<ProductConditionBO> getSearchCondition(ProductConditionDTO conditionDTO) {
|
||||
public ProductConditionBO getSearchCondition(ProductConditionDTO conditionDTO) {
|
||||
// 创建 ES 搜索条件
|
||||
NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder();
|
||||
// 筛选
|
||||
@@ -161,7 +157,7 @@ public class ProductSearchServiceImpl implements ProductSearchService {
|
||||
condition.getCategories().forEach(category -> category.setName(categoryMap.get(category.getId()).getName()));
|
||||
}
|
||||
// 返回结果
|
||||
return CommonResult.success(condition);
|
||||
return condition;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ public class ProductSearchServiceImplTest {
|
||||
|
||||
@Test
|
||||
public void testRebuild() {
|
||||
int counts = productSearchService.rebuild().getData();
|
||||
int counts = productSearchService.rebuild();
|
||||
System.out.println("重建数量:" + counts);
|
||||
|
||||
System.out.println(productRepository.count());
|
||||
|
||||
Reference in New Issue
Block a user