using System.Collections.Generic; using HK; namespace Runtime { public class ShoppingCart { public string time = ""; // 下单时间 private string _userName = string.Empty; private string _userModie = string.Empty; private string _userEmail = string.Empty; private string _orderID = string.Empty; private bool _isAgreeSubscribe = false; private Dictionary _datas = new Dictionary(); private string _totalQuantity = "0"; private string _itemsSubTotal = "0"; private string _discount = "0"; private string _totalAmount = "0"; private string _monetary = "HKD"; public string userName { get => _userName; set => _userName = value; } public string userModie { get => _userModie; set => _userModie = value; } public string userEmail { get => _userEmail; set => _userEmail = value; } public string orderID { get => _orderID; set => _orderID = value; } public bool isAgreeSubscribe { get => _isAgreeSubscribe; set => _isAgreeSubscribe = value; } public Dictionary datas => _datas; public string totalQuantity => _totalQuantity; public string itemsSubTotal => _itemsSubTotal; public string discount => _discount; public string totalAmount => _totalAmount; public string monetary { get => _monetary; set { _monetary = value; UpdateDatas(); } } public ShoppingCart() { var value = PlayerPersistent.GetString("monetary"); if (!string.IsNullOrEmpty(value)) { _monetary = value; } UpdateDatas(); } public void AddData(ShoppingCartData data) { if (_datas.TryGetValue(data.onlyOneID, out var da)) { datas[data.onlyOneID] = data; } else { datas.Add(data.onlyOneID, data); } UpdateDatas(); } public void RemoveData(ShoppingCartData data) { datas.Remove(data.onlyOneID); UpdateDatas(); } public void Reset() { datas.Clear(); _userName = string.Empty; _userModie = string.Empty; _userEmail = string.Empty; _orderID = string.Empty; UpdateDatas(); } public void UpdateDatas() { _totalQuantity = string.Empty; _itemsSubTotal = string.Empty; _discount = string.Empty; _totalAmount = string.Empty; int i = 0, d = 0, t = 0, q = 0; foreach (var shoppingCartData in datas.Values) { q += shoppingCartData.count; i += shoppingCartData.bookAmount * shoppingCartData.count; d += shoppingCartData.bookDiscount * shoppingCartData.count; t += shoppingCartData.bookAmount * shoppingCartData.count; } _totalQuantity = $"{q}"; _itemsSubTotal = $"{monetary} {i:F}"; _discount = $"{monetary} {d:F}"; _totalAmount = $"{monetary} {t:F}"; } } public class ShoppingCartData { public string onlyOneID; public string produceID; /// /// name /// public string bookName; /// /// 价格 /// public int bookAmount; /// /// 优惠 /// public int bookDiscount; /// /// 数量 /// public int count; /// /// 预览图 /// public byte[] previewImage; public string previewImageName; public string previewImageUrl; /// /// 设计图 /// public List designImage = new List(); public List designImageName = new List(); public List designImageUrl = new List(); } public class ShoppingCartManager : ManagerBase { private ShoppingCart shoppingCart = new(); public ShoppingCart ShoppingCart => shoppingCart; private Dictionary products = new Dictionary(); public ProductScriptableObject GetProduct(ShoppingCartData data) { return products[data.onlyOneID]; } public void AddToCart(ShoppingCartData data, ProductScriptableObject product) { if (products.TryGetValue(data.onlyOneID, out var product1)) { products[data.onlyOneID] = product; return; } products.Add(data.onlyOneID, product); shoppingCart.AddData(data); } public void RemoveFromCart(ShoppingCartData data) { products.Remove(data.onlyOneID); shoppingCart.RemoveData(data); } public void RefreshCart() { shoppingCart.UpdateDatas(); } public void ResetCart() { shoppingCart.Reset(); products.Clear(); } } }