示例#1
0
        /// <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);
        }