package com.fs.aiSipCall.service;

import com.fs.aiSipCall.domain.AiSipCallPhone;
import com.fs.aiSipCall.service.impl.AiSipCallPhoneServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @Author：peicj
 * @Description: SIP通话记录事务服务（用于解决同类方法调用事务不生效问题）
 * @Date：2026/4/16
 */
@Slf4j
@Service
public class AiSipCallTransactionService {

    @Lazy
    @Autowired
    private AiSipCallPhoneServiceImpl callPhoneServiceImpl;

    /**
     * 批量更新通话记录（带事务）
     * @param dataList 待更新的数据列表
     */
    @Transactional(rollbackFor = Exception.class)
    public void batchUpdateCallRecords(List<AiSipCallPhone> dataList) {
        if (dataList == null || dataList.isEmpty()) {
            log.warn("批量更新通话记录：数据列表为空，跳过更新");
            return;
        }
        
        try {
            callPhoneServiceImpl.updateBatchById(dataList);
            log.info("批量更新通话记录成功，共{}条", dataList.size());
        } catch (Exception e) {
            log.error("批量更新通话记录失败，共{}条，将触发事务回滚", dataList.size(), e);
            throw e; // 抛出异常触发事务回滚
        }
    }
}
