FM/Assets/Scripts/Runtime/ShoppingCartManager.cs

211 lines
5.4 KiB
C#

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<string, ShoppingCartData> _datas = new Dictionary<string, ShoppingCartData>();
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<string, ShoppingCartData> 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;
/// <summary>
/// name
/// </summary>
public string bookName;
/// <summary>
/// 价格
/// </summary>
public int bookAmount;
/// <summary>
/// 优惠
/// </summary>
public int bookDiscount;
/// <summary>
/// 数量
/// </summary>
public int count;
/// <summary>
/// 预览图
/// </summary>
public byte[] previewImage;
/// <summary>
/// 设计图
/// </summary>
public List<byte[]> designImage = new List<byte[]>();
}
public class ShoppingCartManager : ManagerBase<ShoppingCartManager>
{
private ShoppingCart shoppingCart = new();
public ShoppingCart ShoppingCart => shoppingCart;
private Dictionary<string, ProductScriptableObject>
products = new Dictionary<string, ProductScriptableObject>();
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();
}
}
}