From 347909bae241fff128b628ea6d12992d7e5b4b10 Mon Sep 17 00:00:00 2001 From: xin <1099200748@qq.com> Date: Fri, 30 May 2025 18:35:43 +0800 Subject: [PATCH] 响应信息主体 --- oying-system/src/main/java/com/oying/modules/pc/product/rest/ProductMerchantController.java | 140 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 140 insertions(+), 0 deletions(-) diff --git a/oying-system/src/main/java/com/oying/modules/pc/product/rest/ProductMerchantController.java b/oying-system/src/main/java/com/oying/modules/pc/product/rest/ProductMerchantController.java new file mode 100644 index 0000000..cf88760 --- /dev/null +++ b/oying-system/src/main/java/com/oying/modules/pc/product/rest/ProductMerchantController.java @@ -0,0 +1,140 @@ +package com.oying.modules.pc.product.rest; + +import cn.hutool.core.collection.ListUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.oying.annotation.Log; +import com.oying.utils.R; +import com.oying.modules.pc.product.domain.Product; +import com.oying.modules.pc.product.domain.dto.ProductMerchantCreateRequest; +import com.oying.modules.pc.product.domain.dto.ProductMerchantUpdateRequest; +import com.oying.modules.pc.product.domain.dto.ProductQueryCriteria; +import com.oying.modules.pc.product.service.ProductMerchantService; +import com.oying.modules.pc.product.service.ProductService; +import com.oying.modules.pc.product.view.ProductMerchantDetailsView; +import com.oying.modules.pc.product.view.ProductMerchantSimpleView; +import com.oying.utils.PageResult; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +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/merchant/store/{storeId}/product") +public class ProductMerchantController { + + private final ProductService productService; + private final ProductMerchantService productMerchantService; + + @GetMapping(value = "/page") + @ApiOperation("获取指定商户店铺的商品列表(支持分页)") + /*@PreAuthorize("@el.check('merchant:product:page') " + + "and @storeMerchantOwnershipService.check(#storeId)")*/ + public ResponseEntity<?> query(@PathVariable Long storeId, + ProductQueryCriteria criteria) { + + criteria.setStoreId(storeId); + 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<ProductMerchantSimpleView> viewPageResult = new PageResult<>( + productList.stream().map(i -> { + ProductMerchantSimpleView view = new ProductMerchantSimpleView(); + BeanUtils.copyProperties(i, view); + return view; + }).collect(Collectors.toList()), + productPageResult.getTotalElements()); + return ResponseEntity.ok(R.success(viewPageResult)); + } + + @GetMapping(value = "/{productId}") + @ApiOperation("查询商品") + /*@PreAuthorize("@el.check('merchant:product:byProductId') " + + "and @storeMerchantOwnershipService.check(#storeId)")*/ + public ResponseEntity<?> getById(@PathVariable Long productId) { + return ResponseEntity.ok(R.success(productService.getById(productId))); + } + + @GetMapping(value = "/{productId}/details") + @ApiOperation("查询商品详情") + /*@PreAuthorize("@el.check('merchant:product:byProductId') " + + "and @storeMerchantOwnershipService.check(#storeId)")*/ + public ResponseEntity<?> getDetailsById(@PathVariable Long productId) { + Product product = productService.getById(productId); + ProductMerchantDetailsView view = null; + if (product != null) { + view = new ProductMerchantDetailsView(); + BeanUtils.copyProperties(product, view); + view.setMainImageList(ListUtil.empty()); + view.setLabelList(ListUtil.empty()); + } + return ResponseEntity.ok(R.success(view)); + } + + @PostMapping + @Log("新增商品") + @ApiOperation("新增商品") + //@PreAuthorize("@el.check('merchant:product:add') " + + // "and @storeMerchantOwnershipService.check(#storeId)") + public ResponseEntity<?> createProduct(@PathVariable Long storeId, + @Validated @RequestBody ProductMerchantCreateRequest request) { + + productMerchantService.create(storeId, request); + return ResponseEntity.noContent().build(); + } + + @PutMapping(value = "/{productId}") + @Log("修改商品") + @ApiOperation("修改商品") + /*@PreAuthorize("@el.check('merchant:product:edit') " + + "and @storeMerchantOwnershipService.check(#storeId)")*/ + public ResponseEntity<?> updateProduct(@PathVariable Long productId, + @Validated @RequestBody ProductMerchantUpdateRequest request) { + + productMerchantService.update(productId, request); + return ResponseEntity.noContent().build(); + } + + @DeleteMapping + @Log("批量删除商品") + @ApiOperation("批量删除商品") + //@PreAuthorize("@el.check('merchant:product:batchDel') " + + // "and @storeMerchantOwnershipService.check(#storeId)") + public ResponseEntity<?> deleteProduct(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) { + productMerchantService.batchDelete(ids); + return ResponseEntity.noContent().build(); + } + + @PutMapping(value = "/{productId}/on") + @Log("上架商品") + @ApiOperation("上架商品") + /*@PreAuthorize("@el.check('merchant:product:on') " + + "and @storeMerchantOwnershipService.check(#storeId)")*/ + public ResponseEntity<?> putOnShelf(@PathVariable("productId") Long productId) { + productMerchantService.putOnShelf(productId); + return ResponseEntity.noContent().build(); + } + + @PutMapping(value = "/{productId}/off") + @Log("下架商品") + @ApiOperation("下架商品") + /*@PreAuthorize("@el.check('merchant:product:off') " + + "and @storeMerchantOwnershipService.check(#storeId)")*/ + public ResponseEntity<?> takeOffShelf(@PathVariable("productId") Long productId) { + productMerchantService.takeOffShelf(productId); + return ResponseEntity.noContent().build(); + } +} -- Gitblit v1.9.3