From 7ece553fd95f30dcfafa66f667ef9d0c064a22e6 Mon Sep 17 00:00:00 2001 From: xin <1099200748@qq.com> Date: Sat, 19 Jul 2025 16:27:12 +0800 Subject: [PATCH] Merge branch 'pxb' into xin --- oying-system/src/main/java/com/oying/modules/pc/product/service/impl/ProductMerchantServiceImpl.java | 34 ++++++++++++++++++++++++++++------ 1 files changed, 28 insertions(+), 6 deletions(-) diff --git a/oying-system/src/main/java/com/oying/modules/pc/product/service/impl/ProductMerchantServiceImpl.java b/oying-system/src/main/java/com/oying/modules/pc/product/service/impl/ProductMerchantServiceImpl.java index 583047a..24ed038 100644 --- a/oying-system/src/main/java/com/oying/modules/pc/product/service/impl/ProductMerchantServiceImpl.java +++ b/oying-system/src/main/java/com/oying/modules/pc/product/service/impl/ProductMerchantServiceImpl.java @@ -2,6 +2,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjUtil; +import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.oying.exception.BadRequestException; import com.oying.exception.EntityNotFoundException; @@ -12,6 +13,7 @@ import com.oying.modules.pc.product.domain.ProductAudit; import com.oying.modules.pc.product.domain.ProductImage; import com.oying.modules.pc.product.domain.ProductLabel; +import com.oying.modules.pc.product.domain.dto.ProductAuditData; import com.oying.modules.pc.product.domain.dto.ProductImageCreateRequest; import com.oying.modules.pc.product.domain.dto.ProductMerchantCreateRequest; import com.oying.modules.pc.product.domain.dto.ProductMerchantUpdateRequest; @@ -76,7 +78,7 @@ @Transactional(rollbackFor = Exception.class) public void update(ProductMerchantUpdateRequest request) { Product existingProduct = this.findOrThrow(request.getProductId()); - this.validateApprovedStatus(existingProduct.getStatus()); + this.validateApprovedStatus(existingProduct.getShelfStatus()); this.processImagesUpdate(request); this.processLabelsUpdate(request); BeanUtils.copyProperties(request, existingProduct); @@ -87,7 +89,7 @@ @Transactional(rollbackFor = Exception.class) public void updateImages(ProductMerchantUpdateRequest request) { Product existingProduct = this.findOrThrow(request.getProductId()); - this.validateApprovedStatus(existingProduct.getStatus()); + this.validateApprovedStatus(existingProduct.getShelfStatus()); this.findOrThrow(request.getProductId()); this.processImagesUpdate(request); } @@ -96,7 +98,7 @@ @Transactional(rollbackFor = Exception.class) public void updateLabels(ProductMerchantUpdateRequest request) { Product existingProduct = this.findOrThrow(request.getProductId()); - this.validateApprovedStatus(existingProduct.getStatus()); + this.validateApprovedStatus(existingProduct.getShelfStatus()); this.findOrThrow(request.getProductId()); this.processImagesUpdate(request); } @@ -109,10 +111,22 @@ @Override public void putOnShelf(Long productId) { + Product existingProduct = productService.getById(productId); + if (ProductStatusEnum.AVAILABLE.getValue().equals(existingProduct.getShelfStatus())) { + throw new BadRequestException("商品已上架"); + } + + if (productAuditService.hasPendingByStoreId(productId)) { + throw new BadRequestException("已在审核中"); + } + ProductAudit audit = new ProductAudit(); audit.setProductId(productId); audit.setType(ProductChangeTypeEnum.PUT_ON_SHELF.name()); audit.setStatus(AuditStatusEnum.PENDING.getValue()); + ProductAuditData auditData = new ProductAuditData(); + auditData.setOriginalStore(existingProduct); + audit.setData(JSON.toJSONString(auditData)); productAuditService.create(audit); LambdaUpdateWrapper<Product> wrapper = new LambdaUpdateWrapper<Product>() .eq(Product::getProductId, productId) @@ -122,9 +136,14 @@ @Override public void takeOffShelf(Long productId) { + Product existingProduct = productService.getById(productId); + if (ProductStatusEnum.NO_AVAILABLE.getValue().equals(existingProduct.getShelfStatus())) { + return; + } LambdaUpdateWrapper<Product> wrapper = new LambdaUpdateWrapper<Product>() .eq(Product::getProductId, productId) - .set(Product::getStatus, ProductStatusEnum.NO_AVAILABLE.getValue()); + .set(Product::getStatus, ProductStatusEnum.NO_AVAILABLE.getValue()) + .set(Product::getShelfStatus, ProductStatusEnum.NO_AVAILABLE.getValue()); productService.update(wrapper); } @@ -179,11 +198,14 @@ private void handlePutOnShelfAuditEvent(ProductAudit audit) { AuditStatusEnum auditStatus = AuditStatusEnum.get(audit.getStatus()); + Product existingProduct = productService.getById(audit.getProductId()); if (AuditStatusEnum.APPROVED.equals(auditStatus)) { - Product existingProduct = productService.getById(audit.getProductId()); + existingProduct.setStatus(ProductStatusEnum.AVAILABLE.getValue()); + existingProduct.setShelfStatus(ProductStatusEnum.AVAILABLE.getValue()); + } else { existingProduct.setStatus(auditStatus.getValue()); - productService.updateById(existingProduct); } + productService.updateById(existingProduct); } private void validateApprovedStatus(Integer status) { -- Gitblit v1.9.3