实现从百度营销获取中间号,并且返回所需数据

文章介绍了三个JavaScript和Python接口调用函数:fetchUserData用于获取用户数据,getVirtualPhone用于获取中间号,fetchUserDataAndPhoneData整合了这两项数据。展示了如何使用axios发送POST请求并处理响应数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.获取用户数据


export async function fetchUserData(startDate, endDate) {
    try {
        // 设置起始时间和结束时间
        const startDateStr = moment(startDate).format("YYYY-MM-DD HH:mm:ss");
        const endDateStr = moment(endDate).format("YYYY-MM-DD HH:mm:ss");
        
        console.log("开始时间:", startDateStr);
        console.log("结束时间:", endDateStr);

        const url = "https://api.baidu.com/json/sms/service/LeadsNoticeService/getNoticeList";
        const user_payload = {
            "header": {
                "action": "API-JS",
                "accessToken": 写自己的,
                "userName": "自己的"
            },
            "body": {
                "solutionType": "form",
                "startDate": startDateStr,
                "endDate": endDateStr,
                "pageNo": 1
            }
        };
        const http_headers = {
            
            // "Accept-Encoding": "gzip, deflate",
            "Content-Type": "application/json",
            "Accept": "application/json"
        };
        const user_payload_str = JSON.stringify(user_payload);

        let data = [];
        let count = 0;

        // 发送 POST 请求获取数据
        const response = await axios.post(url, user_payload_str, { headers: http_headers });

        
        // 提取 data 数组的第一个元素
        const entry = response.data.body.data[0];
        
        console.log(entry)
        // 提取 noticeDetailList 数组
        const noticeDetailList = entry.noticeDetailList;

        // 遍历 noticeDetailList 数组
        noticeDetailList.forEach(item => {
            // 从每个 item 对象中提取所需的字段
            const userId = item.userId;
            const cluePhoneNumber = item.cluePhoneNumber;
            const clueId = item.clueId;
            const commitTime = item.commitTime;

            // 将提取的数据存储为对象,并添加到数组中
            data.push({ userId, clueId, cluePhoneNumber, commitTime });


            

            console.log("userId:", userId);
            console.log("cluePhoneNumber:", cluePhoneNumber);
            console.log("clueId:", clueId);
            console.log("commitTime:", commitTime);
            console.log("-----------------------------------------------------");

            // 计数器
            count++;
        });

        console.log("获取用户总数为" + count);

        // 返回获取到的数据
        return data;
    } catch (error) {
        console.error('Error fetching user data:', error);
        throw error;
    }
}

2.中间号获取


export async function getVirtualPhone(refClueId, callee) {
    const url = "https://api.baidu.com/json/sms/service/FMPhoneOutsideApiService/getVirtualPhone";
    const userPayload = {
        header: {
            action: "API-PYTHON",
            accessToken: 自己的, 
            userName: "自己的" 
        },
        body: {
            refClueId: refClueId,
            callee: callee
        }
    };
    const httpHeaders = {
       
        // "Accept-Encoding": "gzip, deflate",
        "Content-Type": "application/json",
        "Accept": "application/json"
    };
                                let Cendata = [];
                                let phoneData = [];
    try {
        const response = await axios.post(url, userPayload, { headers: httpHeaders });
            
            // 提取 data 数组的第一个元素
            const entry = response.data.body.data[0];

            // 处理 virtualPhone、realPhone、expireTime 数据
            const virtualPhone = entry.virtualPhone;
            const realPhone = entry.realPhone;
            const expireTime = entry.expireTime;
           
            //封装到json
            const storedData = {
                virtualPhone: entry.virtualPhone,
                realPhone: entry.realPhone,
                expireTime: entry.expireTime
              };

        return storedData; // 返回解析后的数据

    } catch (error) {
        console.error('Error:', error);
        throw error;
    }
}

3.数据整合



//fetchUserDataAndPhoneData = async function fetchUserDataAndPhoneData(){
export async function fetchUserDataAndPhoneData() {
    try {
        const startDate = moment().subtract(4, 'day'); // 4天前
        const endDate = moment(); // 当前时间
       
        // 返回的数组,用于前端展示
        let respuser = [];

        // 获取用户数据
        const userData = await fetchUserData(startDate, endDate);

        // 遍历用户数据
        for (let i = 0; i < userData.length; i++) {
            const data = userData[i];
            const clueId = data.clueId;
            const cluePhoneNumber = data.cluePhoneNumber;
            const commitTime = data.commitTime;

            // 获取虚拟手机号信息
            const phoneData = await getVirtualPhone(clueId, cluePhoneNumber);


            // 提取所需的信息,因为返回值是JSON对象所以 不需要解析
            const virtualPhone = phoneData.virtualPhone;
            const realPhone = phoneData.realPhone;
            const expireTime = phoneData.expireTime;

            // 将所需的数据封装成一个数组
            respuser.push({ 
                clueId: clueId, 
                realPhone: realPhone, 
                virtualPhone: virtualPhone, 
                expireTime: expireTime, 
                commitTime: commitTime 
            });
        }

        // 返回处理完毕的 respuser 数组
        return respuser;
    } catch (error) {
        // 处理错误
        console.error('获取用户数据时出现错误:', error);
        throw error;
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值