/// <summary> /// 接受新的现金记录 更新统计信息 /// </summary> /// <param name="reply"></param> public void AcceptNewCashTransfer(CashTransfer cashTransfer) { var finallyValue = _cash; //业务逻辑判断 CashTransferInfo cashTransferInfo = cashTransfer.GetInfo(); //统计信息 var walletStatisticInfo = _walletStatisticInfo; if (cashTransferInfo.Direction == WalletDirection.Out) { if (_isFreeze) { throw new Exception("钱包冻结,无法出账"); } //如果是出账 判断账号余额是否够 if (_cash < cashTransferInfo.Amount) { throw new Exception("账户余额不足"); } finallyValue -= cashTransferInfo.Amount; } else { //进账 判断收益 if (cashTransfer.GetTransferType() == CashTransferType.Incentive) { //善心激励 if (_walletStatisticInfo.UpdatedOn.Date.Equals(DateTime.Now.Date)) { //非第一个 walletStatisticInfo.YesterdayEarnings += cashTransferInfo.Amount; } else { //今日第一个 walletStatisticInfo.YesterdayEarnings = cashTransferInfo.Amount; } walletStatisticInfo.Earnings += cashTransferInfo.Amount; walletStatisticInfo.UpdatedOn = DateTime.Now; } finallyValue += cashTransferInfo.Amount; } finallyValue = Math.Round(finallyValue, 2); //新的记录接受后,发出新记录接受的事件 ApplyEvent(new NewCashTransferAcceptedEvent(_userId, cashTransfer.Id, finallyValue, walletStatisticInfo)); }
public CashTransferCreatedEvent(Guid walletId, string number, CashTransferInfo info, CashTransferType type, CashTransferStatus status) : base(walletId, number) { Info = info; Type = type; Status = status; }