package com.oying.modules.pc.product.events.handler; import com.oying.modules.pc.common.core.constrant.AuditStatusEnum; import com.oying.modules.pc.product.domain.Product; import com.oying.modules.pc.product.domain.ProductAudit; import com.oying.modules.pc.product.domain.enums.ProductAuditTypeEnum; import com.oying.modules.pc.product.domain.enums.ProductStatusEnum; import com.oying.modules.pc.product.service.ProductService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @Slf4j @Component @RequiredArgsConstructor public class ProductFullUpdateAuditVerdictHandler implements ProductAuditVerdictHandler { private final ProductService productService; @Override public boolean supports(ProductAuditTypeEnum auditType) { return ProductAuditTypeEnum.FULL_UPDATE.equals(auditType); } @Override public void handle(ProductAudit audit) { AuditStatusEnum auditStatus = AuditStatusEnum.get(audit.getStatus()); Product existingProduct = productService.getById(audit.getProductId()); existingProduct.setStatus(auditStatus.getValue()); if (AuditStatusEnum.APPROVED.equals(auditStatus)) { existingProduct.setShelfStatus(ProductStatusEnum.NO_AVAILABLE.getValue()); } productService.updateById(existingProduct); } }