// 我的场景

import { defineStore } from "pinia";
import { ref, computed } from "vue";

export const useShoppingCartStore = defineStore(
  "myShoppingCart",
  () => {
    const cartItems = ref([]);

    // 初始化购物车数据
    const initCart = () => {
      const savedCart = localStorage.getItem("shoppingCart");
      if (savedCart) {
        cartItems.value = JSON.parse(savedCart);
      }
    };

    // 添加商品到购物车
    const addItem = (item) => {
      const existingItem = cartItems.value.find((i) => i.id === item.id);
      if (existingItem) {
        existingItem.quantity += 1;
      } else {
        cartItems.value.push({ ...item, quantity: 1 });
      }
      saveCart();
    };

    // 更新商品数量
    const updateQuantity = (itemId, quantity) => {
      const item = cartItems.value.find((i) => i.id === itemId);
      if (item) {
        item.quantity = quantity;
        saveCart();
      }
    };

    // 删除商品
    const removeItem = (itemId) => {
      cartItems.value = cartItems.value.filter((item) => item.id !== itemId);
      saveCart();
    };

    // 清空购物车
    const clearCart = () => {
      cartItems.value = [];
      saveCart();
    };

    // 保存购物车到localStorage
    const saveCart = () => {
      localStorage.setItem("shoppingCart", JSON.stringify(cartItems.value));
    };

    // 计算总价
    const totalPrice = computed(() => {
      return cartItems.value.reduce(
        (sum, item) => sum + item.price * item.quantity,
        0
      );
    });

    // 计算商品总数
    const totalItems = computed(() => {
      return cartItems.value.reduce((sum, item) => sum + item.quantity, 0);
    });

    // 初始化购物车
    initCart();

    return {
      cartItems,
      addItem,
      updateQuantity,
      removeItem,
      clearCart,
      totalPrice,
      totalItems,
    };
  },
  {
    persist: true,
  }
);
