| | |
| | | package com.oying.modules.pc.product.rest; |
| | | |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import cn.hutool.core.bean.copier.CopyOptions; |
| | | import cn.hutool.core.collection.ListUtil; |
| | | import cn.hutool.core.util.ObjUtil; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.oying.modules.pc.common.core.domain.R; |
| | | import com.oying.modules.pc.product.domain.Product; |
| | | import com.oying.modules.pc.product.domain.dto.ProductQueryCriteria; |
| | | import com.oying.modules.pc.product.domain.enums.ProductStatusEnum; |
| | | import com.oying.modules.pc.product.service.ProductImageService; |
| | | import com.oying.modules.pc.product.service.ProductLabelService; |
| | | import com.oying.modules.pc.product.service.ProductService; |
| | | import com.oying.modules.pc.product.view.ProductCustomerView; |
| | | import com.oying.modules.pc.product.view.ProductMerchantSimpleView; |
| | | import com.oying.modules.pc.product.view.ProductImageCustomerView; |
| | | import com.oying.modules.pc.product.view.ProductLabelCustomerView; |
| | | import com.oying.utils.PageResult; |
| | | import com.oying.utils.R; |
| | | 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.security.access.prepost.PreAuthorize; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.List; |
| | |
| | | import java.util.stream.Collectors; |
| | | |
| | | /* |
| | | * |
| | | * |
| | | * @author lzp |
| | | * @date 2025-04-30 |
| | | * |
| | | */ |
| | | */ |
| | | @RestController |
| | | @RequiredArgsConstructor |
| | | @Api(tags = "商品(客户端)") |
| | |
| | | public class ProductCustomerController { |
| | | |
| | | private final ProductService productService; |
| | | private final ProductImageService productImageService; |
| | | private final ProductLabelService productLabelService; |
| | | |
| | | @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) { |
| | | public ResponseEntity<?> getProductsByPage(@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); |
| | | criteria.setShelfStatus(ProductStatusEnum.AVAILABLE.getValue()); |
| | | Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize()); |
| | | PageResult<Product> productPageResult = productService.queryAll(criteria, page); |
| | | |
| | |
| | | PageResult<ProductCustomerView> viewPageResult = new PageResult<>( |
| | | productList.stream().map(i -> { |
| | | ProductCustomerView view = new ProductCustomerView(); |
| | | BeanUtils.copyProperties(i, view); |
| | | view.setScore(5.0D); |
| | | view.setSold(0); |
| | | BeanUtil.copyProperties(i, view); |
| | | return view; |
| | | }).collect(Collectors.toList()), |
| | | productPageResult.getTotalElements()); |
| | |
| | | @GetMapping(value = "/{productId}/details") |
| | | @ApiOperation("查询商品") |
| | | /*@PreAuthorize("@el.check('merchant:product:byProductId')")*/ |
| | | public ResponseEntity<?> getDetails(@PathVariable Long productId) { |
| | | public ResponseEntity<?> getProductDetails(@PathVariable Long productId) { |
| | | Product product = productService.getById(productId); |
| | | if (ObjUtil.isEmpty(product)) { |
| | | return ResponseEntity.ok(R.success()); |
| | | } |
| | | 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()); |
| | | BeanUtil.copyProperties(product, customerView); |
| | | if (ObjUtil.isNotEmpty(product)) { |
| | | customerView.setImages(productImageService.queryImagesByProductId(productId).stream().map(i -> { |
| | | ProductImageCustomerView imageCustomerView = new ProductImageCustomerView(); |
| | | BeanUtil.copyProperties(i, imageCustomerView, CopyOptions.create().setIgnoreNullValue(true)); |
| | | return imageCustomerView; |
| | | }).collect(Collectors.toList())); |
| | | customerView.setLabels(productLabelService.queryLabelsByProductId(productId).stream().map(i -> { |
| | | ProductLabelCustomerView labelCustomerView = new ProductLabelCustomerView(); |
| | | BeanUtil.copyProperties(i, labelCustomerView, CopyOptions.create().setIgnoreNullValue(true)); |
| | | return labelCustomerView; |
| | | }).collect(Collectors.toList())); |
| | | } |
| | | return ResponseEntity.ok(R.success(customerView)); |
| | | } |
| | | |