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); }
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); }