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