public void Payin_To_Balance(AccountType accountType, string category, string userId, string orderId, decimal payMoney, string summary, RedBagCategory redBag = RedBagCategory.FillMoney, string operatorId = "") { //if (accountType == AccountType.Freeze) // throw new Exception("退款账户不能为冻结账户"); if (payMoney <= 0M) { return; } //throw new Exception("转入金额不能小于0."); var balanceManager = new LocalLoginBusiness(); var fundManager = new FundManager(); //查询帐户余额 var userBalance = balanceManager.QueryUserBalanceInfo(userId); if (userBalance == null) { throw new Exception("用户帐户不存在 - " + userId); } var payDetailList = new List <PayDetail>(); payDetailList.Add(new PayDetail { AccountType = accountType, PayMoney = payMoney, PayType = PayType.Payin, }); var before = 0M; var after = 0M; switch (accountType) { case AccountType.Bonus: before = userBalance.BonusBalance; after = userBalance.BonusBalance + payMoney; //userBalance.BonusBalance = after; break; case AccountType.Commission: before = userBalance.CommissionBalance; after = userBalance.CommissionBalance + payMoney; //userBalance.CommissionBalance = after; break; case AccountType.FillMoney: before = userBalance.FillMoneyBalance; after = userBalance.FillMoneyBalance + payMoney; //userBalance.FillMoneyBalance = after; break; case AccountType.Experts: before = userBalance.ExpertsBalance; after = userBalance.ExpertsBalance + payMoney; //userBalance.ExpertsBalance = after; break; case AccountType.RedBag: before = userBalance.RedBagBalance; after = userBalance.RedBagBalance + payMoney; //userBalance.RedBagBalance = after; var RedBagDetail = new C_Fund_RedBagDetail { CreateTime = DateTime.Now, OrderId = orderId, RedBagCategory = (int)redBag, RedBagMoney = payMoney, UserId = userId, }; fundManager.AddRedBagDetail(RedBagDetail); break; case AccountType.Freeze: before = userBalance.FreezeBalance; after = userBalance.FreezeBalance + payMoney; //userBalance.FreezeBalance = after; break; case AccountType.CPS: before = userBalance.CPSBalance; after = userBalance.CPSBalance + payMoney; //userBalance.CPSBalance = after; break; default: throw new ArgumentException("不支持的账户类型 - " + accountType); } var FundDetail = new C_Fund_Detail { Category = category, CreateTime = DateTime.Now, KeyLine = orderId, OrderId = orderId, AccountType = (int)accountType, PayMoney = payMoney, PayType = (int)PayType.Payin, Summary = summary, UserId = userId, BeforeBalance = before, AfterBalance = after, OperatorId = string.IsNullOrEmpty(operatorId) ? userId : operatorId, }; fundManager.AddFundDetail(FundDetail); //balanceManager.UpdateUserBalance(userBalance); PayToUserBalance(userId, payDetailList.ToArray()); }
/// <summary> /// 收入 --添加用户成长值 /// 返回用户vip等级 /// </summary> public int Payin_UserGrowth(string category, string orderId, string userId, int userGrowth, string summary) { if (userGrowth <= 0) { return(0); } var balanceManager = new LocalLoginBusiness(); //var fundManager = new FundManager(); var user = balanceManager.GetRegisterById(userId); var userBalance = balanceManager.QueryUserBalanceInfo(userId); var Fund_UserGrowthDetail = new C_Fund_UserGrowthDetail() { OrderId = orderId, UserId = userId, Category = category, CreateTime = DateTime.Now, BeforeBalance = userBalance.UserGrowth, PayMoney = userGrowth, PayType = (int)PayType.Payin, Summary = summary, AfterBalance = userBalance.UserGrowth + userGrowth, }; DB.GetDal <C_Fund_UserGrowthDetail>().Add(Fund_UserGrowthDetail); var payDetailList = new List <PayDetail>(); payDetailList.Add(new PayDetail { AccountType = AccountType.UserGrowth, PayMoney = userGrowth, PayType = PayType.Payin, }); var vipLevel = GetUserVipLevel(userBalance.UserGrowth + userGrowth); //更新成长值 //userBalance.UserGrowth += userGrowth; //balanceManager.UpdateUserBalance(userBalance); PayToUserBalance(userId, payDetailList.ToArray()); if (user.VipLevel < vipLevel) { for (int i = user.VipLevel + 1; i <= vipLevel; i++) { //达到相应等级赠送红包 if (new int[] { 3, 4, 5, 6 }.Contains(i)) { var redBag = 0M; switch (i) { case 3: redBag = 2M; break; case 4: redBag = 10M; break; case 5: redBag = 20M; break; case 6: redBag = 88M; break; default: break; } if (redBag > 0M) { Payin_To_Balance(AccountType.RedBag, FundCategory_UserLevelUp, userId, orderId, redBag, string.Format("用户等级提升到{0}级", i), RedBagCategory.UserUpLevel); } } } //修改vip等级 user.VipLevel = vipLevel; DB.GetDal <C_User_Register>().Update(user); } return(user.VipLevel); }