/// <summary> /// 接受新的善心记录 更新统计信息 /// </summary> /// <param name="benevolenceTransfer"></param> public void AcceptNewBenevolenceTransfer(BenevolenceTransfer benevolenceTransfer) { if (!_benevolenceTransfers.Add(benevolenceTransfer.Id)) { return; } var finallyValue = _benevolence; //业务逻辑判断 BenevolenceTransferInfo benevolenceTransferInfo = benevolenceTransfer.GetInfo(); //统计信息 var walletStatisticInfo = _walletStatisticInfo; if (benevolenceTransferInfo.Direction == WalletDirection.Out) {//如果是出账 判断账号余额是否够 if (_benevolence < benevolenceTransferInfo.Amount) { throw new Exception("账户余额不足"); } finallyValue -= benevolenceTransferInfo.Amount; } else { //如果是进账 更新统计信息 if (_walletStatisticInfo.UpdatedOn.Date.Equals(DateTime.Now.Date)) { //今日非第一个记录 walletStatisticInfo.BenevolenceTotal += benevolenceTransferInfo.Amount; walletStatisticInfo.TodayBenevolenceAdded += benevolenceTransferInfo.Amount; walletStatisticInfo.UpdatedOn = DateTime.Now; } else { //今日第一个收入 walletStatisticInfo.BenevolenceTotal += benevolenceTransferInfo.Amount; walletStatisticInfo.TodayBenevolenceAdded = benevolenceTransferInfo.Amount; walletStatisticInfo.UpdatedOn = DateTime.Now; } finallyValue += benevolenceTransferInfo.Amount; } ApplyEvent(new NewBenevolenceTransferAcceptedEvent(_userId, benevolenceTransfer.Id, finallyValue, walletStatisticInfo)); }
public BenevolenceTransferCreatedEvent(Guid walletId, string number, BenevolenceTransferInfo info, BenevolenceTransferType type, BenevolenceTransferStatus status) : base(walletId, number) { Info = info; Type = type; Status = status; }