示例#1
0
        public bool UpdateData(string userCode, decimal money, string OrderCode, out decimal?recordsaccountPrincipalTemp)
        {
            IRecordsOfConsumptionService _recordsOfConsumption = new RecordsOfConsumptionService();
            decimal           total       = 0;
            decimal?          kouchumoney = 0m;
            IList <UseWallet> list        = GetUseWallet(userCode);

            list = list.OrderBy(t => t.Sort).ToList();
            decimal?recordsdonationAmount   = 0m;
            decimal?recordsaccountPrincipal = 0m;

            foreach (var w in list)
            {
                if (w.AccountPrincipal > 0)
                {
                    //var ratio = decimal.Parse(w.Ratio);
                    var ratio     = Convert.ToDecimal(w.Ratio);
                    var tempTotal = decimal.Parse((w.AccountPrincipal + w.DonationAmount).ToString());
                    total = total + tempTotal;
                    var     tempmoney        = money - total;
                    decimal?donationAmount   = 0;
                    decimal?accountPrincipal = 0;
                    if (tempmoney >= 0)
                    {
                        donationAmount          = 0;
                        accountPrincipal        = 0;
                        kouchumoney             = kouchumoney + w.AccountPrincipal + w.DonationAmount;
                        recordsdonationAmount   = recordsdonationAmount + w.DonationAmount;
                        recordsaccountPrincipal = recordsaccountPrincipal + w.AccountPrincipal;
                    }
                    else
                    {
                        donationAmount          = w.DonationAmount - ((money - kouchumoney) - ((money - kouchumoney) * (1 - ratio)));
                        accountPrincipal        = w.AccountPrincipal - (money - kouchumoney) * (1 - ratio);
                        recordsdonationAmount   = recordsdonationAmount + ((money - kouchumoney) - ((money - kouchumoney) * (1 - ratio)));
                        recordsaccountPrincipal = recordsaccountPrincipal + (money - kouchumoney) * (1 - ratio);
                    }
                    DynamicParameters paras = new DynamicParameters();
                    paras.Add("@WalletCode", w.WalletCode, System.Data.DbType.String);
                    paras.Add("@DonationAmount", donationAmount, System.Data.DbType.Decimal);
                    paras.Add("@AccountPrincipal", accountPrincipal, System.Data.DbType.Decimal);
                    string sql = "update [dbo].[UseWallet] set AccountPrincipal=@AccountPrincipal,DonationAmount=@DonationAmount where WalletCode=@WalletCode";
                    int    i   = DapperSqlHelper.ExcuteNonQuery <UseWallet>(sql, paras, false);
                }
                if (total >= money)
                {
                    _recordsOfConsumption.InsertRecore("0", userCode, money, "", recordsdonationAmount, recordsaccountPrincipal, OrderCode, false);
                    recordsaccountPrincipalTemp = recordsaccountPrincipal;
                    return(true);
                }
            }
            recordsaccountPrincipalTemp = recordsaccountPrincipal;
            return(true);
        }
示例#2
0
        public bool Recharge(string typeCode, string userCode, decimal?money = 0, string storeCode = "")
        {
            IRechargeTypeService         s  = new RechargeTypeService();
            IRecordsOfConsumptionService cs = new RecordsOfConsumptionService();
            IUseWalletService            us = new UseWalletService();
            IFinancialStatementsService  _financialStatementsService = new FinancialStatementService();
            var     type           = s.GetRechargeTypeByCode(typeCode);
            var     explain        = "";
            decimal?donationAmount = 0;
            decimal?ratio          = 0;

            if (money > 0 && type == null)
            {
                typeCode = "0";
                ratio    = 0;
                explain  = "充值类型:任意金额,本金:" + money;
            }
            else
            {
                donationAmount = type.DonationAmount;
                money          = type.Money;
                ratio          = donationAmount / (money + donationAmount);
                explain        = "充值类型" + type.RechargeTypeName + ",本金:" + money + ",赠送:+" + donationAmount;
            }
            UseWallet wallet = new UseWallet()
            {
                WalletCode        = Guid.NewGuid().ToString(),
                UserCode          = userCode,
                AccountPrincipal  = money,
                DonationAmount    = donationAmount,
                Ratio             = decimal.Round(decimal.Parse(ratio.ToString()), 4).ToString(),
                Status            = true,
                Sort              = 1,
                IsMissionGiveaway = false
            };

            using (var scope2 = new TransactionScope())//创建事务
            {
                var fs = _financialStatementsService.getDataRechargeRecord(userCode, typeCode, wallet, storeCode, ratio, "微信");
                LogHelper.WriteLog("报表表数据更新完成");
                _financialStatementsService.Insert(fs);
                //钱包
                us.InsertUseWallet(wallet);
                //消费记录
                cs.InsertRecore(typeCode, userCode, decimal.Parse(money.ToString()), explain, null, null, null);
                scope2.Complete();
            }
            //充值
            //InsertRechargeRecord(record);
            return(true);
        }