Update ProductController.java

cyj
pbvfus8to 2 months ago
parent 9c418de0e1
commit 74e503e1c9

@ -36,9 +36,9 @@ import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
/** /**
* controller *
*
* *
* @author lgh * @author lgh
*/ */
@ -46,36 +46,54 @@ import java.util.Objects;
@RequestMapping("/prod/prod") @RequestMapping("/prod/prod")
public class ProductController { public class ProductController {
// 注入ProductService用于处理与商品相关的核心业务逻辑例如商品信息的查询、保存、更新、删除等操作。
@Autowired @Autowired
private ProductService productService; private ProductService productService;
// 注入SkuService用于处理商品规格Sku相关的业务逻辑比如根据商品ID获取商品规格列表等操作在商品相关操作中常涉及规格信息的处理。
@Autowired @Autowired
private SkuService skuService; private SkuService skuService;
// 注入ProdTagReferenceService用于获取商品与标签关联相关的业务逻辑例如获取某个商品关联的标签ID列表等操作用于处理商品的分组标签信息。
@Autowired @Autowired
private ProdTagReferenceService prodTagReferenceService; private ProdTagReferenceService prodTagReferenceService;
// 注入BasketService用于处理购物车相关的业务逻辑在商品操作涉及影响购物车缓存的场景下如商品修改、删除等会调用其方法来清除相关缓存保证数据一致性。
@Autowired @Autowired
private BasketService basketService; private BasketService basketService;
/** /**
* * ProductParamPageParam
* ProductServiceID
*
* @PreAuthorize"prod:prod:page"访
*
* @param product ProductParam
* @param page
* @return ServerResponseEntity
*/ */
@GetMapping("/page") @GetMapping("/page")
@PreAuthorize("@pms.hasPermission('prod:prod:page')") @PreAuthorize("@pms.hasPermission('prod:prod:page')")
public ServerResponseEntity<IPage<Product>> page(ProductParam product, PageParam<Product> page) { public ServerResponseEntity<IPage<Product>> page(ProductParam product, PageParam<Product> page) {
// 使用ProductService的page方法进行分页查询传入分页参数和LambdaQueryWrapper构建的查询条件。
// 通过StrUtil.isNotBlank判断商品名称是否不为空若不为空则添加模糊查询条件按照商品名称进行模糊匹配同时根据店铺ID和商品状态如果不为空进行筛选最后按照上架时间倒序排序。
IPage<Product> products = productService.page(page, IPage<Product> products = productService.page(page,
new LambdaQueryWrapper<Product>() new LambdaQueryWrapper<Product>()
.like(StrUtil.isNotBlank(product.getProdName()), Product::getProdName, product.getProdName()) .like(StrUtil.isNotBlank(product.getProdName()), Product::getProdName, product.getProdName())
.eq(Product::getShopId, SecurityUtils.getSysUser().getShopId()) .eq(Product::getShopId, SecurityUtils.getSysUser().getShopId())
.eq(product.getStatus() != null, Product::getStatus, product.getStatus()) .eq(product.getStatus()!= null, Product::getStatus, product.getStatus())
.orderByDesc(Product::getPutawayTime)); .orderByDesc(Product::getPutawayTime));
return ServerResponseEntity.success(products); return ServerResponseEntity.success(products);
} }
/** /**
* * IDIDProductServicegetProductByProdId
* IDIDSkuService
* IDProdTagReferenceService
* @PreAuthorize"prod:prod:info"访
*
* @param prodId
* @return ServerResponseEntityID
*/ */
@GetMapping("/info/{prodId}") @GetMapping("/info/{prodId}")
@PreAuthorize("@pms.hasPermission('prod:prod:info')") @PreAuthorize("@pms.hasPermission('prod:prod:info')")
@ -87,14 +105,21 @@ public class ProductController {
List<Sku> skuList = skuService.listByProdId(prodId); List<Sku> skuList = skuService.listByProdId(prodId);
prod.setSkuList(skuList); prod.setSkuList(skuList);
//获取分组标签 // 获取分组标签通过ProdTagReferenceService的listTagIdByProdId方法获取该商品关联的标签ID列表并设置到商品对象中。
List<Long> listTagId = prodTagReferenceService.listTagIdByProdId(prodId); List<Long> listTagId = prodTagReferenceService.listTagIdByProdId(prodId);
prod.setTagList(listTagId); prod.setTagList(listTagId);
return ServerResponseEntity.success(prod); return ServerResponseEntity.success(prod);
} }
/** /**
* * @ValidProductParam
* checkParamProductParamProductBeanUtil
* JSONIDID
* 1ProductServicesaveProduct
* @PreAuthorize"prod:prod:save"访
*
* @param productParam
* @return ServerResponseEntity
*/ */
@PostMapping @PostMapping
@PreAuthorize("@pms.hasPermission('prod:prod:save')") @PreAuthorize("@pms.hasPermission('prod:prod:save')")
@ -114,7 +139,16 @@ public class ProductController {
} }
/** /**
* * @ValidProductParam
* checkParamProductServicegetProductByProdIdID
* IDID
* ProductParamProductBeanUtilJSON
* ProductServiceupdateProduct
* IDBasketService
* @PreAuthorize"prod:prod:update"访
*
* @param productParam
* @return ServerResponseEntity
*/ */
@PutMapping @PutMapping
@PreAuthorize("@pms.hasPermission('prod:prod:update')") @PreAuthorize("@pms.hasPermission('prod:prod:update')")
@ -151,7 +185,14 @@ public class ProductController {
} }
/** /**
* * IDProductServicegetProductByProdId
* IDID
* ProductServiceremoveProductByProdId
* IDBasketService
*
*
* @param prodId
* @return ServerResponseEntity
*/ */
public ServerResponseEntity<Void> delete(Long prodId) { public ServerResponseEntity<Void> delete(Long prodId) {
Product dbProduct = productService.getProductByProdId(prodId); Product dbProduct = productService.getProductByProdId(prodId);
@ -159,7 +200,7 @@ public class ProductController {
throw new YamiShopBindException("无法获取非本店铺商品信息"); throw new YamiShopBindException("无法获取非本店铺商品信息");
} }
List<Sku> dbSkus = skuService.listByProdId(dbProduct.getProdId()); List<Sku> dbSkus = skuService.listByProdId(dbProduct.getProdId());
// 删除商品 // 删除商品通过ProductService的removeProductByProdId方法根据商品ID删除商品信息。
productService.removeProductByProdId(prodId); productService.removeProductByProdId(prodId);
for (Sku sku : dbSkus) { for (Sku sku : dbSkus) {
@ -177,7 +218,11 @@ public class ProductController {
} }
/** /**
* * IDIDdelete
* @PreAuthorize"prod:prod:delete"访
*
* @param prodIds ID
* @return ServerResponseEntity
*/ */
@DeleteMapping @DeleteMapping
@PreAuthorize("@pms.hasPermission('prod:prod:delete')") @PreAuthorize("@pms.hasPermission('prod:prod:delete')")
@ -189,7 +234,14 @@ public class ProductController {
} }
/** /**
* * IDProductID
* 1ProductServiceupdateById
* ProductServiceIDBasketService
* @PreAuthorize"prod:prod:status"访
*
* @param prodId
* @param prodStatus 10
* @return ServerResponseEntity
*/ */
@PutMapping("/prodStatus") @PutMapping("/prodStatus")
@PreAuthorize("@pms.hasPermission('prod:prod:status')") @PreAuthorize("@pms.hasPermission('prod:prod:status')")
@ -210,26 +262,8 @@ public class ProductController {
return ServerResponseEntity.success(); return ServerResponseEntity.success();
} }
private void checkParam(ProductParam productParam) { /**
if (CollectionUtil.isEmpty(productParam.getTagList())) { * ProductParam
throw new YamiShopBindException("请选择产品分组"); * 1.
} * 2.
* 3.
Product.DeliveryModeVO deliveryMode = productParam.getDeliveryModeVo();
boolean hasDeliverMode = deliveryMode != null
&& (deliveryMode.getHasShopDelivery() || deliveryMode.getHasUserPickUp());
if (!hasDeliverMode) {
throw new YamiShopBindException("请选择配送方式");
}
List<Sku> skuList = productParam.getSkuList();
boolean isAllUnUse = true;
for (Sku sku : skuList) {
if (sku.getStatus() == 1) {
isAllUnUse = false;
}
}
if (isAllUnUse) {
throw new YamiShopBindException("至少要启用一种商品规格");
}
}
}
Loading…
Cancel
Save