Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
5.5 kB
1
Indexable
var fullCost = 0;
var totalOrders = 0;
var listItem = [];
var offset = 0;

var getDonHang = async ({ offset }) => {
  console.log("Đang lấy thêm danh sách đơn hàng .....");
  var res = await fetchData({ offset });

  var { details_list } = res.data;
  var isContinue = details_list.length >= 20;

  details_list.forEach((item) => {
    var { info_card, shipping } = item;

    var { final_total, order_list_cards } = info_card;
    fullCost = fullCost + final_total / 100000;
    totalOrders += 1;
    // console.log("Current cost: ", formatNumber(fullCost));
    // console.log("items cost: ", formatNumber(final_total / 100000));
    const { tracking_info } = shipping;
    order_list_cards.forEach((card) => {
      card.product_info.item_groups.forEach((item) => {
        item.items.forEach((real) => {
          // totalItem += 1;
          // if (!Object.keys(max_item).length) max_item = real;
          // if (max_item.item_price < real.item_price) max_item = real;
          listItem.push({
            name: real.name,
            amount: real.amount,
            item_price: real.item_price / 100000,
            model_name: real.model_name,
            time: new Date(tracking_info.ctime * 1000),
          });
          // console.log(
          //   real.name,
          //   "->",
          //   real.model_name,
          //   ": ",
          //   formatNumber(real.item_price / 100000),
          //   " VND"
          // );
        });
      });
    });

    // console.log("---------------");
  });

  if (isContinue) {
    offset = offset + 20;
    getDonHang({ offset });
  } else {
    console.log(
      "%cĐã lấy tất cả đơn hàng, đang tính toán thống kê ...",
      "color:green"
    );
    thongKe({ listItem, fullCost, totalOrders });
  }
  // } else {
  //   console.log("Bạn đã tiêu ", formatNumber(fullCost));
  //   console.log(
  //     "Bạn đã mua ",
  //     offset + details_list.length,
  //     " đơn hàng với ",
  //     totalItem,
  //     " vật phẩm"
  //   );
  //   console.log(
  //     "%cĐơn hàng nhiều nhất là ",
  //     "color:green",
  //     max_item.name,
  //     ": ",
  //     formatNumber(max_item.item_price / 100000),
  //     " VND"
  //   );
  // }
  // return { fullCost, totalOrders: offset + details_list.length, totalItem };
};

var fetchData = async ({ offset = 0 }) => {
  var res = await fetch(
    `https://shopee.vn/api/v4/order/get_order_list?list_type=3&offset=${offset}`
  ).then((rs) => rs.json()); // Parse the JSON response

  return res;
};

function formatNumber(number) {
  number = number.toString(); // Ensure it's a string
  const formattedNumber = number.replace(/\B(?=(\d{3})+(?!\d))/g, ".");
  return formattedNumber;
}

function top10HighestItems(data) {
  // Sort the data by item price in descending order using the spread operator and sort method
  const sortedData = [...data].sort((a, b) => b.item_price - a.item_price);
  // Return the top 10 items using slice
  return sortedData.slice(0, 10);
}

var tongDonHang = (data) => {
  var sum = 0;
  data.forEach((item) => (sum = sum + item.item_price));

  return sum;
};
await getDonHang({ offset });

var thongKe = (stats) => {
  const { listItem, fullCost, totalOrders } = stats;

  console.log(
    `%cBạn đã tiêu tổng cộng:  ${formatNumber(fullCost)} VND`,
    "color:yellow;font-size:20px"
  );

  console.log(
    `%cBạn đã chốt: ${totalOrders} đơn với ${listItem.length} món`,
    "color:green;;font-size:16px"
  );

  console.log(
    `Món hàng gần nhất bạn đã mua là: ${listItem[0].name}: ${formatNumber(
      listItem[0].item_price
    )} VND`
  );

  console.log(
    `Món hàng đầu tiên bạn đã mua là: ${
      listItem[listItem.length - 1].name
    }: ${formatNumber(listItem[listItem.length - 1].item_price)} VND`
  );

  const thisYear = listItem.filter((item) => item.time.getFullYear() === 2024);

  console.log(
    `%cNăm 2024, bạn đã mua ${thisYear.length} món, tổng cộng: ${formatNumber(
      tongDonHang(thisYear)
    )} vnd (chi phí thực trả)`,
    "color:green;font-size:20px"
  );
  console.log(
    "%c10 món hàng cao tiền nhất là: (chưa gồm voucher, phí vận chuyển)",
    "color:#ee4d2d;font-size:16px"
  );

  top10HighestItems(thisYear).forEach((item) =>
    console.log(`- ${item.name}: ${formatNumber(item.item_price)} vnd`)
  );

  const year2023 = listItem.filter((item) => item.time.getFullYear() === 2023);

  console.log(
    `%cNăm 2023, bạn đã mua ${year2023.length} món, tổng cộng: ${formatNumber(
      tongDonHang(year2023)
    )} vnd`,
    "color:green;font-size:20px"
  );
  console.log(
    "%c10 món hàng cao tiền nhất là: (chưa gồm voucher, phí vận chuyển)",
    "color:#ee4d2d;font-size:16px"
  );

  top10HighestItems(year2023).forEach((item) =>
    console.log(`- ${item.name}: ${formatNumber(item.item_price)} vnd`)
  );

  const year2022 = listItem.filter((item) => item.time.getFullYear() === 2022);

  console.log(
    `%cNăm 2022, bạn đã mua ${year2022.length} món, tổng cộng: ${formatNumber(
      tongDonHang(year2022)
    )} vnd`,
    "color:green;font-size:20px"
  );
  console.log(
    "%c10 món hàng cao tiền nhất là: (chưa gồm voucher, phí vận chuyển)",
    "color:#ee4d2d;font-size:16px"
  );
  top10HighestItems(year2022).forEach((item) =>
    console.log(`- ${item.name}: ${formatNumber(item.item_price)} vnd`)
  );
};
// thongKe();
Leave a Comment