Files
Yi.Framework/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Entities/Bank/BankCardAggregateRoot.cs
2024-05-22 14:35:08 +08:00

102 lines
2.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SqlSugar;
using Volo.Abp.Auditing;
using Volo.Abp.Domain.Entities;
using Yi.Framework.Bbs.Domain.Shared.Enums;
namespace Yi.Framework.Bbs.Domain.Entities.Bank
{
/// <summary>
/// 银行卡
/// </summary>
[SugarTable("BankCard")]
public class BankCardAggregateRoot : AggregateRoot<Guid>, IHasCreationTime
{
public BankCardAggregateRoot()
{
}
public BankCardAggregateRoot(Guid userId)
{
this.UserId = userId;
}
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true)]
public override Guid Id { get; protected set; }
public DateTime CreationTime { get; set; }
/// <summary>
/// 上一次存款日期
/// </summary>
public DateTime? LastDepositTime { get; set; }
/// <summary>
/// 上一次取款日期
/// </summary>
public DateTime? LastDrawTime { get; set; }
/// <summary>
/// 用户id
/// </summary>
public Guid UserId { get; set; }
/// <summary>
/// 当前存储的钱
/// </summary>
public decimal StorageMoney { get; set; } = 0;
/// <summary>
/// 最大可存储的钱钱
/// </summary>
public decimal MaxStorageMoney { get; set; } = 100;
/// <summary>
/// 满期限时间,可空
/// </summary>
public DateTime? FulltermTime { get; set; }
/// <summary>
/// 银行卡状态
/// </summary>
public BankCardStateEnum BankCardState { get; set; } = BankCardStateEnum.Unused;
public bool IsStorageFull()
{
if (FulltermTime is null)
{
return false;
}
return DateTime.Now >= FulltermTime;
}
public void SetDrawMoney()
{
this.BankCardState = BankCardStateEnum.Unused;
LastDrawTime = DateTime.Now;
this.FulltermTime = null;
this.StorageMoney = 0;
}
public void SetStorageMoney(decimal storageMoney)
{
if (storageMoney > MaxStorageMoney)
{
throw new UserFriendlyException($"存款数不能大于该卡的上限-【{MaxStorageMoney}】钱钱");
}
StorageMoney = storageMoney;
LastDepositTime = DateTime.Now;
FulltermTime = LastDepositTime + TimeSpan.FromDays(3);
this.BankCardState = BankCardStateEnum.Wait;
}
}
}