Greasy Fork 支持简体中文。

看看我赚了多少钱

我就看看赚了多少钱

// ==UserScript==
// @name         看看我赚了多少钱
// @namespace    http://tampermonkey.net/
// @version      3.0
// @description  我就看看赚了多少钱
// @author       Chengguan
// @match        https://avalon.gaoding.com/*
// @match        https://ke.huaban.com/admin/*
// @match        https://market.gaoding.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=gaoding.com
// @grant        GM_registerMenuCommand
// @grant        GM_xmlhttpRequest
// @run-at       document-body
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

     function relativeLocate(dayNum = 0) {
        var dataObject = new Date();
        dataObject.setHours(dataObject.getHours() + 8 + dayNum * 24);
        var dataStr = dataObject.toJSON().substr(0, 10);

        var timeStart_str = `${dataStr}+00:00:00`
        var timeEnd_str = `${dataStr}+23:59:59`

        return ({
            start: timeStart_str,
            end: timeEnd_str
        });
    }

    let business_id = 57;
    let page_size = 100;
    let prevList = [];


    function getData(page_num = 1, timeRange, resolve) {
        GM_xmlhttpRequest({
            method: "get",
            url: `https://api-market.gaoding.com/oms/admin/orders?business_id=${business_id}&status=7&page_num=${page_num}&page_size=${page_size}&created_at%5Bgte%5D=${timeRange.start}&created_at%5Blte%5D=${timeRange.end}`,
            // data: 'typeName=【' + id + '】' + res.data.title + '&content=' +res.rows[i].title + '&answer='+myAnswer+'&options=' +JSON.stringify(myOptions),
            headers:  {
                // "Content-Type": "application/x-www-form-urlencoded"
            },
            onload: function(res){
                if(res.status === 200){
                    console.log(`第${page_num}页: 成功`)

                    const json = JSON.parse(res.responseText);
                    prevList = [...prevList, ...json]
                    if (json.length >= page_size) {
                        return getData(page_num + 1, timeRange, resolve);
                    } else {
                        resolve(prevList);
                    }
                }else{
                    console.log('失败')
                    console.log(res)
                }
            },
            onerror : function(err){
                console.log('error')
                console.log(err)
            }
        });
    }

    function printData(list) {
        const data = [];
        const map = {};
        let plusOrderNumber = 0;
        list.forEach((item) => {
          // const goodName = item.skus[0].ref_body.name;
          const goodName = item.skus.map((sku) => sku.ref_body.name).join("\n");
          if (map[goodName]) {
            map[goodName]["数量"] += 1;
            map[goodName]["价格"] += item.amount;
          } else {
            map[goodName] = {
              商品名称: goodName,
              数量: 1,
              价格: item.amount,
            };
            data.push(map[goodName]);
          }

          if (goodName.includes("稿定")) {
            plusOrderNumber += 1;
          }
        });

        data.sort((a, b) => a["数量"] - b["数量"]);
        console.table(data);

        // 按价格排序
        const priceGroup = []
        const maps = {};
        list.forEach((item) => {
            if (!maps[item.amount]) {
                maps[item.amount] = {'价格': item.amount, '订单笔数': 0, '合计金额': 0 };
                priceGroup.push(maps[item.amount]);
            }
            maps[item.amount]['订单笔数'] += 1;
            maps[item.amount]['合计金额'] = maps[item.amount]['订单笔数'] * item.amount;
        })

        console.table(priceGroup);
    }

    GM_registerMenuCommand('【素材】今天', () => {
        // relativeLocate(0);
        const result = new Promise((resolve) => {
            const timeRage = relativeLocate(0);
            console.info(`时间:${timeRage.start} -- ${timeRage.end}`);
            getData(1, timeRage, resolve);
        });
        result.then(printData);
    }, 't');

    GM_registerMenuCommand('【素材】昨天', () => {
       // relativeLocate(0);
        const result = new Promise((resolve) => {
            const timeRage = relativeLocate(-1);
            console.info(`时间:${timeRage.start} -- ${timeRage.end}`);
            getData(1, timeRage, resolve);
        });
        result.then(printData);
    }, 'y');

    GM_registerMenuCommand('【素材】前天', () => {
       const result = new Promise((resolve) => {
        const timeRage = relativeLocate(-2);
        console.info(`时间:${timeRage.start} -- ${timeRage.end}`);
        getData(1, timeRage, resolve);
        });
        result.then(printData);
    }, 'b');

//     GM_registerMenuCommand('【素材】统计', () => {
//         var nodes = [...document.querySelectorAll('.gda-table-row>td:nth-of-type(3)')];
//         var maps = {};
//         var all = nodes.reduce((acc, node) => {
//             var num = Number(node.innerText.replace(/\D+/, ''));
//             maps[num] = (maps[num] || 0) + 1;
//             return acc + num;
//         }, 0);

//         var prices = Object.keys(maps).sort((a, b) => parseInt(b) - parseInt(a)).map(key => {
//             var label = `价格 ${key}:`
//             return `${label.padEnd(15)} ${maps[key]}笔`
//         });

//         var messageStr = `
//     我今天赚了 ${all}
//     订单数:${nodes.length}
//     平均单价: ${all / nodes.length}
//     ------------------
//             ${prices.join('\n            ')}
// `;
//         console.info(messageStr);
//         alert(messageStr);
//     }, 's');
})();