import { create } from 'zustand'; import { persist } from 'zustand/middleware'; /** * 企业信息接口 */ export interface Company { id: number; name: string; plan: string; status: string; max_users: number; is_trial: boolean; data_retention_months: number; created_at: string; updated_at: string; } /** * 企业状态接口 */ interface CompanyState { currentCompany: Company | null; companies: Company[]; // Actions setCompany: (company: Company) => void; setCompanies: (companies: Company[]) => void; addCompany: (company: Company) => void; updateCompany: (companyId: number, companyData: Partial) => void; removeCompany: (companyId: number) => void; clearCompanies: () => void; } /** * 企业状态 Store * 使用 localStorage 持久化 */ export const useCompanyStore = create()( persist( (set) => ({ currentCompany: null, companies: [], setCompany: (company) => { // 保存当前企业 ID 到 localStorage if (typeof window !== 'undefined') { localStorage.setItem('company_id', String(company.id)); } set({ currentCompany: company }); }, setCompanies: (companies) => { set({ companies }); }, addCompany: (company) => { set((state) => ({ companies: [...state.companies, company], })); }, updateCompany: (companyId, companyData) => { set((state) => ({ companies: state.companies.map((c) => c.id === companyId ? { ...c, ...companyData } : c ), currentCompany: state.currentCompany?.id === companyId ? { ...state.currentCompany, ...companyData } : state.currentCompany, })); }, removeCompany: (companyId) => { set((state) => ({ companies: state.companies.filter((c) => c.id !== companyId), currentCompany: state.currentCompany?.id === companyId ? null : state.currentCompany, })); }, clearCompanies: () => { set({ companies: [], currentCompany: null }); }, }), { name: 'company-storage', partialize: (state) => ({ currentCompany: state.currentCompany, companies: state.companies, }), } ) );