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);
|
}
|
}
|