50 lines
2.1 KiB
JavaScript
50 lines
2.1 KiB
JavaScript
(async () => {
|
|
const api = 'mtop.alibaba.idle.seller.pc.datacompass.item.list';
|
|
const H = { 'idle_site_biz_code': 'COMMONPRO', 'idle_user_group_member_id': '' };
|
|
const call = (dateType, page, pageSize) => lib.mtop.request({
|
|
api, v: '1.0', type: 'POST', dataType: 'json', ext_headers: H,
|
|
data: {
|
|
tabType: 'all', dateRange: '', ms: '', dateType, categoryInfoStr: '[]',
|
|
itmName: '', itmId: '', isDpStk: '', mktActId: '', page, pageSize,
|
|
},
|
|
});
|
|
const proj = x => ({
|
|
id: x.itmId, name: x.itmName, price: x.itmPrice, postDt: x.postDt, days: x.daysOnShelf,
|
|
pv: x.showPv, uv: x.showUv, ipv: x.ipv, ipvUv: x.ipvUv, chat: x.chatUv,
|
|
payUv: x.payByrCnt, ord: x.payOrdCnt, amt: x.payAmt, cvr: x.ipvPayUcvr,
|
|
rfdOrd: x.crtRfdOrdCnt, rfdAmt: x.crtRfdAmt,
|
|
c3: x.chnlCateLevel3Name, c4: x.chnlCateLevel4Name,
|
|
});
|
|
const out = { test: null, err: null, data: {} };
|
|
try {
|
|
const r0 = await call('recent7d', 1, 5);
|
|
const d0 = r0 && r0.data && r0.data.data;
|
|
out.test = {
|
|
ret: r0 && r0.ret,
|
|
len: d0 && d0.list && d0.list.length,
|
|
containerKeys: d0 ? Object.keys(d0) : null,
|
|
itemKeys: d0 && d0.list && d0.list[0] ? Object.keys(d0.list[0]) : null,
|
|
};
|
|
if (!d0 || !d0.list || !d0.list.length) return out;
|
|
|
|
for (const dt of ['recent7d', 'recent30d']) {
|
|
const size = 100;
|
|
const first = await call(dt, 1, size);
|
|
const fd = first && first.data && first.data.data;
|
|
const total = (fd && (fd.total ?? fd.count ?? fd.totalCount)) || (fd && fd.list ? fd.list.length : 0);
|
|
const items = fd && fd.list ? fd.list.map(proj) : [];
|
|
const pages = Math.min(Math.ceil(total / size), 8);
|
|
for (let p = 2; p <= pages; p++) {
|
|
const r = await call(dt, p, size);
|
|
const d = r && r.data && r.data.data;
|
|
if (d && d.list) items.push(...d.list.map(proj));
|
|
}
|
|
out.data[dt] = { total, pagesFetched: pages, count: items.length, items };
|
|
}
|
|
} catch (e) {
|
|
out.err = (e && e.data && e.data.errorMsg) || String((e && e.message) || e);
|
|
out.errRet = e && e.ret;
|
|
}
|
|
return out;
|
|
})()
|