package com.fs.newAdv.event;


import com.fs.newAdv.enums.SystemEventTypeEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Component;

/**
 * 转化事件发布器
 *
 * @author zhangqin
 * @date 2025-11-03
 * @updated 2025-11-05 添加clickId和advertiser参数
 */
@Slf4j
@Component
public class ConversionEventPublisher {

    @Autowired
    private ApplicationEventPublisher applicationEventPublisher;

    /**
     * 发布转化事件
     *
     * @param traceId   点击ID（广告平台提供）
     * @param eventType 转化事件类型（如：SUBMIT_FORM、REGISTER、PAY）
     * @param value     转化价值（元）
     */
    public void publishConversionEvent(String traceId, SystemEventTypeEnum eventType, Double value) {
        log.info("发布转化事件 | traceId={}, eventType={}, value={}",
                traceId, eventType, value);
        ConversionEvent event = new ConversionEvent(this, traceId, eventType, value);
        applicationEventPublisher.publishEvent(event);
    }

    /**
     * 发布转化事件-无价值
     *
     * @param traceId   点击ID（广告平台提供）
     * @param eventType 转化事件类型（如：SUBMIT_FORM、REGISTER、PAY）
     */
    public void publishConversionEvent(String traceId, SystemEventTypeEnum eventType) {
        this.publishConversionEvent(traceId, eventType, null);
    }

}
