示例#1
0
 /// <summary>
 /// 红包
 /// </summary>
 /// <param name="RedBagDetail"></param>
 public void AddRedBagDetail(C_Fund_RedBagDetail RedBagDetail)
 {
     DB.GetDal <C_Fund_RedBagDetail>().Add(RedBagDetail);
 }
示例#2
0
        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());
        }