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