package com.oying.modules.pc.product.events.handler; import com.oying.modules.pc.product.domain.ProductAudit; import com.oying.modules.pc.product.domain.enums.ProductAuditTypeEnum; import com.oying.modules.pc.product.events.ProductAuditVerdictEvent; import com.oying.modules.pc.product.service.ProductAuditService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component; @Slf4j @Component @RequiredArgsConstructor public class ProductAuditVerdictEventHandler { private final ProductAuditService productAuditService; private final ProductAuditVerdictAfterHandlerFactory handlerFactory; /** * 监听 ProductAuditVerdictEvent 事件 */ @EventListener public void handleProductAuditPassEvent(ProductAuditVerdictEvent event) { log.info("监听到商品审核事件: {}", event); try { ProductAudit productAudit = productAuditService.getById(event.getAuditId()); ProductAuditTypeEnum auditType = ProductAuditTypeEnum.valueOf(productAudit.getType()); ProductAuditVerdictHandler handler = handlerFactory.getHandler(auditType); handler.handle(productAudit); log.info("商品审核事件处理成功: auditId={}", event.getAuditId()); } catch (Exception e) { log.error("处理商品审核事件时发生异常: auditId={}", event.getAuditId(), e); throw e; } } }