/// <summary> /// </summary> /// <param name="account"></param> /// <param name="changeAmount"></param> /// <param name="actionType"></param> /// <param name="intro"></param> /// <param name="targetUserId"></param> /// <param name="orderSerial"></param> /// <param name="remark"></param> public Bill CreateBill(Account account, decimal changeAmount, BillActionType actionType, string intro = null, long targetUserId = 0, string orderSerial = null, string remark = null) { var moneyConfigList = Resolve <IAutoConfigService>().GetList <MoneyTypeConfig>(); var moneyConfig = moneyConfigList.FirstOrDefault(r => r.Id == account.MoneyTypeId && r.Status == Status.Normal); if (moneyConfig == null) { throw new ArgumentNullException("account moneyconfig is null or status is not normal"); } var flow = AccountFlow.Spending; if (changeAmount >= 0) { flow = AccountFlow.Income; } if (intro.IsNullOrEmpty()) { var baseUser = Resolve <IUserService>().GetSingle(account.UserId); if (baseUser == null) { throw new ArgumentNullException("user is not exist"); } intro = $@"用户{baseUser.GetUserName()}完成{actionType.GetDisplayName()}操作,{moneyConfig.Name}{ flow.GetDisplayName() }金额{changeAmount}"; } var bill = new Bill { UserId = account.UserId, Amount = changeAmount, AfterAmount = account.Amount, Type = actionType, MoneyTypeId = account.MoneyTypeId, Flow = flow, Intro = intro //Remark = remark }; return(bill); }