package com.red.circle.other.app.command.rocket;

import com.red.circle.other.app.dto.cmd.RocketEnergyAddCmd;
import com.red.circle.other.app.manager.RocketEnergyAggregator;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

/**
 * 火箭能量增加命令执行器
 * 优化版：使用异步聚合，避免频繁锁竞争和推送
 *
 * @author system
 * @date 2025-01-15
 */
@Slf4j
@Component
@RequiredArgsConstructor
public class RocketEnergyAddCmdExe {

    private final RocketEnergyAggregator rocketEnergyAggregator;

    /**
     * 执行能量增加（异步聚合）
     */
    public void execute(RocketEnergyAddCmd cmd) {
        // 直接提交到聚合器，不加锁
        rocketEnergyAggregator.addEnergy(cmd);
        
        log.debug("提交火箭能量增加任务: roomId={}, userId={}, energy={}", 
                cmd.getRoomId(), cmd.getUserId(), cmd.getGiftGoldValue());
    }
}
