package com.oying.modules.pc.product.rest;
|
|
import cn.hutool.core.collection.ListUtil;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.oying.utils.R;
|
import com.oying.modules.pc.product.domain.Product;
|
import com.oying.modules.pc.product.domain.dto.ProductQueryCriteria;
|
import com.oying.modules.pc.product.service.ProductService;
|
import com.oying.modules.pc.product.view.ProductCustomerView;
|
import com.oying.utils.PageResult;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.http.ResponseEntity;
|
import org.springframework.web.bind.annotation.*;
|
|
import java.util.List;
|
import java.util.Optional;
|
import java.util.stream.Collectors;
|
|
/*
|
*
|
* @author lzp
|
* @date 2025-04-30
|
*
|
*/
|
@RestController
|
@RequiredArgsConstructor
|
@Api(tags = "商品(客户端)")
|
@RequestMapping("/api/pc/customer/store/{storeId}/product")
|
public class ProductCustomerController {
|
|
private final ProductService productService;
|
|
@GetMapping(value = "/page")
|
@ApiOperation("根据商品名称模糊匹配店铺内的商品")
|
/*@PreAuthorize("@el.check('merchant:product:page')")*/
|
public ResponseEntity<?> query(@PathVariable Long storeId,
|
@RequestParam(value = "categoryId", required = false) Long categoryId,
|
@RequestParam(value = "secondCategoryId", required = false) Long secondCategoryId,
|
@RequestParam(value = "blurry", required = false) String blurry) {
|
|
ProductQueryCriteria criteria = new ProductQueryCriteria();
|
criteria.setStoreId(storeId);
|
criteria.setCategoryId(categoryId);
|
criteria.setSecondCategoryId(secondCategoryId);
|
criteria.setBlurry(blurry);
|
Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
|
PageResult<Product> productPageResult = productService.queryAll(criteria, page);
|
|
List<Product> productList = Optional.ofNullable(productPageResult.getContent()).orElse(ListUtil.empty());
|
|
PageResult<ProductCustomerView> viewPageResult = new PageResult<>(
|
productList.stream().map(i -> {
|
ProductCustomerView view = new ProductCustomerView();
|
BeanUtils.copyProperties(i, view);
|
view.setScore(5.0D);
|
view.setSold(0);
|
return view;
|
}).collect(Collectors.toList()),
|
productPageResult.getTotalElements());
|
return ResponseEntity.ok(R.success(viewPageResult));
|
}
|
|
@GetMapping(value = "/{productId}/details")
|
@ApiOperation("查询商品")
|
/*@PreAuthorize("@el.check('merchant:product:byProductId')")*/
|
public ResponseEntity<?> getDetails(@PathVariable Long productId) {
|
Product product = productService.getById(productId);
|
ProductCustomerView customerView = new ProductCustomerView();
|
customerView.setProductId(product.getProductId());
|
customerView.setTitle(product.getTitle());
|
customerView.setPrice(product.getPrice());
|
customerView.setScore(5.0D);
|
customerView.setSold(0);
|
customerView.setLabelList(ListUtil.empty());
|
customerView.setMainImageList(ListUtil.empty());
|
return ResponseEntity.ok(R.success(customerView));
|
}
|
|
}
|