"use strict";
const common_vendor = require("../../common/vendor.js");
const sheep_api_trade_cart = require("../api/trade/cart.js");
const cart = common_vendor.defineStore({
  id: "cart",
  state: () => ({
    shopNameMap: [],
    shopSkuMap: [],
    list: [],
    // 购物车列表
    selectedIds: [],
    // 已选列表
    isAllSelected: false,
    // 是否全选
    totalPriceSelected: 0
    // 选中项总金额
  }),
  actions: {
    // 获取购物车列表
    async getList() {
      const {
        data,
        code
      } = await sheep_api_trade_cart.CartApi.getCartList();
      if (code === 0) {
        this.list = data.validList;
        this.shopSkuMap = data.shopSkuMap;
        this.shopNameMap = data.shopNameMap;
        this.selectedIds = [];
        this.isAllSelected = true;
        this.totalPriceSelected = 0;
        this.list.forEach((item) => {
          if (item.selected) {
            this.selectedIds.push(item.id);
            this.totalPriceSelected += item.count * item.sku.price;
          } else {
            this.isAllSelected = false;
          }
        });
      }
    },
    // 添加购物车
    async add(goodsInfo) {
      const {
        code
      } = await sheep_api_trade_cart.CartApi.addCart({
        skuId: goodsInfo.id,
        count: goodsInfo.goods_num
      });
      if (code === 0) {
        await this.getList();
      }
    },
    // 更新购物车
    async update(goodsInfo) {
      const {
        code
      } = await sheep_api_trade_cart.CartApi.updateCartCount({
        id: goodsInfo.goods_id,
        count: goodsInfo.goods_num
      });
      if (code === 0) {
        await this.getList();
      }
    },
    // 移除购物车
    async delete(ids) {
      let id;
      if (typeof ids === "number") {
        id = ids;
      } else {
        id = ids.join(",");
      }
      const {
        code
      } = await sheep_api_trade_cart.CartApi.deleteCart(id);
      if (code === 0) {
        await this.getList();
      }
    },
    // 单选购物车商品
    async selectSingle(goodsId) {
      const {
        code
      } = await sheep_api_trade_cart.CartApi.updateCartSelected({
        ids: [goodsId],
        selected: !this.selectedIds.includes(goodsId)
        // 取反
      });
      if (code === 0) {
        await this.getList();
      }
    },
    // 全选购物车商品
    async selectAll(flag) {
      const {
        code
      } = await sheep_api_trade_cart.CartApi.updateCartSelected({
        ids: this.list.map((item) => item.id),
        selected: flag
      });
      if (code === 0) {
        await this.getList();
      }
    },
    // 清空购物车。注意，仅用于用户退出时，重置数据
    emptyList() {
      this.list = [];
      this.selectedIds = [];
      this.isAllSelected = true;
      this.totalPriceSelected = 0;
    }
  },
  persist: {
    enabled: true,
    strategies: [{
      key: "cart-store"
    }]
  }
});
const __vite_glob_0_1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  default: cart
}, Symbol.toStringTag, { value: "Module" }));
exports.__vite_glob_0_1 = __vite_glob_0_1;
exports.cart = cart;
